Security·10 min read·

10 Common Security Vulnerabilities in AI-Generated Code (and How to Fix Them)

The most common security issues we find when auditing AI-generated apps — and what to do about each one.

AI coding tools are remarkably good at making code that works. They're much less consistent about making code that's safe — and the failure modes are often invisible until someone goes looking for them. Here are the ten issues we see most often when auditing AI-generated apps, grouped by theme.

None of these are unique to AI-generated code — they're classic web security issues. What's different is how often they show up by default, simply because the AI prioritized a working demo over a secure one.

Access Control Issues

The most common, and most serious, category. AI-generated apps frequently assume that if a user is logged in, they should be able to access whatever the UI lets them click through to. That assumption rarely holds once an app has more than one user.

  • Missing or overly permissive Row-Level Security (RLS) policies on database tables
  • API routes that don't verify the requesting user owns the resource they're requesting
  • Admin or internal routes reachable by any authenticated user, not just admins

Data Exposure Issues

Sensitive information ending up somewhere it shouldn't — in the browser, in version control, or in error messages — is the second most common pattern.

  • API keys or secrets committed directly into the repository or exposed in client-side code
  • Sensitive fields, like internal IDs, emails, or pricing data, included in API responses that don't need them
  • Verbose error messages that reveal stack traces, file paths, or database structure to end users

Authentication Issues

Authentication often "works" in the sense that login and signup function correctly — but the policies around it are frequently left at permissive defaults.

  • Weak password requirements or no password strength feedback
  • No rate limiting on login or password reset endpoints, leaving them open to brute-force attempts

Input & Dependency Issues

The last category covers how the app handles data coming in — from users, and from the packages it depends on.

  • User input passed directly into queries or rendered without sanitization
  • Outdated dependencies with known vulnerabilities that were never updated after initial generation

Frequently Asked Questions

Does this mean AI-generated code is inherently insecure?

Not inherently — but it's optimized for getting something working, not for anticipating misuse. The underlying frameworks, like React, Supabase, and Next.js, are secure when configured correctly; the configuration is usually what's missing.

How do you find these issues?

A combination of automated scanning for known patterns and a manual review of access control logic, database policies, and authentication flows — the kind of review that's hard to fully automate.

Can these be fixed without a rewrite?

Yes, almost always. These are configuration and logic fixes within the existing codebase, not architectural rewrites.

Worried your app has some of these?

Our AI App Rescue package includes a security review covering all ten of these issues, with fixes included.

View AI App Rescue Package