← BACK TO UPDATES

WARUM JEDES LOVABLE-PROJEKT SECURITY-TESTING BRAUCHT

Mit KI zu bauen ist unglaublich schnell, aber sind deine Lovable-Projekte sicher? Alles, was du wissen musst, um deine KI-generierten Apps abzusichern.

0
Gescannte Apps
0
Gefundene Schwachstellen
0
Entwickler vertrauen VibeEval

TESTE DEIN LOVABLE-PROJEKT JETZT

Gib die URL deiner produktiven Lovable-App ein, um auf Schwachstellen zu prüfen.

Schnelle Zahl: Über 76 % der Web-Anwendungen haben mindestens eine ernste Schwachstelle. Wenn du mit KI schnell baust, wird Security-Testing noch kritischer.

Das versteckte Risiko in der KI-Entwicklung

Versteh mich nicht falsch — Lovable ist beeindruckend. Du kannst in Stunden ganze Anwendungen bauen, die früher Wochen gedauert hätten. Aber eine Sache, über die niemand spricht: Wenn du mit dieser Geschwindigkeit unterwegs bist, fällt Security oft zurück.

Klassische Security-Tools wurden nicht für KI-generierten Code gebaut. Sie übersehen Muster und Schwachstellen, die entstehen, wenn eine KI einen Großteil deiner Anwendung schreibt. Darum haben wir den Lovable Security Scanner gebaut.

Was macht Lovable-Projekte anders?

KI-Coding-Assistenten wie Lovable haben die Art, Web-Apps zu bauen, revolutioniert. Aber sie bringen auch einzigartige Security-Überlegungen mit, die klassische Scanner nicht erfassen:

  • Default-Schwachstellen: Die KI generiert manchmal Code-Muster, die perfekt funktionieren, aber subtile Security-Lücken enthalten
  • Integrations-Blindspots: Wenn die KI verschiedene Services und APIs verbindet, können Security-Gaps zwischen den Komponenten entstehen
  • Schnelle Iteration: Die Geschwindigkeit der KI-Entwicklung kann Security-Schulden schneller wachsen lassen, als manuelle Reviews sie fangen

Echte Probleme, die wir in Lovable-Projekten finden

Nach dem Scan vieler Lovable-Apps haben wir mehrere häufige Muster identifiziert, auf die Entwickler achten müssen:

AUTH-BYPASSES

Unvollständige Auth-Flows, die unbefugten Zugriff auf geschützte Routen erlauben.

API-KEY-EXPOSITION

Sensible Credentials versehentlich im Client-Code oder in öffentlichen Repositories offengelegt.

DATEN-LEAKS

Nutzerdaten oder interne Informationen, die unbeabsichtigt über API-Responses exponiert werden.

VALIDIERUNGSLÜCKEN

Fehlende Validierung erlaubt bösartigen Input, das Backend zu erreichen.

Die 6 Vibe-Coding-Flows, die am häufigsten brechen

„Vibe Coding" — eine funktionierende App durch Gespräch mit einer KI herausbringen und nie die Hälfte des generierten Codes lesen — hat eine vorhersagbare Form. In 1.430+ Lovable-Scans verursachen dieselben sechs Flows die Mehrzahl der Criticals. Würdest du nur diese härten, eliminierst du den Großteil der produktionskritischen Bugs in KI-generierten Apps.

01 / SIGNUP + SESSION

Anon-Key bei eingeloggten User-Calls verwendet. JWT im localStorage ohne Refresh abgelegt. Passwort-Reset, der E-Mails an vom Angreifer kontrollierte Adressen schickt, weil der Update-Endpoint dem Client vertraut.

02 / FILE UPLOAD

Supabase-Storage-Bucket auf public gesetzt. Keine MIME-Validierung. Kein Per-User-Pfad-Prefix. Ergebnis: Jeder Nutzer lädt in den Ordner jedes anderen, oder ausführbarer Content landet in einem „images"-Bucket.

03 / BEZAHL-FEATURE-GATE

Stripe-Plan-Check lebt nur in der React-Komponente. Der eigentliche `/api/generate`-Endpoint oder die Tabellen-Lesung hat kein `WHERE plan = 'pro'`. Jeder Free-User trifft jeden Bezahl-Endpoint direkt.

04 / ADMIN-DASHBOARD

