FlawPilot
SecurityThe setting that doesn't announce itself

Lovable App Security: A Real App, 29 Issues Found

An unset Supabase RLS policy leaves the query succeeding - just for anyone, not only its owner.

The FlawPilot TeamSecurity research17 Jul 20269 min read

Quick answer: Lovable app security's most common failure isn't a missing header - it's an unset Supabase Row-Level Security policy. Skip it and the app still works, because the query still succeeds, just for anyone, not only its owner. We scanned a real Lovable app and found exactly that gap, live.

Picture the app you shipped last sprint. You described a dashboard, Lovable wired up the tables, the auth, the UI, and it all just worked the first time you clicked through it. That's the whole appeal. It's also exactly why nobody goes back and checks the one setting that doesn't announce itself when it's missing. So we did. We took a real, live Lovable app, built the way most Lovable apps get built (fast, from a prompt, shipped the same week), and ran it through FlawPilot, our free scan that checks a site's security, performance, infrastructure, and SEO in about two minutes, no login required.

The Lovable app security scorecard

63 out of 100. “At risk.” 252 points out of a possible 400, and 29 things sitting open: 1 critical, 5 high, 15 medium, 8 low.

  • Security: 55/100. At risk. 13 findings.
  • Performance: 96/100. Excellent. 2 findings.
  • Infrastructure: 58/100. At risk. 9 findings.
  • SEO & Discoverability: 62/100. Needs attention. 5 findings.

Nothing was defaced. The app looked, and behaved, exactly like it was supposed to. That's the part worth sitting with: every screen worked, every click did the right thing, and the one critical finding on this report had never once shown up as a bug.

Let's start with what it got right

96 out of 100 on performance is close to a clean sweep. Lovable's scaffolding leans on Vite and React defaults that are already fast out of the box, and it shows: quick first paint, sensible bundle size, nothing render-blocking that shouldn't be. Whatever else is true about this app, nobody was going to complain that it felt slow.

Which is exactly the trap. A fast, polished frontend is the thing you notice with your own eyes, so it's the thing that gets credited as “done.” Everything below is the kind of gap that only shows up once something outside the team, a scanner, a bot, or a person who isn't supposed to, goes looking for it on purpose.

The Lovable security issues we found

Anyone could send an email pretending to be this company. High, and the reason is small: there's no DMARC record on the domain, so mail servers have no way to verify whether an email claiming to be from the company actually is. A spoofed phishing email using their own domain would sail straight through.

No Content-Security-Policy header. Also High. A CSP is the fence that stops an injected script from running loose in a visitor's browser. This app didn't have one.

No Strict-Transport-Security header. A visitor's first request could get quietly downgraded to plain HTTP before HTTPS ever takes over, readable and alterable in that window. High.

No clickjacking protection. The app could be loaded invisibly inside someone else's page and used to trick visitors into clicking things they never meant to click.

Underneath those sat a run of Mediums that all point the same direction: DNS and email configuration nobody had circled back to, the infrastructure side of the report that's easy to forget exists once the app itself is live. No CAA record, so any certificate authority could issue a cert for the domain. No DKIM signature, putting outgoing mail at real risk of landing in spam. A missing sitemap.xml and thin meta descriptions dragged the SEO score to 62. And a verbose error page, still left on, was handing back stack traces to anyone who managed to trigger one.

None of this showed up while clicking through the app. All of it shows up the moment something outside the team bothers to check.

Why Lovable security gaps are the default, not a fluke

That combination, an unset RLS policy sitting next to missing headers and no DMARC, is close to the single most repeated pattern we see across Lovable apps specifically. It's not that Lovable is careless. It's that Lovable is optimizing for “the prompt works,” and a Supabase table without an RLS policy still returns exactly the data you asked for in testing. The query succeeds either way. Nothing about that failure looks like a failure until someone sends a request the app wasn't expecting.

This isn't a hypothetical risk unique to the app we scanned. In March 2025, this exact gap, a missing Row-Level Security policy in Lovable-generated apps, was catalogued as CVE-2025-48757, CVSS 9.3, and it left more than 170 live production apps with databases that any unauthenticated visitor could read, write to, or delete from, just by inspecting the app's own network requests.

The research on AI-generated code backs up why this keeps happening. Veracode's 2025 GenAI Code Security Report tested over 100 large language models across 80 coding tasks and found that AI-generated code introduced exploitable security flaws in 45% of tests, with no improvement as the models got better at writing functional code. A 2023 Stanford study (Perry et al., ACM CCS) found the same pattern at the human level: developers using an AI coding assistant wrote measurably less secure code than developers working without one, and felt more confident about it, not less.

The role that used to catch an unset RLS policy, a senior engineer flagging it in review, mostly doesn't exist in a Lovable workflow, because there's often no review step between describing the app and the app going live.

How to fix Lovable security issues

A severity label is only useful if it turns into something you actually do. Every finding gets grouped by area and dropped into a “What to do next” list, ranked by what actually matters, not a raw dump of jargon. Item one on this report was the RLS finding, and right next to it, in plain English: enable Row-Level Security on this table and add a policy scoping rows to the authenticated user. Nothing to look up. Nothing to decode.

That's the whole idea. Most security tools stop at “here's what's broken” and leave you to figure out the rest. FlawPilot's free report hands you the fix for the top issue in every area, spelled out, at no cost. Past that (and for a full crawl of the site instead of a handful of representative pages), Logicwind's team builds the prioritized remediation roadmap and puts engineers on it directly, including the Supabase policy work itself if that's where the help is needed.

Check your Lovable app's security score, free

You don't need a security background to read a report like this one, or to know whether your own Supabase tables have RLS turned on. You need to run the scan. No setup, no coding, no passwords required. Drop in a URL, and in about two minutes you get the same kind of scorecard back: security, performance, infrastructure, and SEO, each out of 100, every finding in plain English, with a toggle between the founder view and the full technical one.

Your app already works. The only question left is whether it's been checked, or just assumed.

FAQ: A few questions people ask us

Not fully, and the honest gap is specific: Lovable handles HTTPS and gets you a working auth flow fast, but Row-Level Security on your Supabase tables is opt-in, and HTTP security headers, DMARC, and DNS hardening aren't configured automatically either.

How FlawPilot helps

FlawPilot is useful because it connects detection to remediation. A scan can tell you a Row-Level Security policy is missing. The next step, actually closing it, is what determines whether the risk goes away.

Every finding lands in a ranked “What to do next” list, written in plain English instead of a severity label. The fix for the top issue in every pillar, security, performance, infrastructure, SEO, is included in the free report, spelled out clearly enough to act on without a security background. For a full crawl of the site, and for findings that go deeper than a config change, Logicwind's engineering team builds a prioritized remediation roadmap and puts people on it directly: RLS policies, header configuration, DNS records, all of it.

The boundaries matter as much as the capability. FlawPilot only checks publicly accessible signals to run the scan, it never touches your server, your codebase, or your credentials, and it doesn't auto-apply any fix without a human in the loop. Finding the gap and fixing the gap happen through the same team, but that means engineers doing the work, not a bot merging code on your behalf.

LovableAI-generated codeSupabaseRow-Level Securitysecurity headers

Verify your AI-generated app is production-ready.

80+ security checks in 60 seconds - free, no account needed.

No account needed · Public signals only · Results in minutes