Your AI built the app.
I check if it's safe to launch.
Built with Lovable, Bolt, Cursor, v0 or Replit? Scanners and AI pentests are great at breadth. I go deep on the parts that need human judgment: who can reach whose data, what happens when someone tampers with your checkout, and whether your RLS policies actually hold. By hand, by one OSCP-certified tester.
Bigger app or multiple roles? Get a fixed-price quote for a full audit →
This isn't hypothetical.
In 2025 researchers scanned 1,645 apps from Lovable's public showcase. 170 of them exposed data that anyone could read with just the public key, because their row-level security wasn't set up properly (CVE-2025-48757). Lovable has added security tooling since. But RLS policies that exist and still leak across users are exactly what I test for.
Read the original research →When a Launch Check is worth it.
- You're about to take real payments.
- Your first business customer sent you a security questionnaire.
- An investor asked how you handle security.
- Your app stores other people's personal data.
- You're an agency handing an AI-built app to a client.
Hobby project with no users and no data? Run the free checklist instead and keep your money.
AI writes working code. Not secure code.
AI coding tools are trained on the entire internet's worth of public code, which, on average, is not security-hardened. They optimize for "what makes the user say yes" and "what looks like it works." Those are not security objectives.
Worse: when you describe a feature in natural language ("let users edit their profile"), the AI infers an implementation. It rarely infers the right authorization model, the right input validation, or the right secret-handling strategy, because you didn't say so explicitly.
The result is a predictable pattern. The same classes of vulnerability appear in almost every vibe-coded app I review. Below: the actual list.
AI coding tools are extraordinary. They compress months of work into days. The point isn't to stop using them, it's to recognize that shipped functionality ≠ shipped security, and to close the gap before someone else finds it.
The vibe-coded vulnerability pattern.
These are the issues found again and again in AI-generated apps. Most of them are logic flaws, invisible to automated scanners, but obvious to a human attacker probing endpoint by endpoint.
Missing authorization on endpoints
The AI generates a "/api/users/:id" endpoint. Authentication is required. Authorization, checking whether you're allowed to view that specific user, is forgotten. Any logged-in user can read everyone's data.
IDOR (Insecure Direct Object Reference)
Resources are exposed by sequential or guessable IDs. Change ?order=1042 to ?order=1041 and you see someone else's purchase. The classic vibe-coded breach.
Hardcoded secrets & exposed API keys
Stripe keys in client-side bundles. OpenAI tokens in .env.local files committed to git. Database URLs in client-rendered Next.js pages. Public Supabase service-role keys.
SQL/NoSQL injection & unsafe queries
Especially when the AI generates dynamic queries based on user input that wasn't supposed to reach the DB. Common in filter, sort, and search features.
Overly permissive CORS
Access-Control-Allow-Origin: * with credentials enabled. Lets any website read your authenticated user's data via the browser.
Exposed admin routes
Admin dashboards reachable at predictable URLs (/admin, /dashboard) protected only by client-side React route guards, easily bypassed by hitting the API directly.
Unsafe file uploads
Avatar uploads that accept any MIME type and execute server-side. Path traversal via filename. Direct uploads to public S3 buckets with read access for anyone.
Prompt injection & AI-feature abuse
If your app calls an LLM with user input, that's an attack surface. Users can hijack the system prompt, extract data from your context, or call tools you didn't intend to expose.
Business logic & payment flaws
Race conditions in checkout. Price set client-side and trusted by server. Discount codes reusable in parallel. Inventory going negative. Subscriptions cancellable without ownership check.
Database row-level security gaps
Especially in Supabase/Firebase apps: tables created without RLS policies, or with policies that look correct but allow cross-tenant reads via clever filter chains.
SAST tools don't speak vibe-coded.
The standard advice is "run Snyk / Semgrep / Dependabot." Useful for known CVE patterns and library vulnerabilities. But the vibe-coded vulnerability pattern is almost entirely about logic, authorization, and architecture. Those are:
- Not pattern-matchable, they depend on the data model and intended access rules
- Not in any signature database, they're business logic, not library bugs
- Specific to your app, a scanner doesn't know who should see what
- Often spread across multiple files, an attacker chains three small flaws into one breach
The only way to find them is for a human to think like an attacker while exercising your actual application. That's exactly what I do.
Independent vulnerability researchA Zip Slip in xslweb's unzip function that I found and reported (fixed by the maintainer), and a write-up on why SameSite=Lax doesn't stop CSRF for the first 2 minutes.
Scanner, AI pentest or a human? Use the right one.
| Free scanner | AI penteste.g. built into your platform | Launch Check | |
|---|---|---|---|
| What it is | Automated tool, e.g. OWASP ZAP | AI agents probing your app | One OSCP-certified pentester, by hand |
| Cost | Free | Low per-test fee | €1,099 excl. VAT, fixed |
| Strong at | Known CVEs, headers, misconfigurations | Breadth: common vulnerability classes, fast | Depth: authorization logic, chained flaws, payment & business logic, RLS policies that exist but still leak |
| You get | Raw output | Auto-generated findings | Signed, verifiable report + one retest |
| Best moment | Every deploy | Every big release | Before launch, first B2B customer, investor due diligence |
My honest advice: use all three. Run a scanner on every deploy, an AI pentest when you ship big changes, and bring in a human when real money, real data or a real customer is on the line.
Need more depth? The full vibe-coded app audit.
Fixed price · retest included
Manual penetration test built for AI-generated apps. Pricing depends on scope (number of features, integrations, AI surface area), quote within one business day after intake.
Fixed price based on scope, from €2,500 excl. VAT · retest included.
Get a fixed-price quote →Deciding between this review and the Launch Check? The Launch Check is a shorter fixed-scope pentest, bookable online, for small AI-built apps just before launch. This security review is broader: it includes an intake and a review of your Supabase/Firebase rules and bucket policies.
The Vibe Coding Security Checklist.
Before you ship, or before you book an audit, run through this. If you can confidently check every box, you've already closed the most common vibe-coded vulnerability patterns.
Self-audit checklist (top 12)
Tick boxes are for browser-side use only, nothing is sent anywhere. Use it as a pre-launch gate.
This checklist also has its own page, to bookmark or share.
Common questions from founders.
I have ~3 paying users. Is it too early for an audit?
We use Supabase / Firebase. Doesn't that handle security?
Can we just run a vulnerability scanner instead?
What does an audit cost?
Do you sign NDAs?
We're based outside the Netherlands. Does that matter?
You shipped in days. Now make sure it's safe.
Book online and hear within ~2 working days whether your app fits. If it does, the test is scheduled within a week, with the report and one retest included. Not accepted? Full refund.
Book a Launch Check · €1,099 excl. VAT → Get a quote for a full audit