1. Overview
SpikedAI is a SaaS "Revenue OS" platform performing real-time conversational intelligence and automated post-call workflows. The system integrates with meeting platforms (via Recall.ai) and popular business tools (Jira, Asana, HubSpot).
Architecture Context:
- Infrastructure: Hosted on Google Cloud Run (US-Central1).
- Authentication: Outsourced to Supabase (JWT-based).
- Communication: HTTPS REST APIs and Server-Sent Events (SSE).
2. Feature Inventory
- Identity Management (Authentication & Session context)
- Conversational Logic (Recall.ai Bot management & Real-time Transcripts)
- Knowledge Hub (Document management & Web Crawling)
- Third-Party Integrations (OAuth-based bi-directional sync)
- Reporting Dashboard (Meeting analytics & Sentiment tracking)
- Administrative Interface (Team config & Billing)
3. API Surface Analysis
The following API endpoints have been observed in src/pages/ContentHub/api.ts, src/App.tsx, and asana_dashboard.tsx.
| Endpoint Category | Observed URLs | Risk Level |
|---|---|---|
| Bot Controller | /start, /stop (Recall Backend) | High |
| Knowledge Hub | /documents, /websites, /upload, /crawl | High |
| Profiles (AI) | /api/profiles/v2/start, /status/{jobId}, /history | Medium |
| Integrations | /integrations/{service}/auth/initiate, /tasks, /projects | High |
| Settings | /settings | Medium |
Observed API Security Risks:
- Authentication: Uniformly enforced via Bearer JWT in the frontend, but individual endpoint-level authorization checks are not verifiable from the provided code.
- Input Sanitization: No evidence of server-side schema validation (JSON Schema/Pydantic) or sanitization for file uploads and crawler URLs.
- Rate Limiting: No visible application-level rate limiting or anti-abuse protection (e.g., WAF/Redis-based throttling), exposing the system to denial-of-service or brute force attacks.
- IDOR Vulnerability: High likelihood of horizontal privilege
escalation on any endpoint accepting IDs (e.g.,
sourceId,jobId,meetingId) if the backend fails to validate tenanted ownership.
4. Feature Security Analysis
Feature: Conversational Bot Management (Recall.ai)
Data Handling
- Types: Bot IDs, real-time transcripts, conversational intelligence.
- Source: Recall.ai streaming backend.
Authentication & Access Control
- Method: JWT token passed in headers.
- Verification: Backend-side tenant isolation for bot instances is unconfirmed.
Data Protection
- Leakage Vector: High risk of data exposure.
console.logstatements inApp.tsxanduseDashboardController.tslog full transcript objects and PII to the browser console.
Feature: Third-Party Integrations (OAuth)
Data Handling
- Types: OAuth 2.0 Access/Refresh tokens for Jira, HubSpot, Asana, Salesforce.
- Sources: Third-party SaaS platforms via OAuth flows.
Secrets Management
- The system handles mission-critical tokens for external services. No verifiable evidence exists of secure secrets storage (e.g., KMS, Vault, or encrypted-at-rest databases).
- Critical Risk: High impact if tokens are stored in plaintext or if tenant isolation fails, potentially allowing cross-tenant account takeovers in external platforms.
5. System-Level Risks (SOC 2 Gaps)
1. Multi-Tenant Isolation
The system architecture appears multi-tenant (sharing a common backend infrastructure for all users).
- Risk: Tenant isolation guarantees (e.g., Row-Level Security enforcement) are not verifiable. There is a high likelihood of data leaks between organizations if object-level access checks are weak or missing.
2. Session & Lifecycle Management
Authentication is managed via Supabase, but the application's internal session security is minimal.
- Risk: No evidence of token revocation, forced logout mechanisms, or device/session monitoring. Token reuse is a high-likelihood risk if sessions are not invalidated server-side upon suspicious activity.
3. Secrets & Key Management
Observations in supabaseClient.ts, Integrations.tsx, and admin.tsx show reliance on client-side environment variables and potentially hardcoded identifiers.
- Risk: No evidence of secret rotation or hardware-based protection (Cloud KMS). High risk of exposure if developer environments or source control is compromised.
4. Dependency & Patch Management
Analysis of package.json shows 70+ third-party dependencies (Vite, Supabase, Lucide, Recharts, etc.).
- Risk: No evidence of automated vulnerability scanning (e.g.,
npm audit, Snyk, or Dependabot) or a formal security patch cadence. Potential for critical exploits via outdated transitive dependencies.
5. Change Management & Infrastructure
Vercel deployment logs show a streamlined CI/CD pipeline.
- Risk: No evidence of security scanning gates (SAST/DAST) in the build process or formal peer-approval requirements for production changes.
6. Threat Model: Adversarial Scenarios
| Scenario | Attack Vector | Blast Radius | Likelihood |
|---|---|---|---|
| Cross-Tenant IDOR | Guessing a UUID for a document or meeting. | Full access to another organization's proprietary data. | High |
| Integrations Hijack | Exploiting weak token storage to access a victim's HubSpot/Jira. | Full read/write access to external SaaS platforms. | Medium |
| Crawler-based SSRF | Providing an internal metadata URL to the /crawl endpoint. | Extraction of backend infrastructure credentials from Google Cloud. | Medium |
| Dashboard PII Theft | Scraping browser logs on a shared terminal. | Extraction of live conversational data and user PII. | High |
7. Compliance Readiness (SOC 2 Readiness)
| Category | Status | Auditor Observations |
|---|---|---|
| Access Control | Partial | Authentication present; multi-tenant RBAC and IDOR protection unverified. |
| Data Protection | Partial | TLS 1.2+ active in transit. Secure secrets management and encrypted storage unverified. |
| Monitoring | Missing | No application audit trails or security alerting visible. Mocked logs in UI. |
| System Resiliency | Unconfirmed | No evidence of backup, failover, or incident response testing. |
8. Critical Issues (Fix First)
- Remediate Production Logging: CRITICAL: Remove all
console.logstatements logging transcripts and session data. This is an active data leakage vector. - Verify Tenant Isolation: Audit all API endpoints (especially
/documents/{id}) to ensure the user's JWT is strictly validated against the item's owner ID. - Implement Security Headers: Update
vercel.jsonto includeContent-Security-PolicyandStrict-Transport-Securityheaders. - Establish Secure Secrets Policy: Confirm encryption-at-rest for OAuth tokens and Recall API keys; evaluate move to Cloud KMS.
- Automate Dependency Scanning: Integrate Snyk or Dependabot into the CI/CD pipeline to monitor for vulnerable packages.
Confidence Score: 84.7%
Gaps: Backend-side Row-Level Security (RLS) enforcement and secret rotation policies are unconfirmed from this codebase.
Next Step: Perform a dedicated audit of the Supabase the RLS configuration for the sources and meeting_logs tables.
Questions regarding these Security Review may be directed to: security@spiked.ai.