supabase-server.ts (findings 37-39) accepts raw tokens as user IDs with no validation.Secrets Exposure (Critical)
R2 storage credentials (findings 22-31) are hardcoded in client-side code (frontend/src/lib/storage.ts), exposing AWS access keys, secret keys, endpoint URLs, and bucket names to every user. The Supabase service role key (findings 32-35) is exposed in frontend code (frontend/src/lib/supabase-server.ts). API keys are stored in plaintext in the database (findings 40, 1067-1068, 1093). The download token signing secret (findings 63-80, 1074-1076) has a hardcoded fallback of 'dev-secret'.Denial of Wallet (Critical)
LLM API calls (findings 4, 5, 7, 10, 15-17) have no max_tokens or cost controls, allowing an attacker to exhaust the API budget. Chat endpoints (findings 7-8, 10-11) lack per-user rate limiting. Tabular review API (finding 12) lacks rate limiting. Document conversion (finding 52) has no file size limits.Authentication Weaknesses (Critical/High)
The frontend auth helper (findings 19-21, 311-323) uses the Supabase anon/public key instead of the service role key for JWT token validation on the server side. This is fundamentally broken - the anon key cannot validate tokens. The backend auth middleware (findings 1094, 1097) uses the service role key for token verification instead of the JWT secret. Account deletion (findings 13-14, 173-177) uses admin.deleteUser without ownership verification or re-authentication.Injection & XSS (High)
Command injection via LibreOffice conversion (findings 50, 53). XXE via XML parsing (findings 58, 61). Unsafe innerHTML via ReactMarkdown (findings 195-196, 206, 236-237, 240-241, 249-253, 257-258, 261-263, 270-273). DOM injection via LLM-generated content (findings 210-211). SQL injection via string concatenation (finding 124).SSRF (High)
User-controlled API base URLs in fetch requests (findings 56, 83, 148, 157, 178, 238, 242, 264, 276, 281, 285, 290). User-controlled document download URLs (finding 49). SSRF via download token path (finding 143). SSRF via LLM tool execution (finding 168).Broken Object-Level Authorization (High)
Multiple endpoints (findings 47-48, 126, 131-132, 134, 137) lack proper authorization checks, allowing users to access, modify, or delete resources belonging to other users.IDOR (High)
Chat retrieval (finding 130) allows unauthorized access via project membership. Chat streaming (finding 136) allows unauthorized message posting. Project chat (finding 146) allows unauthorized chat reuse.Error Information Disclosure (High)
Database error messages (findings 125, 127-129, 133, 135, 147, 151, 172, 181) are exposed to clients. Internal error details (finding 135) are leaked.Logging Sensitive Data (High)
LLM API keys and responses (findings 85-88, 91-93) are logged to console and files. Auth tokens (findings 200-203, 214-215, 232-235, 244-247, 283, 287-289, 297) are logged or sent in fetch requests.Missing Input Validation (High)
File uploads (findings 104, 220, 228, 254) lack content validation. Chat messages (finding 123) lack input validation. Query parameters (finding 163) are unvalidated.Missing Audit Logging (High)
Document operations (findings 140-141), project sharing (finding 149), tabular review sharing (finding 160), workflow sharing (finding 179), account deletion (finding 174), and data exports (finding 269) lack audit trails.Client-Side Security Bypasses (High)
Model selection (findings 94, 97, 190, 207, 217, 255, 291, 294) is controlled client-side, bypassing API key enforcement. Credit system (finding 18) can be bypassed via client-side logic.Consensus from 180 reviewer(s): Cipher, Deadbolt, Mirage, Passkey, Gatekeeper, Tripwire, Recon, Entropy, Lockdown, Provenance, Egress, Supply, Vault, Harbor, Blacklist, Weights, Wallet, Siege, Razor, Compliance, Sanitizer, Gateway, Specter, Trace, Tenant, Sentinel, Syringe, Phantom, Infiltrator, Fuse, Chaos, Pedant, Warden, Prompt, Exploit, Vector, Entropy, Deadbolt, Cipher, Gateway, Egress, Harbor, Exploit, Weights, Vault, Specter, Passkey, Provenance, Siege, Warden, Supply, Lockdown, Sanitizer, Syringe, Mirage, Razor, Blacklist, Trace, Tenant, Infiltrator, Gatekeeper, Tripwire, Pedant, Compliance, Prompt, Recon, Vector, Sentinel, Wallet, Fuse, Chaos, Phantom, Syringe, Passkey, Deadbolt, Vault, Provenance, Egress, Harbor, Weights, Gateway, Lockdown, Sanitizer, Supply, Gatekeeper, Entropy, Specter, Phantom, Cipher, Prompt, Mirage, Trace, Blacklist, Warden, Vector, Pedant, Recon, Siege, Fuse, Chaos, Wallet, Sentinel, Razor, Infiltrator, Compliance, Tripwire, Exploit, Tenant, Syringe, Harbor, Lockdown, Deadbolt, Weights, Gatekeeper, Egress, Mirage, Passkey, Fuse, Recon, Vault, Gateway, Exploit, Cipher, Specter, Entropy, Prompt, Tripwire, Pedant, Wallet, Phantom, Sentinel, Infiltrator, Sanitizer, Chaos, Provenance, Razor, Siege, Trace, Blacklist, Compliance, Supply, Warden, Tenant, Vector, Gatekeeper, Gateway, Deadbolt, Egress, Specter, Cipher, Blacklist, Harbor, Exploit, Lockdown, Weights, Passkey, Tenant, Mirage, Entropy, Syringe, Sanitizer, Vault, Chaos, Razor, Tripwire, Provenance, Fuse, Pedant, Sentinel, Trace, Phantom, Supply, Warden, Compliance, Siege, Recon, Vector, Infiltrator, Wallet, Prompt Total findings: 1066 Severity breakdown: 40 critical, 304 high, 327 medium, 328 low, 67 info
API Cost: $2.1458 | Platform Fee: $1.0742 | $3.22 total charged
Generated by ShipItClean.com — Autonomous Adversarial Code Validation