Vibe-Coding Security Radar: IDORs, Open Panels, a CVE
A pentester's findings on AI-built apps, a new React Server Components CVE, and Vercel's secret-handling update — what founders running vibe-coded apps need to know today.
A security researcher spent time pentesting apps built by non-developers using AI tools, for free, and posted what they found. Separately, a real CVE landed on the stack many vibe-coded apps run on. Neither is hype. Both point at the same gap: shipping fast with an AI builder skips the checks a human developer would have run by habit.
TL;DR
- A pentester testing AI-built apps found broken access control everywhere: change
/user/123to/user/124and read someone else's data, no login required. (source)- Admin panels with no authentication and API keys hardcoded into frontend code showed up repeatedly in that same review.
- CVE-2026-23869, a high-severity (CVSS 7.5) denial-of-service bug in React Server Components, can be triggered by a crafted HTTP request to any App Router Server Function endpoint. Vercel has WAF rules live, but says patching is still required. (source)
- Vercel now splits environment variables into Config (readable after saving) and Secret (write-only) instead of one "Sensitive" toggle — a small but useful nudge toward handling keys correctly. (source)
What a pentester found in AI-built apps
The pattern described in the Reddit writeup is not exotic. It is the same three bugs, over and over.
First: IDOR, insecure direct object reference. Change a number in a URL, see another user's record. No exploit tooling needed, just curiosity and a browser address bar.
Second: admin panels with no authentication at all. The AI builder scaffolded an admin route because someone asked for one. Nobody added a login check before it went live.
Third: API keys committed straight into frontend code. This is different from a public anon key or a Firebase web config, which are meant to be visible in the browser. A hardcoded secret key — one meant to stay server-side — sitting in frontend JavaScript is a real leak, because anyone can open dev tools and read it.
None of these are AI model failures. They are missing steps: no row-level checks, no route guards, no separation between public and private keys. An AI builder will write working code. It will not always write code that checks who is allowed to see what.
A real CVE lands on the stack most vibe-coded apps run
Most apps built with Lovable, Bolt, v0, and similar tools deploy on Next.js, and a lot of them land on Vercel. CVE-2026-23869 affects React Server Components: a crafted HTTP request to any App Router Server Function endpoint can trigger excessive CPU usage and denial of service. Vercel pushed WAF rules automatically to projects hosted on its platform, but says explicitly that this is not enough on its own — patched versions are required. (source)
If you don't know what Next.js version your app is running, that's worth checking today. Founders who vibe-coded an app rarely track dependency versions the way a team with a dedicated backend engineer would.
Vercel tightens how secrets are labeled
Vercel replaced the old "Sensitive" toggle on environment variables with two explicit types: Config, for values that stay readable after saving, and Secret, for values nobody can view or retrieve once set. (source)
This matters because the line between "public by design" and "actually secret" is exactly where the pentester above found leaks. A publishable key with a public framework prefix belongs in Config. A database password or a private API key belongs in Secret. If your project still has real secrets sitting in a variable anyone with dashboard access can read back, that's worth fixing regardless of what platform update prompted the thought.
FAQ
Is my vibe-coded app secure by default?
No. AI builders generate working features, not security reviews. The pentesting writeup above found broken access control and unauthenticated admin panels as the norm, not the exception, across apps built by non-developers with AI tools.
What is CVE-2026-23869 and does it affect my app?
It's a high-severity denial-of-service bug in React Server Components, triggered by a crafted request to an App Router Server Function endpoint. If your app uses Next.js App Router and you haven't checked your version recently, it's worth checking now. Vercel's WAF adds a layer of protection automatically, but it does not replace patching. (source)
Should I trust AI agents to rewrite my code for security?
An AI agent can fix a bug it's pointed at. It won't reliably find every IDOR, every open admin route, or every hardcoded key on its own, because it wasn't asked to look for them. Treat an agent's output the same way you'd treat a first draft: useful, but it needs a review pass focused specifically on access control and secret handling before you trust it in production.
The bottom line
The risk in AI-built apps isn't the AI. It's the steps nobody thought to ask for: an auth check on an admin route, a row-level rule on a database table, a secret kept out of frontend code, a dependency version kept current. None of that requires being a security expert. It requires someone checking for it.
Find your gaps before an attacker does.
Is My Site Hackable? scans your deployed app for the exact issues in this article — exposed keys, missing RLS, open buckets — and tells you what's real and what's a false alarm.
Run a free scan →