Part 2 of a security benchmark study examining vulnerabilities in AI-generated code across three apps (VaultBank, ClaimFlow, MedPortal) built with different stacks and AI coding tools. The study compared LLM-based scanners (ProjectDiscovery's Neo, Claude Code) against traditional SAST/DAST tools (Snyk, Invicti) across 74 confirmed vulnerabilities. Neo detected 89% of all exploitable issues including 100% of Critical/High findings with 93% precision, while Claude found 55% with 63% precision, Invicti found only Info-severity issues, and Snyk found zero valid vulnerabilities. Detailed walkthroughs show how Neo caught business logic flaws like arbitrary refund amounts, deactivated sessions retaining access, ORM-leaked password hashes, and cross-branch authorization bypass — all missed by other tools. The post also explains why Claude produced 24 false positives (mass assignment mitigated by Pydantic schemas, timing attacks impractical over HTTP, CSRF irrelevant with JWT auth). The benchmark apps and findings are open-sourced for community validation.

26m read timeFrom projectdiscovery.io
Post cover image
Table of contents
The three apps we builtGeneration process and promptsHow we classified and validated findingsWhat we foundA closer look: What Neo found that nobody else didWalkthrough 1: Dispute resolution allows arbitrary refund amounts (VaultBank, Critical)Walkthrough 2: Deactivated user retains full application access (ClaimFlow, Critical)Walkthrough 3: Systemic password hash exposure via Drizzle ORM relations (ClaimFlow, High)Walkthrough 4: Manager can freeze accounts across branches (VaultBank, High)False positive 1: Mass assignment on user profile update (VaultBank)False positive 2: Timing-unsafe password comparison (ClaimFlow)False positive 3: No CSRF protection (VaultBank)What Neo missedHow Snyk and Invicti performedWhat the detailed analysis revealedOpen-sourcing the benchmarkConclusion
29 Impressions