Security research4 min read
Vibe-coded app security: what the research actually shows
Researchers have now scanned thousands of AI-built apps and audited the agents that write them. The failures cluster in one place, and it is not the one most scanners look at.
Key takeaways
- Independent studies of AI-built apps keep finding the same root cause: data that any visitor, or any other user, can read.
- AI coding agents mostly avoid classic injection bugs. They skip the controls nobody asked for, such as authorization, CSRF, and rate limits.
- Published counts are lower bounds. Passive or opt-in methods miss bugs that only appear with a logged-in session.
- Test what the running app actually exposes, as an anonymous visitor and as a second user, before launch.
Why this question has numbers now
A year ago, the case that AI-built apps leak data rested on anecdotes. That has changed. Independent researchers have scanned thousands of public apps built on prompt-to-app platforms, audited apps written by the leading coding agents, and started tracking CVEs that trace back to AI-generated code.
The studies use different methods and none of them is perfect. Read together, though, they agree on where the risk sits. This post summarises four of them, links to each original, and turns the overlap into a short test plan.
1,645 apps: missing row-level security
In March 2025, Matt Palmer and Kody Low scanned the homepages of 1,645 apps listed on Lovable's showcase. They found 303 endpoints across 170 projects, about 10.3% of the sample, where database tables were readable without the right row-level security (RLS) rules. The issue was assigned CVE-2025-48757.
The detail that matters is why it slipped through. A policy existing is not the same as a policy being correct, and a check that only asked whether RLS was switched on would pass a table that still let anyone read every row. We cover this in Row-level security mistakes in AI-built apps.
5,600 apps: secrets and personal data in the open
Escape analysed more than 5,600 publicly available vibe-coded apps and reported over 2,000 high-impact vulnerabilities, more than 400 exposed secrets, and 175 instances of exposed personal data. Their methodology post is explicit that the scan was passive, so the real figures are likely higher.
Most findings again trace to permissions: backends that trust whoever calls them. Secrets in client bundles are the other recurring pattern. See Exposed secrets and PII in vibe-coded apps.
15 apps from 5 agents: the controls nobody asked for
In December 2025, Tenzai had five coding agents (Cursor, Claude Code, Codex, Replit, and Devin) each build the same three apps. As SecurityWeek reported, the 15 apps contained 69 vulnerabilities. None had exploitable SQL injection or XSS. All five agents introduced server-side request forgery in the same link-preview feature, and improper API authorization was the most common issue.
Classic injection has well-known safe patterns that models reproduce reliably. Authorization depends on business rules the prompt rarely spells out, so the model has nothing to apply. More in What AI coding agents get wrong about security.
CVEs that trace back to AI-written code
Georgia Tech's SSLab runs the Vibe Security Radar, which tracks published CVEs with clear evidence that AI-generated code introduced the bug. It counted 35 in March 2026, up from 6 in January and 15 in February. The researchers describe this as a lower bound, because many AI traces are stripped before code is published. See AI-generated code is showing up in CVEs.
The common pattern
Put the four studies side by side and the shape is consistent:
- The bugs are about who can see what: missing ownership checks, permissive database policies, and routes that answer without a session.
- Injection and other syntax-level bugs are comparatively rare in modern generated code.
- Every published count understates the problem, because the bugs that matter most only show up with real sessions and real data.
That is a problem for tools that read source code alone. Whether /api/invoices/42 should answer for User B is a business rule, not a code pattern. We explain the gap in Why static analysis misses access-control bugs.
A short test plan before you launch
- Use the app as a normal user and record every API call the interface makes.
- Replay each call with no session. Anything that still returns account data is unguarded.
- Replay each call as a second account. Anything that returns the first user's data is an IDOR.
- Read the responses for tokens, keys, emails, and stack traces.
- Probe for routes the interface no longer calls but the server still serves, such as
/debugor/.env.
This is what Routelint automates. It does not audit your database policies, CSRF tokens, or headers directly. It shows what the running app actually returns to someone who should not see it.
Questions
- Are vibe-coded apps less secure than hand-written ones?
- The studies do not compare against a hand-written baseline. They show that AI-built apps repeat a specific class of mistake, access control, at a rate high enough to test for before every launch.
- What is the most common vulnerability in AI-built apps?
- Broken access control: endpoints or database tables that return data to anonymous visitors or to the wrong signed-in user.
Routelint records the API calls your running app makes, then replays them with no session and as a second account. One scan needs no account.
Sources
- Statement on CVE-2025-48757 — Matt Palmer
- How we discovered vulnerabilities in apps built with vibe coding — Escape
- The state of security of vibe-coded apps — Escape
- Vibe coding tested: AI agents nail SQLi but fail miserably on security controls — SecurityWeek
- Researchers sound the alarm on vulnerabilities in AI-generated code — Infosecurity Magazine
- Vibe Security Radar: how we verify — Georgia Tech SSLab
Published November 1, 2026 by the Routelint team.