Route abgesichert per `if (user.email === 'me@x.com') showAdmin()`. Die `admin_audit_logs`-Tabelle hat kein RLS. Jeder, der die Route errät oder den REST-Endpoint aufruft, wird Admin.

05 / EDGE FUNCTIONS

Service-Role-Key in einer browser-aufrufbaren Funktion hardcodiert. Oder die Funktion vertraut einem `user_id`-Parameter, statt ihn aus dem JWT zu ziehen. Volle Privilege-Escalation in einem Request.

06 / PROFIL-UPDATE

UPDATE-Policy nutzt `USING (auth.uid() = user_id)` aber fehlendes `WITH CHECK`. Nutzer können ihre eigene `role` auf `admin` setzen, `plan` auf `enterprise` oder `user_id` auf die eines anderen. Test: probiere `PATCH /profiles?id=eq.me { role: "admin" }`.

Jeder dieser Flows produziert in unseren Reports dasselbe Symptom: saubere UI, funktionierende App und ein Critical-Finding am Endpoint dahinter. Der Scanner geht alle sechs automatisch durch. Für mehr Kontext, warum diese Muster in KI-generiertem Code auftauchen, siehe Vibe Coding Security Checks und das RLS-Baseline-Beispiel der Beauty-Bloggerin.

RLS-Fehlkonfiguration: die Nr.-1-Schwachstelle

Nach dem Scan von 1.430+ Lovable-Anwendungen sticht eine Schwachstelle über allen heraus: fehlende oder falsch konfigurierte Row-Level-Security-(RLS)-Policies. Das Problem taucht weiter in neuen Lovable-Projekten auf.

Lovable nutzt Supabase als Datenbank. Supabase exponiert einen öffentlichen API-Endpoint, den jeder direkt aufrufen kann. Ohne RLS-Policies hält nichts einen Angreifer davon ab, jede Zeile deiner DB zu lesen, fremde Daten zu ändern oder Datensätze komplett zu löschen.

Warum das immer wieder passiert:
  • Supabase-Defaults: Neue Tabellen werden per Default mit deaktiviertem RLS angelegt. Lovables KI aktiviert es nicht immer.
  • Komplexitäts-Gap: Korrekte RLS-Policies erfordern das Verständnis von PostgreSQL-Policies, und KI-generierter Code macht das oft falsch.
  • Stiller Fehler: Während der Entwicklung funktioniert ohne RLS alles perfekt. Die Schwachstelle wird erst relevant, wenn echte Nutzer auf der Plattform sind.
  • Viele Tabellen: Jede neue Tabelle braucht eigene RLS-Policies. Mit wachsenden Projekten werden Tabellen vergessen.

Die vier RLS-Checks, die jede Tabelle braucht

RLS ist kein einzelner Schalter. Es ist eine Policy pro Operation pro Tabelle. Eine übersehen und die Angriffsfläche bleibt sperrangelweit offen. Unser Scanner führt alle vier auf jeder gefundenen öffentlichen Tabelle aus:

Operation Was der Scanner sendet Was passt Was fehlschlägt
SELECT anon GET /rest/v1/<table>?select=* 401 oder Zeilen mit Scope Vollständiger Tabellen-Dump
INSERT anon POST /rest/v1/<table> mit Probe-Zeile 401 oder Policy-Rejection Zeile geschrieben
UPDATE anon PATCH /rest/v1/<table>?id=eq.<row> 401 oder Null Zeilen betroffen Zeile geändert
DELETE anon DELETE /rest/v1/<table>?id=eq.<row> 401 oder Null Zeilen betroffen Zeile gelöscht

Der häufige Fehler: Entwickler testen SELECT, sehen es ist gesperrt und gehen live. Writes bleiben offen. Wir sehen das in ~30 % der Apps, die „RLS aktiviert" haben.

Kaputte Policies, die richtig aussehen

Das sind die RLS-Policies, die wir am häufigsten flaggen — sie kompilieren, die App funktioniert, und die Tabelle ist weiterhin exponiert:

-- SCHLECHT: ohne WITH CHECK kann der Nutzer Zeilen beliebiger user INSERTen
CREATE POLICY "insert own" ON posts
  FOR INSERT USING (auth.uid() = user_id);

