Die versteckte Sicherheitslücke beim Vibe Coding: Was 155 Launches verraten
Die Geschwindigkeitsfalle der KI-gestützten Entwicklung
Mal ehrlich – wer hat das nicht schon gemacht? Einen Nachmittag lang in Lovable, Bolt oder Cursor prompten, und am Abend hat man eine funktionierende URL. Das fühlt sich an wie Magie. Hosting? Erledigt. SSL? Automatisch. Das kleine Side-Project ist plötzlich real.
Aber da ist eine unangenehme Wahrheit, die mich immer wieder beschäftigt: Schnell ausliefern bedeutet nicht sicher ausliefern. Als jemand, der die Vibe-Coding-Revolution beobachtet hat, denke ich, dass wir reden müssen über das, was dieser Nachmittag-zu-URL-Pipeline tatsächlich zurücklässt.
Eine aktuelle Untersuchung hat 155 öffentlich veröffentlichte Vibe-Coded-Apps gescannt. 99 davon waren noch live und erreichbar. Die Ergebnisse? Gleichermaßen ermutigend wie besorgniserregend – und sie sollten unsere Vorbereitung vor dem Launch verändern.
Die gute Nachricht: Secrets bleiben verborgen
Was mich angenehm überrascht hat: Nur ein Prozent der gescannten Apps haben tatsächlich Secret Keys im Browser preisgegeben.
Keine offenen OpenAI-API-Keys, die das Budget anderer verpulvern. Keine AWS-Credentials im clientseitigen JavaScript. Keine Stripe-Live-Keys, die ein Bankkonto leeren könnten.
Das sagt mir etwas Wichtiges: Die modernen KI-Coding-Plattformen haben ihre Defaults wirklich verbessert. Wenn du ein neues Projekt in Bolt oder Replit erstellst, wirst du zu Edge Functions für Secrets geleitet, anstatt sie im Browser-Bundle zu dumpen. Das ist wirklich gutes UX-Design für Sicherheit.
Aber ein Prozent ist immer noch eines zu viel. Ein offengelegter Key kann eine 50.000-Dollar-OpenAI-Rechnung bedeuten, ein kompromittiertes AWS-Konto oder einen Stripe-Disput, der dein Startup versenkt, bevor es richtig startet. Sei nicht dieses eine Prozent.
Das Supabase-Problem, über das niemand spricht
Hier wird es wirklich knifflig.
37 Prozent der live geschalteten Vibe-Coded-Apps enthalten einen Supabase Anonymous Key im Frontend-Code. Und bevor du in Panik verfällst – das ist tatsächlich so erwartet. Supabase ist genau dafür设计的. Der Anon-Key ist für die Öffentlichkeit gedacht; die Datensicherheit soll durch Row Level Security (RLS) Policies kommen.
Hier liegt das Problem: RLS ist opt-in. Tabellen starten komplett offen. Und wenn du um 23 Uhr Vibe-Coding betreibst, um den Launch-Deadline zu schaffen, ist es verdammt leicht, dieses Häkchen zu übersehen.
Jede Tabelle mit deaktiviertem RLS – oder schlimmer noch, eine faule using (true) Policy – ist eine weit offene Tür für jeden mit diesem öffentlichen Anon-Key. Ein Angreifer muss nichts hacken. Er kann einfach deine Datenbank abfragen, weil du eine Einstellung vergessen hast.
Ich kann das nicht genug betonen: Passives Scannen kann RLS-Fehlkonfigurationen nicht erkennen. Der Scanner sieht nur das Frontend. Die Schwachstelle lebt in deiner Datenbank. Du musst das manuell prüfen, Tabelle für Tabelle, bevor du live gehst.
Dasselbe gilt für Firebase (das in vier Prozent der gescannten Apps auftauchte). Security Rules sind keine optionalen Add-Ons. Sie sind das gesamte Sicherheitsmodell.
Security Headers: Die unsichtbare To-Do-Liste
Wenn du noch nie über HTTP-Security-Headers nachgedacht hast, bist du damit nicht allein. 91 Prozent der gescannten Apps haben keine Content-Security-Policy, und 88 Prozent lassen sich in iframes auf beliebigen Websites einbetten (hallo, Clickjacking).
Das sind keine exotischen Schwachstellen. Das sind Standard-Hardening-Schritte, die seit Jahren Best Practice sind. Die Vibe-Coding-Pipeline nimmt sie nur standardmäßig nicht mit.
Hier die Aufschlüsselung aus dem Scan:
- 91 % ohne Content-Security-Policy
- 88 % ohne X-Frame-Options / frame-ancestors
- 37 % ohne X-Content-Type-Options
- 38 % ohne Referrer-Policy
- 8 % ohne Strict-Transport-Security
- Nur 5 % hatten alle Security Headers konfiguriert
Ein Lichtblick? Hosting-Plattformen übernehmen HSTS automatisch, das ist also größtenteils abgedeckt. Aber die CSP-Lücke ist erheblich. Wenn eine KI-generierte Komponente user-generated Content rendert oder Drittanbieter-Scripts einbindet, ist eine CSP deine letzte Verteidigungslinie. Ohne sie haben XSS-Angriffe freie Bahn.
Der Launch-Politur-Gap
Ein Ergebnis, mit dem ich nicht gerechnet hatte, mich aber total beschäftigt: 30 Prozent der Vibe-Coded-Apps launchen ohne Open-Graph-Tags.
Das bedeutet: Wenn jemand dein Produkt auf X (Twitter), Discord oder LinkedIn teilt, wird es als nackte URL angezeigt – kein Vorschaubild, kein Titel, keine Beschreibung. Nur Text. Im Jahr 2024 wirkt das amateurhaft und tötet die Click-Through-Rate.
Weitere Launch-Tag-Versäumnisse aus dem Scan:
- 11 % ohne Meta-Description
- 77 % ohne sitemap.xml
- Durchschnittliche Security-Noten bei B-Minus (84/100), nur 13 % bekamen ein A
Die Apps waren keine Katastrophen – sie brauchten einfach nur Politur. Dieselbe Geschwindigkeit, die dich zum Launch bringt, ist auch die Geschwindigkeit, mit der du <meta property="og:title"> vergisst.
Meine 5-Minuten Pre-Launch-Checkliste
Nachdem ich die Untersuchung durchgelesen habe, habe ich meine persönliche Launch-Checkliste aktualisiert. Hier ist, was wirklich zählt, bevor du diesen Show-HN-Thread postest:
1. Jag deine Secrets im Bundle
Durchsuche deinen Build-Output nach sk-, sk_live_, service_role, ghp_. Alles, was matcht, wird sofort rotiert und in eine Edge Function oder Environment Variable verschoben. Ein offengelegter Key ist alles, was es braucht.
2. Prüfe jede Supabase- oder Firebase-Tabelle
Öffne dein Dashboard. Jede öffentliche Tabelle braucht RLS aktiviert. Jede Policy muss spezifisch sein – niemals using (true). Lesezugriff auf eine falsch konfigurierte Tabelle kann deine gesamte User-Datenbank offenlegen.
3. Füge diese Security Headers hinzu
Content-Security-Policy: frame-ancestors 'none'
X-Frame-Options: DENY
X-Content-Type-Options: nosniff
Referrer-Policy: strict-origin-when-cross-origin
Starte mit Content-Security-Policy-Report-Only, wenn du testen willst, ohne zu enforcecen. Aber deploye es.
4. Deaktiviere Production Source Maps
Deine *.map-Dateien sind Debugging-Gold – für dich und für Angreifer. Die meisten Plattformen haben einen Schalter. Umlegen, bevor du live gehst.
5. Ergänze deine Open-Graph-Metadaten
Mindestens: og:title, og:description, og:image. Dein Launch-Post verdient es, gut in einer Timeline auszusehen.
6. Generiere eine sitemap.xml Dein zukünftiges SEO-Ich wird dir dankbar sein. Die meisten Plattformen generieren die automatisch – prüfe, ob deine das getan hat.
Das große Bild
Hier meine Einschätzung: Vibe Coding ist nicht das Problem. Das Problem ist die Lücke zwischen „funktioniert auf meiner Maschine" und „ist produktionsreif". Traditionelle Entwickler haben diese Lücke durch Jahre schmerzhafter Deployments gelernt. Vibe-Coder lernen sie schneller – und das ist eigentlich gut.
Die Plattformen werden besser. Die Defaults werden sicherer. Aber bis Security-Hardening so automatisch ist wie SSL-Zertifikate, liegt die Verantwortung bei uns als Entwicklern, diese fünf Minuten Checkliste vor dem Launch einzuschieben.
Die Geschwindigkeit von Vibe Coding ist eine Superkraft. Sicherheit muss nicht der Preis sein, den du dafür zahlst.
Was ist deine Pre-Launch-Security-Routine? Schreib deine Checklisten-Ergänzungen in die Kommentare – ich bin immer auf der Suche nach Verbesserungen.