<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Stefan Lederer</title>
    <description>The latest articles on DEV Community by Stefan Lederer (@stefan_lederer_8b1bbcef01).</description>
    <link>https://dev.to/stefan_lederer_8b1bbcef01</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3897177%2Ff0a3e780-29b5-498b-a281-e5a45aa13d24.png</url>
      <title>DEV Community: Stefan Lederer</title>
      <link>https://dev.to/stefan_lederer_8b1bbcef01</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/stefan_lederer_8b1bbcef01"/>
    <language>en</language>
    <item>
      <title>We scanned 1,764 vibe-coded apps. 453 had critical vulnerabilities. Here's what we found beyond Supabase RLS.</title>
      <dc:creator>Stefan Lederer</dc:creator>
      <pubDate>Sat, 25 Apr 2026 08:17:16 +0000</pubDate>
      <link>https://dev.to/stefan_lederer_8b1bbcef01/we-scanned-1764-vibe-coded-apps-453-had-critical-vulnerabilities-heres-what-we-found-beyond-464e</link>
      <guid>https://dev.to/stefan_lederer_8b1bbcef01/we-scanned-1764-vibe-coded-apps-453-had-critical-vulnerabilities-heres-what-we-found-beyond-464e</guid>
      <description>&lt;p&gt;We just finished scanning 1,003 vibe-coded apps across Lovable, Bolt, Replit, Vercel, Streamlit, Heroku, and others. The Supabase RLS story is well-documented by now — 7% of Lovable apps and 6% of Bolt apps have tables wide open. But RLS accounted for 183 of our 190 CRITs. The other 7 came from finding classes that are arguably worse.                                                               &lt;/p&gt;

&lt;h2&gt;
  
  
  1. IDOR — health records accessible by incrementing an ID
&lt;/h2&gt;

&lt;p&gt;Two Replit apps had IDOR vulnerabilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;GET /api/bookings/{id}&lt;/code&gt; returns any user's booking details by iterating the ID. No auth check.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;GET /api/privacy-health/{id}&lt;/code&gt; returns health-related records.
                                                              Change &lt;code&gt;/bookings/1&lt;/code&gt; to &lt;code&gt;/bookings/2&lt;/code&gt;. No tools needed, just a browser.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Why vibe-coded apps are vulnerable:&lt;/strong&gt; AI code generators create CRUD endpoints with sequential IDs and no authorization middleware &lt;br&gt;
  by default.                                                                                                                          &lt;/p&gt;

&lt;h2&gt;
  
  
  2. OpenAI keys in public JS bundles
&lt;/h2&gt;

&lt;p&gt;Two Bolt.host apps shipped live &lt;code&gt;sk-proj-*&lt;/code&gt; keys in &lt;code&gt;/assets/index-*.js&lt;/code&gt;. Anyone can burn their API credits.&lt;/p&gt;

&lt;p&gt;Our scanner flagged &lt;strong&gt;38 apps across all platforms&lt;/strong&gt; with hardcoded API keys — 17 on Bolt.host (1 in 15), 18 on Vercel (1 in 4).&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Entire APIs with zero authentication
&lt;/h2&gt;

&lt;p&gt;Two apps exposed full OpenAPI specs with &lt;code&gt;components.securitySchemes&lt;/code&gt; entirely empty. Every endpoint callable without any token.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Private key material in production JS
&lt;/h2&gt;

&lt;p&gt;One Heroku app ships PEM-format private key material inside its static JS bundle. Webpack bundled a &lt;code&gt;.env&lt;/code&gt; value into the client code.                                                                                                                                &lt;/p&gt;

&lt;h2&gt;
  
  
  5. The hardcoded API key epidemic on Bolt.host
&lt;/h2&gt;

&lt;p&gt;Across 251 Bolt.host apps&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;17 apps (6.8%)&lt;/strong&gt; had hardcoded API keys in JS
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;18 of 67 Vercel AI apps (26.9%)&lt;/strong&gt; — highest rate
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lovable: zero.&lt;/strong&gt; Their code gen routes calls server-side by default.
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The pattern
&lt;/h2&gt;

&lt;p&gt;AI coding tools optimize for "does it work?" not "is it safe?" The developer's prompt doesn't include "add auth middleware" because that's not a functional requirement.                                                                                                 &lt;/p&gt;

&lt;h2&gt;
  
  
  Scan your own app
&lt;/h2&gt;

&lt;p&gt;Enter your URL at &lt;a href="https://securityscanner.dev" rel="noopener noreferrer"&gt;securityscanner.dev&lt;/a&gt; — quick scan takes 10 seconds, no signup. Full 70-module scan:&lt;br&gt;
  one free, no card.                                                                                                                   &lt;/p&gt;

&lt;p&gt;Full report with per-platform data: &lt;a href="https://securityscanner.dev/reports/2026-q2" rel="noopener noreferrer"&gt;securityscanner.dev/reports/2026-q2&lt;/a&gt;               &lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
