AI 8 min leestijd

Lovable-apps lekken klantdata: wat het onderzoek van Crissy Field en Handelsblatt laat zien.

Onderzoekers vonden in 7.403 Lovable-apps database-records met e-mailadressen die zonder inloggen op te vragen waren. Wat er misging, waarom AI-gegenereerde apps dit vaker hebben en wat een ontwikkelaar wél controleert.

Jasper Koers ·

In het kort

  • Crissy Field en Handelsblatt vonden 159.041 Lovable-projecten in Common Crawl. Bij 7.403 websites waren records met e-mailadressen zonder inloggen op te vragen.
  • De 30% (7.403 van 24.664) is geen bevestigd lekpercentage voor alle Lovable-apps. De onderzoekers zeggen dat zelf.
  • Onder de gevonden data zaten paspoortgegevens, privéberichten, ticketcodes en betaalinformatie.
  • De oorzaak is geen hack maar een configuratiefout: tabellen die de browser rechtstreeks kan lezen zonder toegangsregels.
  • In april 2026 lag Lovable al onder vuur voor een autorisatiefout waarmee gratis accounts code en chats van anderen konden zien.
  • AI genereert code, maar controleert niet of de toegangsregels kloppen. Dat blijft werk voor iemand die begrijpt wat er gebouwd wordt.

Op 2 november 2026 publiceerde Handelsblatt-journalist Lina Knees een onderzoek naar apps die met Lovable zijn gebouwd. Het Hamburgse onderzoeksbureau Crissy Field deed het technische werk en publiceerde daarna een rapport met bijgewerkte cijfers. De uitkomst: in duizenden apps waren persoonsgegevens op te vragen door iedereen die de website bezocht.

Wat hebben de onderzoekers gevonden?

Kort antwoord

Crissy Field vond in een steekproef van 159.041 Lovable-projecten 7.403 websites waar records met e-mailadressen zonder inloggen op te vragen waren. Daaronder zaten paspoortgegevens, privéberichten en bestellingen met betaalinformatie. De oorzaak is geen lek in de database zelf, maar tabellen zonder toegangsregels. Dat is een fout die een ontwikkelaar vóór livegang hoort te vangen.

Het onderzoek verliep in twee stappen. Eerst zochten de onderzoekers passief in het open webarchief Common Crawl naar Lovable-projecten uit de periode december 2025 tot september 2026. Daarna deden ze bij een deel van die apps gerichte leesverzoeken, met dezelfde sleutel die de app zelf naar elke bezoeker stuurt. Ze lazen alleen, wijzigden niets en downloadden de datasets niet volledig.

Stap Aantal
Lovable-projecten gevonden in Common Crawl159.041
Daarvan met Supabase als database34.545
Stuurden al bij het laden database-records mee, zonder inloggen24.664
Records met e-mailadressen op te vragen7.403 websites, 10.560 tabellen

Dat de records bij het laden meekomen, is op zich geen probleem. Een webshop laat ook producten zien zonder dat je inlogt. Het probleem zit in de laatste regel: met een paar extra leesverzoeken kwam er veel meer uit de database dan de bedoeling was.

Wat er op straat lag

Crissy Field noemt geen namen van apps, maar beschrijft wel wat het vond:

  • Een dienstverlener met meer dan 1.000 records met paspoortgegevens: paspoortnummers, vervaldata en nationaliteiten.
  • Een Duits lifestyleforum met ruim 80.000 profielen (namen, e-mailadressen, geboortedata) en meer dan 200.000 chatberichten.
  • Evenementen- en restaurantplatforms met tienduizenden bestellingen, inclusief telefoonnummers, adressen, betaalinformatie en geldige ticketcodes.
  • Een vastgoedbeheerder met AI-samenvattingen van interne e-mails over huurders, eigenaren en zakenpartners.
  • Contracten, facturen, fotoalbums en interne WhatsApp-gesprekken. In één geval waren 280.000 verstuurde klantmails in te zien.

Of iemand die data heeft misbruikt, konden de onderzoekers niet vaststellen. Ze publiceren bewust niet hoe ze erbij kwamen.

Wat de 30% wél en níét betekent

In de berichtgeving circuleert het getal 30%. Dat is 7.403 gedeeld door 24.664: het deel van de nader bekeken websites waar e-mailadressen opvraagbaar waren. Crissy Field schrijft er nadrukkelijk bij dat dit geen bevestigd lekpercentage is, en dat de steekproef uit Common Crawl niet representatief is voor alle Lovable-apps. Een e-mailadres kan ook een openbaar contactadres of testdata zijn. Omgekeerd vallen records zonder e-mailadres, zoals paspoortnummers zonder mailadres erbij, buiten de telling. De onderzoekers noemen hun aantallen daarom eerder een ondergrens dan een precieze meting.

Eerlijk blijven over dit getal is belangrijk. Wie "30% van de Lovable-apps lekt" roept, overdrijft. Wie het onderzoek afdoet als een paar losse gevallen, onderschat het. Duizenden apps met echte klantdata is ernstig genoeg.

