Servers in Germany · GDPR-compliant
MLVibeScan
We find the security holes in your app before someone else does.
No account needed · Results in about 20 seconds · We keep no copy of your code
Built with these? Then you’re in the right place.
- Lovable
- Bolt
- v0
- Cursor
- Windsurf
- Replit
- Claude Code
- Copilot
- Base44
- Firebase Studio
What we find
The mistakes vibe-coded apps ship with
Credentials in the frontend
Stripe, Supabase, OpenAI or AWS keys sitting in the JavaScript you ship. Bots harvest them from public bundles automatically — the bill lands on your desk.
Open database rules
Supabase tables without Row Level Security. The key you need is public in your app — anyone can download your users table.
Public source maps
Your unbuilt original code, filenames and comments included, readable by anyone in the browser.
Missing security headers
CSP, HSTS, X-Frame-Options and the rest. Without them a small hole becomes an exploited one.
Unprotected sign-in
No limit on failed password attempts. Working through leaked password lists then takes minutes.
Over-permissive CORS
When any third-party website may call your API on behalf of your signed-in users.
Forgotten files
.env, .git/config or a database dump that ended up in the public directory by accident.
Talkative error pages
Stack traces and server paths in the response — the map an attacker would otherwise have to draw by hand.
TLS and certificate
Expired or invalid certificates, missing HTTPS redirect, outdated encryption.
Email spoofing protection
Missing SPF and DMARC records. Without them anyone can send phishing mail from your address.
Cookie security
Session cookies without HttpOnly or Secure — the ticket to an account takeover.
External threat databases
Whether your domain has already been reported as malicious. That happens after a breach — often before you notice it yourself.
Outdated libraries
Which JavaScript packages you ship and whether known vulnerabilities are documented for those exact versions. Publicly documented means the instructions for exploiting them are freely available.
Forgotten environments
The staging or preview address that has been running for months with real data and no sign-in, because nobody thinks about it any more. We find it through the public certificate log.
Development server in production
Publishing with npm run dev instead of npm run build puts a server on the internet that was never meant to be there — including a path that hands out arbitrary files. In the browser you cannot tell the difference.
Someone else’s code in your app
Packages from documented npm supply chain attacks, code that records form input, crypto miners. Not every breach is visible — but these traces are.
The free scan covers everything on this list that is detectable from the outside. Database rules and password guessing are part of the full report and additionally require proof that the domain is yours.
Scope
What we look for
Not the detection rules — those stay with us. But the names, so you can tell whether your stack is covered.
- Supabase Row Level Security
- Firebase Security Rules
- Stripe Live Keys
- Takeoverable subdomains
- Exposed .git directory
- Unrestricted Google keys
- Dev server in production
- Compromised npm packages
- Skimmer in the bundle
- Crypto miner
- Malicious service workers
- GraphQL-Introspection
- Exposed Swagger docs
- Metrics endpoints
- Hallucinated package names
- Plaintext passwords
- Archived .env files
- Unprotected API endpoints
- Subresource Integrity
- Database schema exposed
- Password reset flood
- OpenAI
- Anthropic
- AWS
- GitHub Token
- service_role
- Clerk
- Vercel
- Neon
- Upstash
- MongoDB Atlas
- Groq
- Replicate
- SendGrid
- Twilio
- Discord Bot Token
- JWT signing secret
- Private keys
- DB connection strings
- CSP
- HSTS
- X-Frame-Options
- Referrer-Policy
- Permissions-Policy
- CORS
- Cookie flags
- TLS certificate
- HTTPS redirect
- SPF
- DMARC
- Source Maps
- .env
- .git/config
- package-lock.json
- Database dumps
- Dockerfile
- Stacktraces
- Debug mode
- Rate limiting
- Password guessing
- Blocklist entry
The free scan covers everything on this list that is detectable from the outside. Database rules and password guessing are part of the full report and additionally require proof that the domain is yours.
Bevor du auf „Publish" drückst
Was es kostet, es nicht zu wissen
Eine Lücke in einer vibegecodeten App ist keine kleinere Lücke, nur weil die App schnell entstanden ist. Sie steht im selben Internet wie alle anderen.
Gestohlene Schlüssel kosten sofort Geld
Automatisierte Bots durchsuchen öffentlich erreichbare JavaScript-Bundles gezielt nach Zugangsdaten. Ein OpenAI-, Stripe- oder AWS-Schlüssel im Frontend wird nicht irgendwann gefunden, sondern zeitnah — und dann bis zum Limit deines Kontos benutzt.
Die Rechnung geht an dich
Eine offene Datenbank ist ein meldepflichtiges Datenleck
Fehlt bei Supabase die Row Level Security, kann jeder mit dem öffentlichen Schlüssel aus deinem Frontend die komplette Nutzertabelle herunterladen. Sobald personenbezogene Daten betroffen sind, ist das kein technisches Problem mehr, sondern ein rechtliches.
Art. 33 DSGVO: 72 Stunden bis zur Meldung an die Aufsichtsbehörde
Betroffene können Schadenersatz verlangen
Nach Art. 82 DSGVO haben Betroffene einen eigenen Anspruch auf Ersatz — auch für immaterielle Schäden. Dazu kommt die Benachrichtigungspflicht gegenüber jedem einzelnen Nutzer nach Art. 34 und der Bußgeldrahmen nach Art. 83.
Als Einzelperson haftest du persönlich
Deine Domain kann auf Sperrlisten landen
Wird deine App übernommen und für Phishing missbraucht, melden Sicherheitsdienste die Domain. Browser zeigen dann eine ganzseitige Warnung, und deine E-Mails kommen nicht mehr an. Der Weg zurück dauert Wochen.
Auch nach der Bereinigung bleibt der Eintrag eine Weile
Dein Quellcode liegt offen
Versehentlich mitgelieferte Source Maps oder ein erreichbares .git-Verzeichnis geben deinen ungebauten Originalcode preis — inklusive aller Zugangsdaten, die jemals in der Versionsgeschichte standen, auch der längst gelöschten.
Jedes je committete Passwort gilt als kompromittiert
Vertrauen bekommst du nicht zurück
Der finanzielle Schaden lässt sich beziffern. Die E-Mail an deine Nutzer, in der du erklären musst, dass ihre Daten abgeflossen sind, ist die eigentliche Rechnung — und die zahlst du bei jedem künftigen Start mit.
Der Schaden überlebt das Projekt
Unsere Devise
Nichts veröffentlichen ohne Scan.
Zwanzig Sekunden vor dem Livegang. Kostenlos, ohne Konto, so oft du willst — und du weißt, was du da eigentlich ins Netz stellst.
Jetzt kostenlos prüfen„Claude Code hat meinen Code schon geprüft"
Gut so — und trotzdem bleibt eine Lücke. Nicht weil die Werkzeuge schlecht wären, sondern weil sie an einer anderen Stelle stehen als ein Angreifer.
Er sieht deinen Quellcode — nicht das, was ausgeliefert wird
Im Code steht `import.meta.env.VITE_STRIPE_KEY`, und das sieht völlig harmlos aus. Erst der Build setzt den echten Wert ein, und alles mit dem Präfix VITE_ oder NEXT_PUBLIC_ landet dabei absichtlich im Browser. Was am Ende im Bundle steht, sieht man nur am Bundle.
Er sieht deinen Code — nicht deinen Server
Security-Header, TLS-Zertifikat, HTTPS-Weiterleitung, CORS-Regeln und Cache-Verhalten kommen von Vercel, Netlify, nginx oder Cloudflare. Nichts davon steht in deinem Repository, also kann es dort auch niemand prüfen.
Er sieht deinen Code — nicht deine Datenbank
Ob Row Level Security in deinem Supabase-Projekt tatsächlich eingeschaltet ist, steht nirgends im Code. Das ist ein Schalter im Dashboard. Man kann es nur feststellen, indem man die Datenbank fragt.
Er schaut von innen — wir von außen
Ein Assistent prüft mit dem Wissen des Autors: Er kennt die Absicht hinter jeder Zeile. Wir kommen als anonymer Besucher an deine öffentliche Adresse — genau die Perspektive, aus der ein Angreifer schaut, und die einzige, die zählt.
Das Werkzeug bewertet seine eigene Arbeit
Wenn dasselbe Modell den Code geschrieben und geprüft hat, sind blinde Flecken kein Zufall, sondern zu erwarten: Was es beim Schreiben für richtig hielt, hält es beim Prüfen erneut für richtig. Eine zweite, unabhängige Instanz findet, was die erste für selbstverständlich hielt.
Er prüft einmal — nach jedem Deploy ist alles anders
Eine neue Umgebungsvariable, ein geändertes Hosting-Setup, ein zusätzliches Paket: Jede Auslieferung kann eine Lücke aufreißen, die gestern nicht da war. Bei uns ist der Scan kostenlos, also kannst du ihn zur Gewohnheit machen.
Deshalb ersetzt MLVibeScan deinen KI-Assistenten nicht — er prüft nach. Von außen, an deiner echten Adresse, an dem, was tatsächlich ausgeliefert wird. Ein zweites Paar Augen, das nicht mitgeschrieben hat.
For vibe coders
Built it with AI? Then this is for you.
If you built your app with one of these tools, you are the audience — not because you are a beginner, but because all of these tools share the same blind spot.
AI tools write code that works. They do not necessarily write it securely, and they do not tell you when something is missing. A language model puts a Supabase call in the frontend because that is the shortest path — whether Row Level Security backs it up is a question it never asks. It writes no security headers because you did not ask for any. And it has no idea which environment variables your build inlines into the bundle you ship.
That is not a complaint about the tools. It is the exact spot where an outside look finds what an inside look cannot: MLVibeScan tests your app at its public address — against what is actually on the internet, not against what is in your editor.
What this scanner is built for
- Apps from Lovable, Bolt, v0, Base44 or Firebase Studio
- Projects from Cursor, Windsurf, Claude Code, Copilot or Replit
- Supabase and Firebase backends accessed straight from the frontend
- First SaaS products, MVPs and side projects with real users
- Anything running on Vercel, Netlify or Railway
If more than one of those sounds familiar, the scan takes twenty seconds and costs nothing.
Datenschutz ist hier kein Kleingedrucktes
Wir verkaufen Sicherheit. Dann können wir schlecht selbst schludern.
Keine Kopie deines Codes
Wir laden deine Seite und deine JavaScript-Dateien, analysieren sie im Arbeitsspeicher und verwerfen sie unmittelbar danach. Gespeichert wird nur das Ergebnis — nie dein Code.
Server in Deutschland
Anwendung und Datenbank laufen ausschließlich in einem deutschen Rechenzentrum. Keine Übermittlung in Drittländer, keine Verarbeitung außerhalb der EU.
Automatisch gelöscht
Auch die Befunde verschwinden nach Ablauf der Frist von selbst. Kein Antrag nötig, keine Erinnerung — ein Löschlauf erledigt das stündlich.
Kein Konto, keine Anmeldung
Du gibst eine Adresse ein und bekommst ein Ergebnis. Wir legen kein Nutzerkonto an und fragen keine persönlichen Daten ab.
Keine Tracker, keine fremden CDNs
Diese Seite lädt nichts von Google, Meta oder sonstwo nach — auch nicht die Schriftart. Deine IP-Adresse verlässt unseren Server nicht.
Nur lesend, nie eingreifend
Der Scanner ruft deine Seite ab wie ein Besucher. Er verändert nichts, legt nichts an und löscht nichts.
Erst schauen, dann entscheiden
Der Scan ist kostenlos. Bezahlt wird nur, wenn wir etwas gefunden haben, das du beheben willst — einmalig, ohne Abo.
Scan
Kostenlos
Ohne Konto, ohne Zahlungsdaten
- Alle passiven Prüfungen
- Anzahl und Schweregrad aller Funde
- Nach Kategorie aufgeschlüsselt
- Sicherheitsnote von A bis F
Vollständiger Report
Endpreis · Rechnung inklusive · kein Abo
- Was genau gefunden wurde — im Klartext
- Wo es steht: Datei, Zeile, Fundstelle
- Fertiger Fix-Prompt zum Einfügen in Cursor & Co.
- Report als PDF zum Ausdrucken und Weitergeben
- Tiefenprüfung deiner Datenbank-Regeln nach Domain-Nachweis
Freigeschaltet wird genau die eine gescannte Adresse — dauerhaft, solange der Report bei uns liegt.
Häufige Fragen
Was du vor dem ersten Scan wissen solltest
Was ist MLVibeScan?
MLVibeScan ist ein Sicherheitsscanner für Web-Apps, die mit KI-Werkzeugen wie Lovable, Bolt, v0, Cursor oder Replit gebaut wurden. Du gibst die Adresse deiner App ein und bekommst in etwa zwanzig Sekunden eine Übersicht über gefundene Sicherheitsprobleme — kostenlos und ohne Konto. Einen Teil der leichteren Befunde zeigen wir dabei vollständig, damit du siehst, wie ein Befund aussieht. Der vollständige Bericht mit allen Fundstellen und Anleitungen zum Beheben kostet einmalig 9,49 Euro pro Domain und schließt beliebig viele Nachtests ein.
Was kostet ein Scan?
Der Scan selbst ist kostenlos und beliebig oft wiederholbar. Bezahlt wird nur der vollständige Bericht: 9,49 Euro einmalig für die geprüfte Domain, mit Rechnung. Der angezeigte Preis ist der Endpreis; gemäß § 19 UStG wird keine Umsatzsteuer berechnet. Bezahlen kannst du mit PayPal oder Karte. Es gibt kein Abonnement und keine wiederkehrende Zahlung. Nach dem Kauf kannst du dieselbe Domain 90 Tage lang beliebig oft erneut prüfen — nach dem Beheben zeigt ein neuer Scan, ob es gewirkt hat.
Brauche ich ein Konto?
Nein. MLVibeScan legt kein Nutzerkonto an und verlangt keine Anmeldung. Du gibst eine Adresse ein und bekommst ein Ergebnis. Auch für den Kauf des vollständigen Berichts ist keine Registrierung nötig.
Wird mein Quellcode gespeichert?
Nein. Die Seite und ihre JavaScript-Dateien werden geladen, im Arbeitsspeicher ausgewertet und unmittelbar danach verworfen. Auf einen Datenträger geschrieben wird nur das Ergebnis — also welche Art von Problem an welcher Stelle gefunden wurde. Gefundene Zugangsdaten werden dabei gekürzt gespeichert, sodass kein verwertbarer Schlüssel bei uns liegt.
Wo stehen die Server?
Ausschließlich in Deutschland. Anwendung und Datenbank laufen in einem deutschen Rechenzentrum, es gibt keine Übermittlung in Drittländer. Die Seite lädt außerdem keine Inhalte von fremden Servern nach — auch die Schriftart wird selbst ausgeliefert, damit die IP-Adresse der Besucher nicht an Google geht.
Wie lange werden meine Ergebnisse aufbewahrt?
Berichte werden nach neunzig Tagen automatisch und vollständig gelöscht, auch bezahlte. Ein Löschlauf erledigt das stündlich; ein Antrag ist nicht nötig. Das konkrete Löschdatum steht auf jedem Bericht. Wer einen gekauften Bericht dauerhaft behalten will, speichert ihn als PDF.
Wonach sucht MLVibeScan?
Nach den Fehlern, mit denen KI-generierte Apps typischerweise live gehen: Zugangsdaten wie Stripe-, Supabase-, OpenAI- oder AWS-Schlüssel im Frontend-Code, Passwörter im Klartext, Supabase-Tabellen ohne Row Level Security, offene Firebase Security Rules, JavaScript-Bibliotheken mit bekannten Sicherheitslücken, erfundene Paketnamen aus KI-Vorschlägen, übernehmbare Subdomains, vergessene Test- und Vorschau-Umgebungen, öffentlich erreichbare Source Maps und Git-Verzeichnisse, fehlende Security-Header, fehlendes Rate-Limiting auf Anmeldung und Passwort-Reset, zu großzügige CORS-Regeln, versehentlich veröffentlichte Dateien wie .env oder .git, ungültige TLS-Zertifikate, unsichere Cookies und fehlende SPF- und DMARC-Einträge.
Wie gründlich ist der Scan wirklich?
Der Scan besteht aus rund zwanzig eigenständigen Prüfungen und stützt sich auf einen Katalog von etwa siebzig Erkennungsmustern — allein fünfzig davon für Zugangsdaten unterschiedlicher Anbieter, von Stripe und Supabase über OpenAI und AWS bis zu Vercel, Neon, Groq und Shopify. Dazu kommen vier externe Datenquellen: OSV.dev für bekannte Sicherheitslücken in deinen Paketen, das öffentliche Zertifikatsprotokoll für vergessene Subdomains, das Internet-Archiv für Dateien, die einmal öffentlich waren und dauerhaft abrufbar bleiben, sowie eine unabhängige Zweitbewertung deiner Security-Header. Welche Muster genau greifen, veröffentlichen wir nicht — sonst wüsste jeder, wie man sich daran vorbeischreibt. Die geprüften Bereiche stehen aber vollständig auf der Startseite.
Was ist der Deep-Scan und wie komme ich dran?
Der kostenlose Scan prüft alles, was von außen erkennbar ist, ohne deinen Server anders zu behandeln als ein normaler Besucher. Der Deep-Scan geht darüber hinaus: Er fragt deine Datenbank tatsächlich ab und stellt fest, ob Supabase- oder Firebase-Tabellen ohne Anmeldung lesbar sind. Er prüft, ob dein Google-Schlüssel ohne Einschränkung gegen kostenpflichtige APIs benutzt werden kann. Er ruft die API-Endpunkte aus deinem Frontend ohne Anmeldung auf und sieht nach, ob echte Daten zurückkommen. Und er testet, ob sich Passwörter unbegrenzt durchprobieren lassen. Diese vier Prüfungen finden die schwerwiegendsten Befunde überhaupt.
Welche Voraussetzungen hat der Deep-Scan?
Zwei, und beide sind nötig. Erstens gehört der Deep-Scan zum vollständigen Report — er ist der aufwendigste Teil der Prüfung und deshalb im Preis von 9,49 Euro enthalten, nicht im kostenlosen Scan. Zweitens musst du nachweisen, dass die Domain dir gehört. Der zweite Punkt lässt sich nicht durch den ersten ersetzen: Eine Zahlung ist keine Einwilligung des Betreibers. Sonst könnte jemand für 9,49 Euro aktive Prüfungen gegen einen Konkurrenten in Auftrag geben, und wir hätten sie ausgeführt. Nach dem Kauf siehst du zuerst alle Befunde des passiven Scans im Klartext und führst dann den Nachweis, um den Deep-Scan zu starten.
Wie weise ich nach, dass mir die Domain gehört?
Drei Wege stehen zur Wahl, du brauchst nur einen. Erstens ein DNS-TXT-Eintrag: Wir zeigen dir Name und Wert, du trägst ihn in deiner Domainverwaltung ein. Zweitens ein Meta-Tag, das du in den head deiner Startseite einfügst und neu veröffentlichst. Drittens ein Sicherheitscode per E-Mail: Wir schicken einen sechsstelligen Code an eine feste Rollenadresse deiner Domain — admin@, webmaster@, postmaster@, hostmaster@, administrator@ oder security@ — und du gibst ihn bei uns ein. Der dritte Weg funktioniert auch dann, wenn du weder an die Domainverwaltung noch an den Quellcode kommst, aber das Postfach liest. Die Zieladresse kannst du nicht frei eingeben, sondern nur aus dieser Liste wählen: Wäre sie frei wählbar, könnte jeder seine eigene Adresse angeben und damit jede fremde Domain bestätigen. Der Code gilt 30 Minuten, erlaubt fünf Versuche und wird bei uns nur als Hash gespeichert.
Was bekomme ich für die Freischaltung?
Der kostenlose Bericht zeigt dir, wie viele Befunde es gibt, wie schwer sie wiegen und in welchem Bereich sie liegen. Einen Teil der leichteren Befunde zeigen wir vollständig, damit du siehst, wie ein fertiger Befund aussieht. Die Freischaltung öffnet den Rest: zu jedem Befund die genaue Fundstelle mit Datei und Zeile, den Beweisauszug, und eine fertige Anleitung zum Beheben, die du direkt in Cursor, Claude Code oder deinen Editor kopieren kannst. Dazu den kompletten Bericht als PDF zum Herunterladen und Weitergeben. Und — für viele der wichtigste Punkt — beliebig viele Nachtests: Du behebst die Befunde, scannst erneut und siehst sofort, ob es gewirkt hat. Neunzig Tage lang, ohne weitere Kosten, für alle künftigen Scans derselben Domain.
Darf ich fremde Websites scannen?
Nur mit Erlaubnis des Betreibers. Der kostenlose Scan ist deshalb rein passiv: Er ruft die Seite so ab, wie es jeder Browser und jeder Suchmaschinen-Crawler auch tut, und verändert nichts. Tiefergehende Prüfungen, die echte Anfragen an die Datenbank oder die Anmelderoute stellen, laufen erst, nachdem du über einen DNS-Eintrag oder ein Meta-Tag nachgewiesen hast, dass dir die Domain gehört.
Reicht es nicht, wenn Claude Code oder Cursor meinen Code prüft?
Nein, weil diese Werkzeuge an einer anderen Stelle stehen als ein Angreifer. Sie sehen deinen Quellcode, nicht das fertig gebaute Bundle, in dem Umgebungsvariablen erst eingesetzt werden. Sie sehen dein Repository, nicht die Security-Header deines Hosters, nicht dein TLS-Zertifikat und nicht den Schalter für Row Level Security in deinem Supabase-Dashboard. Und wenn dasselbe Modell den Code geschrieben und geprüft hat, sind blinde Flecken zu erwarten. MLVibeScan prüft von außen, an deiner öffentlichen Adresse, an dem, was tatsächlich ausgeliefert wird.
Verändert der Scan etwas an meiner App?
Nein. Der Scanner liest nur. Er ruft Seiten ab, liest Antwort-Header und DNS-Einträge und prüft das TLS-Zertifikat. Er legt nichts an, ändert nichts und löscht nichts. Selbst die Prüfung der Datenbank-Regeln nach Domain-Nachweis stellt ausschließlich lesende Abfragen.
Was bedeutet ein Bericht ohne Befunde?
Dass unsere Prüfungen nichts gefunden haben — nicht, dass deine App sicher ist. Ein automatischer Scan findet häufige, von außen erkennbare Fehlkonfigurationen. Logikfehler, Rechteprobleme innerhalb der Anwendung und alles, was eine Anmeldung voraussetzt, liegen außerhalb dessen, was von außen sichtbar ist. Ein Bericht ohne Befunde ersetzt keinen Penetrationstest.
Wie oft sollte ich scannen?
Vor jeder Veröffentlichung. Eine neue Umgebungsvariable, ein geändertes Hosting-Setup oder ein zusätzliches Paket kann eine Lücke aufreißen, die beim letzten Deploy nicht da war. Weil der Scan kostenlos und beliebig oft wiederholbar ist, lässt er sich zur Gewohnheit machen: nichts veröffentlichen ohne Scan.