-- SCHLECHT: UPDATE nur mit USING; Nutzer aktualisiert eigene Zeile
-- und ändert gleichzeitig user_id auf die einer anderen Person
CREATE POLICY "update own" ON posts
  FOR UPDATE USING (auth.uid() = user_id);

-- SCHLECHT: liest eigene + öffentlich markierte, ohne Column-Filter
-- — sensible Felder in „öffentlichen" Zeilen leaken
CREATE POLICY "read public or own" ON posts
  FOR SELECT USING (is_public OR auth.uid() = user_id);

-- SCHLECHT: der Klassiker „damit-es-läuft"-Fix
CREATE POLICY "allow all" ON posts FOR ALL USING (true);

Die korrigierten Versionen — die Muster, die unter Tests halten:

-- GUT: INSERT mit WITH CHECK bindet die neue Zeile an den Aufrufer
CREATE POLICY "insert own" ON posts
  FOR INSERT WITH CHECK (auth.uid() = user_id);

-- GUT: UPDATE verlangt, dass aktuelle Zeile dem Aufrufer gehört
-- UND dass die neue Version auch (verhindert Ownership-Transfer)
CREATE POLICY "update own" ON posts
  FOR UPDATE USING (auth.uid() = user_id)
              WITH CHECK (auth.uid() = user_id);

-- GUT: DELETE auf Owner beschränkt
CREATE POLICY "delete own" ON posts
  FOR DELETE USING (auth.uid() = user_id);

-- GUT: SELECT explizit, keine Ambiguität
CREATE POLICY "read own" ON posts
  FOR SELECT USING (auth.uid() = user_id);

Für Spalten mit PII (E-Mail, Telefon, stripe_customer_id) nutze lieber eine View mit beschränkten Spalten statt Column-Level-Grants — einfacher zu konfigurieren und zu auditieren.

Teste dein RLS in 30 Sekunden

Du brauchst unseren Scanner nicht für einen ersten Durchlauf. Öffne deine produktive Lovable-App, hol die Supabase-URL und den Anon-Key aus dem Network-Tab und fahr:

# Ersetze mit deinem Projekt + Anon-Key + Tabelle
SUPA="https://<project>.supabase.co"
KEY="<anon_key>"
TABLE="profiles"

# Read-Probe — sollte leer oder 401 ohne Login sein
curl "$SUPA/rest/v1/$TABLE?select=*&limit=5" \
  -H "apikey: $KEY" -H "Authorization: Bearer $KEY"

# Write-Probe — sollte 401 oder Policy-Rejection sein
curl -X POST "$SUPA/rest/v1/$TABLE" \
  -H "apikey: $KEY" -H "Authorization: Bearer $KEY" \
  -H "Content-Type: application/json" \
  -d '{"id":"rls-probe-delete-me"}'

Kommen Zeilen zurück oder der Write geht durch, hast du ein Critical. Führe den kostenlosen Supabase RLS Checker für den vollen Per-Tabellen-Report aus oder füge die URL oben in den Scanner ein für das volle Lovable-Audit (Auth, Storage, Edge Functions und Keys, nicht nur RLS).

Wenn RLS nicht reicht

RLS stoppt den Anon-Key. Es stoppt nicht:

  • Edge Functions mit Service-Role-Key — die ignorieren RLS komplett. Jeder Logikfehler in einer Funktion ist volles Lesen/Schreiben auf der DB.
  • Geleakte JWTs — leakt das JWT eines eingeloggten Nutzers (XSS, öffentlicher Gist, Screenshot), serviert RLS dem Angreifer fröhlich, was dieser Nutzer sähe.
  • Storage — Storage hat RLS-ähnliche Regeln pro Bucket und pro Objekt. Sie werden separat konfiguriert und in Lovable-Apps oft als „public bucket" belassen.
  • Views und DB-Funktionen — eine SECURITY DEFINER-Funktion läuft mit den Rechten des Erstellers, nicht des Aufrufers. Nimmt sie eine vom Nutzer gelieferte ID und vertraut ihr, ist RLS irrelevant.

Unser Scanner testet alle vier. Zum Verständnis des Policy-Modells siehe den Supabase-RLS-Guide und die Supabase-Security-Checkliste.

Wie der Lovable Security Scanner funktioniert

