Menu

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.

Cover: 2,000+ high-impact vulnerabilities across 5,600 vibe-coded apps

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

  1. Use the app as a normal user and record every API call the interface makes.
  2. Replay each call with no session. Anything that still returns account data is unguarded.
  3. Replay each call as a second account. Anything that returns the first user's data is an IDOR.
  4. Read the responses for tokens, keys, emails, and stack traces.
  5. Probe for routes the interface no longer calls but the server still serves, such as /debug or /.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

  1. Statement on CVE-2025-48757 — Matt Palmer
  2. How we discovered vulnerabilities in apps built with vibe coding — Escape
  3. The state of security of vibe-coded apps — Escape
  4. Vibe coding tested: AI agents nail SQLi but fail miserably on security controls — SecurityWeek
  5. Researchers sound the alarm on vulnerabilities in AI-generated code — Infosecurity Magazine
  6. Vibe Security Radar: how we verify — Georgia Tech SSLab

Published November 1, 2026 by the Routelint team.

Security research3 min read

Row-level security mistakes in AI-built apps

When the browser talks to the database directly, row-level security is the only thing standing between a visitor and every row. A policy that exists is not the same as one that works.

Security research2 min read

What AI coding agents get wrong about security

When five leading coding agents built the same apps, none wrote SQL injection. All of them skipped the security controls the prompt never mentioned.

Security research2 min read

Why static analysis misses access-control bugs

A static scanner can tell you a query is unsafe. It cannot tell you that User B should not be able to read invoice 42. That rule lives in your business, not your syntax.