Hoe kan dit gebeuren?

Lovable bouwt apps vaak op Supabase. In die opzet praat de browser van de bezoeker rechtstreeks met de database. De sleutel die daarvoor nodig is, staat in de code van de website en is dus voor iedereen zichtbaar. Supabase zegt zelf dat dit veilig is, mits je Row Level Security aanzet: regels per tabel die bepalen wie welke rijen mag zien.

Staat RLS uit, of staat er een regel als "iedereen mag alles lezen", dan is die publieke sleutel genoeg om de hele tabel op te vragen. Volgens The CyberSec Guru ging het precies daar mis: tabellen die door AI-agents waren aangemaakt zonder RLS, gecombineerd met ruime standaardrechten voor anonieme bezoekers. Er is geen lek in de databasesoftware zelf gebruikt. Hetzelfde patroon werd in 2025 al beschreven in CVE-2025-48757.

In een Supabase-app is Row Level Security geen extra beveiligingslaag. Het is de enige.

Lovable heeft inmiddels een ingebouwde security scan en een AI-reviewer die op dit soort fouten controleren. Dat helpt. Maar de voorwaarden van Lovable leggen de verantwoordelijkheid voor de app en de data bij de klant. Crissy Field wijst op die spanning: de marketing suggereert dat je geen technische kennis nodig hebt, terwijl de verantwoordelijkheid juist bij jou ligt.

Niet de eerste keer: het incident van april 2026

Lovable lag een half jaar eerder ook al onder vuur. In april 2026 meldde een onderzoeker onder de naam @weezerOSINT een BOLA-fout (Broken Object Level Authorization): de server controleerde niet of je de eigenaar was van het project dat je opvroeg. Volgens The Register kon de onderzoeker met een gratis account in een paar API-aanroepen de broncode, AI-chats en klantdata van andermans publieke projecten inzien. Uit die broncode haalde hij ook database-credentials. Volgens de onderzoeker ging het om projecten van vóór november 2025.

De reactie van Lovable maakte het erger. Het bedrijf noemde het zichtbaar zijn van code van publieke projecten eerst "intentional behavior" en ontkende een datalek. Later bleek dat een wijziging in februari 2026 per ongeluk de chats van publieke projecten weer openzette. De meldingen via het bugbountyprogramma waren gesloten, volgens Lovable omdat de partners bij HackerOne dachten dat dit zo hoorde. Halborn beschrijft hoe die fout eerst alleen voor nieuwe projecten werd gerepareerd, terwijl bestaande projecten openstonden tot een tweede melding.

Dat is een ander soort fout dan die uit het Handelsblatt-onderzoek, maar het patroon is hetzelfde: autorisatie, de vraag "mag deze persoon dít zien?", werd niet goed gecontroleerd.

Waarom AI-gegenereerde apps hier vaker last van hebben

Lovable, Bolt en v0 zijn indrukwekkend. Je beschrijft wat je wilt en binnen een uur staat er een werkende app. Het probleem is niet dat de AI slechte code schrijft. Het probleem is dat de AI bouwt wat je vraagt, en dat beveiliging zelden in die vraag zit.

"Maak een app waar klanten tickets kunnen kopen" levert een app op waar klanten tickets kunnen kopen. Of klant A de tickets van klant B kan opvragen, komt in die vraag niet voor. Een ervaren ontwikkelaar stelt die vraag automatisch, omdat hij weet hoe het misgaat. Wie geen ontwikkelaar is, weet niet dat die vraag bestaat.

Drie dingen controleert een ontwikkelaar standaard, en vergeet een AI-tool als je er niet om vraagt:

  • Authenticatie: wie ben je? Is inloggen verplicht voor alles wat niet openbaar hoort te zijn?
  • Autorisatie: wat mag jij zien en wijzigen? Ziet een klant alleen zijn eigen bestellingen, en een medewerker alleen zijn eigen klanten?
  • Datatoegang: welke gegevens verlaten de server? Gaat er niet meer naar de browser dan nodig is?

Dit is geen verhaal tegen AI. Wij gebruiken zelf dagelijks AI bij het bouwen. Maar AI is gereedschap, geen ontwikkelaar. Het schrijft code. Begrijpen wat die code doet, en wat ze níét doet, blijft mensenwerk.

Hoe wij dit in Laravel aanpakken

Bij een maatwerkapplicatie in Laravel praat de browser nooit rechtstreeks met de database. Elk verzoek gaat via de server, en daar beslist de code wat je terugkrijgt. Toegang regelen we met policies: per model leggen we vast wie iets mag bekijken, aanmaken, wijzigen of verwijderen. Vergeten we een regel, dan krijg je standaard niets te zien in plaats van alles.

Daar komen een paar vaste gewoontes bij:

  • Queries filteren standaard op eigenaar of organisatie, zodat je niet per scherm hoeft te onthouden dat klant A niet bij klant B mag.
  • Tests die autorisatie controleren: voor gevoelige routes schrijven we een test die bewijst dat een andere gebruiker een 403 of 404 krijgt.
  • Alleen de velden die nodig zijn gaan naar de browser, via API Resources in plaats van complete database-rijen.
  • Geheimen blijven op de server: databasewachtwoorden en API-sleutels staan nooit in code die de browser ziet.