Unser Scanner versteht speziell die Architektur von Lovable. Das passiert, wenn du dein Projekt scannst:

  1. Automatische Discovery: Wir crawlen deine Anwendung, um Struktur, Routen und Funktionalität zu verstehen
  2. KI-gestützte Tests: 13 spezialisierte KI-Agents testen Angriffsszenarien speziell für Web-Anwendungen
  3. Schwachstellen-Erkennung: Wir identifizieren Security-Probleme, von Basis-Fehlkonfigurationen bis komplexen Auth-Bypasses
  4. Umsetzbare Reports: Klare Erklärungen der Probleme und spezifische Fix-Schritte

Jenseits des Scans: vollständige Security-Abdeckung

Der Lovable Security Scanner geht nicht nur ums Finden von Schwachstellen. Er ist eine komplette Security-Lösung:

  • Multi-Browser-Tests: stellt sicher, dass deine App in verschiedenen Browsern sicher funktioniert
  • Supabase-RLS-Verifikation: End-to-End-Test deiner Row-Level-Security-Policies
  • Tägliches Monitoring: kontinuierlicher Scan, um neue Probleme zu fangen, wenn deine App wächst
  • Data-Leak-Prävention: erkennt sensible Informationen, die exponiert sein könnten
  • API-Token-Schutz: verhindert versehentliches Offenlegen sensibler Credentials
  • Launch-Readiness-Checks: umfassende Security-Validierung vor dem Deploy
Pro-Tipp für Lovable-Devs: Führe vor jedem größeren Deploy einen Security-Scan durch. Die 5 Minuten, die es dauert, können dich vor einem reputations­schädigenden Vorfall bewahren, der Tausende zum Fixen kostet.

Was Entwickler finden

Unter den 5.711 Schwachstellen, die in 1.430+ gescannten Apps gefunden wurden, ist dies das Ranking der häufigsten Probleme:

  1. Fehlendes RLS auf SELECT — Kritisch. Präsent in 85 % der Scans.
  2. Fehlendes RLS auf INSERT/UPDATE/DELETE — Kritisch. Präsent in 51 % der Scans. Geht meist zusammen mit einer funktionierenden SELECT-Policy live, und rutscht deshalb durch.
  3. Offengelegte API-Keys — Kritisch. Präsent in 62 % der Scans. OpenAI, Anthropic, Stripe und Resend sind die vier am häufigsten geleakten.
  4. Auth-Bypasses — Hoch. Präsent in 45 % der Scans. Meist ein reiner Frontend-Route-Guard.
  5. Fehlende Eingabevalidierung — Hoch. Präsent in 38 % der Scans.
  6. Öffentlicher Storage-Bucket — Hoch. Präsent in 34 % der Lovable-Apps, die Storage nutzen.
  7. Bezahl-Feature-Gates nur im Frontend — Hoch. Präsent in 27 % der monetarisierten Apps.
  8. Service-Role-Key im Client-Code — Kritisch. Selten (~4 %), aber immer vollständiger Takeover.

Der Einstieg ist simpel

Du musst kein Security-Experte sein, um deine Lovable-Projekte abzusichern. Füge oben die URL deiner produktiven App ein. In Minuten bekommst du einen umfassenden Security-Report mit umsetzbaren Empfehlungen.

Starte mit 14 Tagen kostenlosem Test. Kein langes Setup. Nur echte Security-Insights für echte Anwendungen.

COMMON QUESTIONS

