Performance Benchmarks

We ran Erzo, a legacy SAST provider, and a manual reviewer against a synthetic vulnerable app generated entirely by Cursor. Here are the results.

Methodology: The "Vibe-Coded" Test Repo

We constructed a Next.js + Supabase application using only AI prompts. We specifically prompted the AI to build features fast without explicitly asking for security constraints.

  • 14 planted vulnerabilities
  • 4 exposed credentials
  • 5 framework-specific misconfigurations
  • Total Lines of Code: ~2,500

Detection Scorecard

Vulnerability ClassErzoLegacy SASTManual Code Review (3h)
Hardcoded Environment VariablesFound (4/4)Found (4/4)Found (3/4)
Missing PostgreSQL RLS PoliciesFound (3/3)Missed (0/3)Found (1/3)
Client-Side Auth State TrustFound (1/1)Missed (0/1)Missed (0/1)
Prompt Injection SusceptibilityFound (2/2)Missed (0/2)Found (1/2)
Total Findings Detected100% (14/14)28% (4/14)35% (5/14)

Why Legacy SAST Fails Here

Traditional tools rely heavily on regular expressions and abstract syntax trees. They are great at finding known CVEs in Python, but lack semantic understanding of Next.js server actions or cross-file Supabase security configurations. They missed 100% of the logic flaws generated by the AI.

Why Erzo Succeeds

Erzo uses a combination of formal static analysis and an agentic LLM verification layer. When the scanner identifies a pattern common to AI codebases (like a Supabase database call), it specifically traces the auth context backward, catching missing RLS policies natively.