Lees meer over onze aanpak op de pagina Security & vertrouwen en in het artikel over security by design in Laravel.

Heb je een Lovable-app? Doe dit nu

  • Controleer RLS op elke tabel in het Supabase-dashboard. Een tabel zonder RLS is voor iedereen leesbaar.
  • Lees de policies. RLS aan met een regel die alles toestaat, is net zo open als RLS uit. Een goede policy filtert op de ingelogde gebruiker.
  • Test het als buitenstaander: log uit, of log in als een tweede testaccount, en kijk wat je nog kunt zien.
  • Zet je project op privé als het nog op publiek staat, en zet geen wachtwoorden of API-sleutels in de chat met de AI.
  • Herhaal de controle na elke grote wijziging. Een nieuwe tabel die de AI aanmaakt, heeft niet vanzelf de juiste regels.
  • Denk aan de AVG: staan er persoonsgegevens open, dan kan dat een meldplichtig datalek zijn.

Crissy Field zegt het zelf ook: automatische controles zijn geen vervanging voor een beoordeling door een specialist. Een scanner ziet of RLS aanstaat, maar niet of de regels passen bij hoe jouw bedrijf werkt.

Mijn kijk op dit onderzoek

Ik vind Lovable een knap product. Ik zie ondernemers er in een middag iets mee bouwen waar ze vroeger maanden op wachtten. Daar is niets mis mee, zolang het een prototype blijft.

Het gaat mis op het moment dat dat prototype stilletjes productie wordt. Er komen echte klanten in, echte bestellingen, soms echte paspoortnummers. Niemand heeft op dat moment de vraag gesteld: wie kan dit allemaal zien? Dat is geen domheid. Je weet niet dat je die vraag moet stellen als je nooit hebt gezien hoe het misgaat.

Dat is precies het verschil tussen code genereren en software bouwen. Ik laat AI elke dag code schrijven. Maar ik lees wat er staat, ik weet welke vragen ik moet stellen, en ik schrijf tests die bewijzen dat klant A niet bij de gegevens van klant B kan. Dat laatste doet geen enkele tool vanzelf.

— Jasper

Zo helpt Coding Agency hierbij

Draait je bedrijf op een app uit Lovable, Bolt of v0? Met een technical assessment controleren we authenticatie, autorisatie, databasetoegang en AVG-risico's, en je krijgt een rapport met wat er moet gebeuren. Wil je verder dan een prototype, dan bouwen we je app opnieuw als maatwerk in Laravel, met beveiliging die vanaf de eerste dag is ingebouwd. Lees ook wat eerdere onderzoeken naar vibe-coded apps vonden.

Neem contact op voor een vrijblijvend gesprek.

Veelgestelde vragen

Het Duitse onderzoeksbureau Crissy Field zocht samen met Handelsblatt in het webarchief Common Crawl naar apps die met Lovable zijn gebouwd. Ze vonden 159.041 projecten uit de periode december 2025 tot september 2026. Bij 24.664 websites kwamen al bij het laden database-records binnen, zonder inloggen. Met extra leesverzoeken vonden ze bij 7.403 daarvan records met e-mailadressen, verspreid over 10.560 tabellen.
Nee. De 30% is 7.403 van de 24.664 websites die de onderzoekers nader bekeken. Crissy Field schrijft zelf dat dit geen bevestigd lekpercentage is en dat de steekproef uit Common Crawl niet representatief is voor alle Lovable-apps. Een e-mailadres kan ook een openbaar contactadres of testdata zijn.
Row Level Security (RLS) is een functie van PostgreSQL waarmee je per tabel regels vastlegt over wie welke rijen mag lezen of wijzigen. Bij Supabase praat de browser rechtstreeks met de database via een publieke sleutel. Staat RLS op een tabel uit, dan kan iedereen met die sleutel de tabel opvragen. RLS is in die opzet dus de enige echte beveiliging.
Nee. Voor prototypes, interne experimenten en het testen van een idee is het een prima hulpmiddel. Het risico ontstaat zodra er echte klantdata in komt zonder dat iemand de toegangsregels heeft gecontroleerd. De AI bouwt wat je vraagt. Wie niet weet dat RLS of autorisatie nodig is, vraagt er ook niet om.
Controleer in het Supabase-dashboard of RLS op elke tabel aanstaat en of de policies echt per gebruiker filteren. Lovable heeft een ingebouwde security scan, maar Crissy Field benadrukt dat automatische controles geen vervanging zijn voor een beoordeling door een specialist. Een technical assessment brengt dit in een paar dagen in kaart.
Gerelateerde expertise — Technical Assessment

Meer weten over technical assessment? Bekijk onze aanpak, werkwijze en referentieprojecten.

Onderwerpen
Lovable Vibe-coding Supabase Row Level Security Security Datalek AVG

Hulp nodig?

Vragen over dit onderwerp? Laten we het erover hebben.

Neem contact op