01
Ist Lovable sicher zu benutzen?
Lovable ist eine legitime KI-Coding-Plattform, aber damit gebaute Apps können Schwachstellen enthalten — Auth-Bypasses, offengelegte API-Keys und Daten-Leaks. Scanne deine Lovable-App immer vor dem Go-Live.
Q&A
02
Welche Security-Probleme sind bei Lovable-Apps häufig?
Häufige Probleme sind Auth-Bypasses, API-Keys im Client-Code, Daten-Leaks über API-Responses und fehlende Eingabevalidierung. Typisch für KI-generierten Code.
Q&A
03
Wie scanne ich meine Lovable-App auf Schwachstellen?
Gib die URL deiner produktiven Lovable-App im VibeEval-Scanner ein. 13 KI-Agents testen in etwa 60 Sekunden auf Security-Flaws. Keine Anmeldung für den ersten Scan.
Q&A
04
Was ist die häufigste Schwachstelle in Lovable-Apps?
Fehlende oder falsch konfigurierte Row-Level-Security-(RLS)-Policies sind die Nr.-1-Schwachstelle in Lovable-Apps. Ohne korrektes RLS kann jeder Nutzer Daten anderer Nutzer direkt über die Supabase-API lesen, ändern oder löschen.
Q&A
05
Wie viele Lovable-Apps wurden bereits auf Security gescannt?
Über 1.430 Lovable-Anwendungen wurden von VibeEval gescannt und mehr als 5.711 Security-Schwachstellen aufgedeckt. Die häufigsten Probleme sind fehlende RLS-Policies, offengelegte API-Keys und Auth-Bypasses.
Q&A
06
Wie prüfe ich, ob mein Supabase-RLS funktioniert?
Öffne den Network-Tab deiner App, kopiere den Anon-Key und curle direkt den REST-Endpoint: `curl 'https://<project>.supabase.co/rest/v1/<table>?select=*' -H 'apikey: <anon>'`. Kommen Zeilen zurück, ohne dass du authentifiziert bist, ist RLS aus oder die Policy falsch. Der VibeEval-Scanner macht das automatisch für jede Tabelle — inklusive INSERT-, UPDATE- und DELETE-Probes, die die meisten Entwickler zu testen vergessen.
Q&A
07
Bedeutet RLS aktiviert, dass meine Tabelle sicher ist?
Nein. Aktiviertes RLS ohne Policies liefert Null Zeilen für den Anon-Key, aber auch Null Zeilen für eingeloggte Nutzer — also fügen Entwickler eine permissive `USING (true)`-Policy hinzu, um es zum Laufen zu bringen, und damit ist RLS effektiv aus. RLS ist nur sicher, wenn jede Policy die Zeilen explizit an den Aufrufer bindet, typischerweise via `auth.uid() = user_id`, und INSERT-Policies `WITH CHECK` statt nur `USING` nutzen.
Q&A
08
Welche Vibe-Coding-Flows brechen am häufigsten?
Die sechs Flows, die wir in Lovable-Apps am häufigsten kaputt sehen, sind: (1) Signup/Session-Management, das Tokens leakt, (2) File-Upload in öffentliche Storage-Buckets, (3) Bezahl-Feature-Gates, die nur im Frontend durchgesetzt werden, (4) Admin-Dashboards, die per UI-Conditional geschützt sind, (5) Edge Functions, die mit Service-Role-Key aus dem Browser aufgerufen werden, und (6) Profil-Updates, bei denen Nutzer ihre eigene `role` oder `user_id` ändern können.
Q&A
09
Kann Lovable diese Schwachstellen fixen, wenn ich frage?
Manchmal. Lovable fügt RLS-Policies hinzu, wenn du spezifisch fragst — z. B. aktiviere RLS auf jeder öffentlichen Tabelle und beschränke Reads auf auth.uid() = user_id. Oft schreibt es aber Policies, die richtig aussehen und es nicht sind, besonders für INSERT (ohne WITH CHECK) und UPDATE (ohne zweite Bedingung auf der neuen Zeile). Lass den Scan immer neu laufen, nachdem die KI sagt, sie habe gefixt.
Q&A
10
Funktioniert es für Lovable-Apps, die kein Supabase nutzen?
Ja. Der Scanner deckt Firebase, Neon, PlanetScale, direkte REST/GraphQL-Backends und Edge Functions ab. Die RLS-Checks laufen nur, wenn Supabase erkannt wird. Tests für Auth-Bypass, API-Key-Exposition, Daten-Leaks und Eingabevalidierung laufen auf jeder Lovable-App, unabhängig vom Backend.
Q&A
11
Ist es sicher, diesen Scan gegen meine produktive Lovable-App zu fahren?
Ja. Der Scanner ist überwiegend read-only: Er testet dieselben Endpoints, die ein echter Browser mit Anon-Credentials treffen würde. Write-Probes (INSERT/UPDATE/DELETE) zielen auf Tabellen mit erkennbaren Test-Markern und werden klar geloggt. Keine Produktionsdaten werden exfiltriert oder gespeichert — wir loggen nur Counts und Tabellennamen.
Q&A

STOP GUESSING. SCAN YOUR APP.

Join the founders who shipped secure instead of shipped exposed. 14-day trial, no card.

START FREE SCAN