First-quarter 2026 assessment of 200 apps
183 of 200 vibe-coded apps, 91.5 percent, contained at least one vulnerability traceable to AI hallucination or missing security context.
Finding
The bucket listing did not come back to a request holding only the browser key.
Good to know · About ten minutes
File storage is created the moment an app needs an upload, and the bucket is public because that is the setting that makes the first upload appear on the page. Nothing later goes back to close it, and every file added after that inherits the decision.
The bucket listing did not come back to a request holding only the browser key.
the bucket listing answered the published browser key with 4 buckets, 2 of them public
Every finding on a result carries a line like this one: the request that was made and the answer that came back. You can run the same request yourself and get the same answer, which is the point.
Nothing to change here.
Prompt for your coding agent
Keep the storage bucket listing closed to anonymous requests.
A result gives you this prompt written for your builder, in its own dialect, and a batch prompt that carries every fix at once.
183 of 200 vibe-coded apps, 91.5 percent, contained at least one vulnerability traceable to AI hallucination or missing security context.
An app exposed 4.75 million records, including 1.5 million API tokens and 35,000 email addresses.
An unprotected storage instance exposed tens of thousands of user images, including identity documents.
Three days after the first breach, over a million private messages were exposed through an API endpoint with no access control.
Broken access control reported across 170 production applications built with Lovable.
Run the free Launch Risk Check on your app
ShipReady is not a penetration test or a security certification. No automated check can prove an application is secure.
Last updated September 20, 2026