Andermans gegevens in je AI-antwoord: wat er misliep bij Cloudflare
Cloudflare heeft op 26 oktober 2026 bekendgemaakt dat het AI-model GLM-5.3 op zijn platform Workers AI tussen 27 augustus en 9 september 2026 aan enkele klanten antwoorden gaf met gegevens uit de verzoeken van andere klanten. Het ging om 155 antwoorden, allemaal op zeer lange prompts van meer dan 681.280 tokens. De oorzaak was een combinatie van een configuratiefout en een fout in de open-source software SGLang. Een beveiligingsonderzoeker meldde het lek op 8 september, en Cloudflare haalde het model een dag later offline om het met een correctie opnieuw online te zetten.
Of: waarom een hallucinatie en een datalek er op je scherm hetzelfde uitzien
Wie een AI-model een vraag stelt, verwacht een antwoord op die vraag. Bij Cloudflare kregen enkele klanten deze zomer een antwoord op de vraag van iemand anders, met namen van klanten, factuurnummers en bestandspaden erbij. Het antwoord was vlot geschreven en samenhangend, en de server meldde netjes dat alles in orde was. Dat laatste is volgens mij het interessantste deel van het verhaal.
Cloudflare Workers AI: andermans gegevens in 155 antwoorden
Wat er gebeurde
Workers AI is het platform waarop Cloudflare AI-modellen aanbiedt via zijn eigen netwerk: je stuurt een prompt, je betaalt naar gebruik en je hoeft zelf geen grafische kaarten te kopen. Een van die modellen is GLM-5.3, een open model van het Chinese Z.ai dat gemaakt is om met AI-agenten te programmeren. Cloudflare zette het op 27 augustus 2026 online, met een contextvenster van 1.048.576 tokens: je kon het model in één keer ruim een miljoen tokens aan tekst geven.1
Op 26 oktober publiceerde Cloudflare een incidentrapport, samen met een bericht van de makers van SGLang, de open-source software waarmee het model draait. De kern:
- Tussen 27 augustus en 9 september bevatten 155 antwoorden gegevens uit verzoeken die andere klanten kort daarvoor naar hetzelfde model hadden gestuurd.
- Het ging telkens om prompts van meer dan 681.280 tokens.
- Getroffen was “een klein aantal klanten”. Hoeveel precies, zegt Cloudflare niet.
- Andere modellen op Workers AI waren niet getroffen, en Cloudflare vond “geen aanwijzingen voor doelbewust misbruik”.
Een prompt van meer dan 680.000 tokens klinkt als een randgeval. Dat is minder zeldzaam dan je denkt: een AI-agent die een lange taak uitvoert, stuurt bij elke stap meestal zijn hele voorgeschiedenis opnieuw mee, en die groeit snel.
De keuken en de zaal
Om te begrijpen wat er misliep, helpt een restaurant.
Cloudflare verwerkt een prompt in twee stappen, op aparte groepen grafische kaarten. De eerste groep leest de hele prompt in en zet die om in een verwerkte versie in het geheugen, de zogenaamde KV-cache. Dat is de keuken. De tweede groep krijgt die cache doorgestuurd en schrijft het antwoord, woord voor woord. Dat is de zaal.
Het restaurant werkte zo:
- Een groot gezelschap meldt zich aan. De zaal hoort hoeveel gasten er komen en dekt meteen de tafel, een bord per gast.
- De keuken kan maar 681.280 gasten aan (het is een groot restaurant), en dit gezelschap is groter. Ze weigert de bestelling. Dat is de juiste reactie.
- Door een fout in SGLang hoort niemand die weigering. De keuken vervangt de bestelling door één amuse, legt die op één bord en meldt dat alles klaar is.
- De zaal serveert alle gedekte borden. Eén ervan heeft de keuken gevuld. De andere zijn niet afgewassen, en daarop ligt nog wat de vorige gasten lieten liggen.
- De gast krijgt geen “sorry, zo’n groot gezelschap kunnen we niet aan”, maar een vlot opgediende maaltijd. In technische termen: een HTTP-code 200 (alles in orde) in plaats van 400 (je verzoek klopt niet).
Dat de borden niet afgewassen worden, is op zich geen fout. Normaal vult de keuken elk bord opnieuw voor het naar de zaal gaat, en houdt de software bij welk bord bij welke gast hoort. Afwassen wordt pas belangrijk als iemand een bord serveert dat de keuken niet gevuld heeft.
Het model zelf deed niets verkeerd. Het kreeg de restjes van iemand anders en maakte er, zoals het hoort, een samenhangend antwoord van.
Hallucinatie of datalek
Het lek kwam aan het licht via Gadi Evron, topman van het beveiligingsbedrijf Knostic. Evron werkte via OpenRouter, een tussenpersoon die verzoeken voor een model doorstuurt naar een van de aanbieders die dat model draaien. In de antwoorden doken bestandspaden op van een computer die niet van Evron was, en Chinese handleidingen waar niemand om gevraagd had. Op 7 september was duidelijk dat Cloudflare de aanbieder was, en op 8 september meldde Evron het probleem via het programma van Cloudflare op HackerOne.2
Knostic stond voor een lastige vraag, die ook de titel van zijn verslag is: hallucineert het model, of krijg ik de context van een andere klant? Een AI-model dat iets verzint, schrijft ook vlotte tekst die niets met je vraag te maken heeft. Knostic zette daarom een uniek merkteken aan het begin en het einde van elke prompt en vroeg het model om dat te herhalen. Onder ongeveer 700.000 tokens lukte dat. Daarboven niet, en de antwoorden gingen over iets helemaal anders. Een van die antwoorden verwees naar een openbaar codeproject dat pas na het model ontstaan was, met een aanpassing van enkele minuten na het verzoek van Knostic. Dat haalt een model niet uit zijn training.
Volgens Knostic zaten in de antwoorden onder meer persoonsnamen, namen van klanten en bedrijven, factuurnummers, bedragen en betaaldata, broncode, mappen op computers en verslagen van taken van AI-agenten. Het lijkt erop dat iemand een AI-agent administratie liet doen. Een deel van die administratie belandde bij een onbekende.
Wat Cloudflare wist
Op 9 september verklaarde Cloudflare een beveiligingsincident. Rond 16 uur Belgische tijd haalde het bedrijf het model offline, ruim vijf uur later stond het weer online, met een geheugen voor het inlezen dat nu ongeveer twee keer zo groot is als het contextvenster en met een aangepaste versie van SGLang.
Het rapport is opvallend eerlijk over drie dingen:
- Het verschil was bekend. Cloudflare wist voor de lancering dat het geheugen kleiner was dan het contextvenster, maar verwachtte dat SGLang te lange verzoeken met een foutmelding zou weigeren. Dat is een redelijke verwachting. Ze klopte niet.
- De tests keken naar het verkeerde. Ze controleerden de HTTP-codes en de snelheid, niet of het antwoord ergens op sloeg. Een test die nagaat of het restaurant snel serveert en of de rekening klopt, ziet niet wat er op het bord ligt. Cloudflare noemt dat nu zelf een leemte.
- De fout in SGLang was gemeld. Iemand anders had ze op 6 juli 2026 al publiek gemeld bij het project, zeven weken voor de lancering. Cloudflare vond die melding pas tijdens het onderzoek.
De makers van SGLang brachten intussen correcties uit, en Cloudflare raadt iedereen die SGLang gebruikt aan om bij te werken naar versie 0.5.22 of later en het geheugen naast het contextvenster te leggen. Het bedrijf werkt ook aan een controle in de software zelf, die bij elke lezing nagaat of een verzoek wel eigenaar is van de gegevens die het leest. Een prototype daarvan bestond al, maar werd in augustus uitgeschakeld omdat het niet betrouwbaar genoeg werkte.
Wat het rapport niet zegt: hoeveel klanten getroffen werden, welke gegevens bij een ander terechtkwamen en hoe de klanten van wie gegevens uitlekten, verwittigd werden. Het verwijst naar een melding op de statuspagina van Cloudflare.
Kmo-Kristof: Onze AI-assistent deed vorige week raar. Hij antwoordde met factuurnummers van een bedrijf dat we niet kennen.
Security-Sofie: Wat heb je gedaan?
Kmo-Kristof: Opnieuw gevraagd. Toen was het goed. AI hallucineert soms, toch?
Security-Sofie: Soms. En soms krijg je het bord van de vorige gast.
Kmo-Kristof: Hoe weet ik welke van de twee het was?
Security-Sofie: Van buitenaf eigenlijk niet. Dat is net het probleem.
Kmo-Kristof: En als het het bord van de vorige gast was?
Security-Sofie: Dan ligt jouw bord misschien bij de volgende.
Wat het betekent voor je zaak
- Weet in welke keuken je eet. Wie een model gebruikt via een tussenpersoon of via een tool die “een AI-model” inbouwt, weet vaak niet welke aanbieder de prompt verwerkt. Evron moest het zelf uitzoeken. Vraag je leverancier welke subverwerkers je gegevens te zien krijgen: die lijst hoort bij je verwerkersovereenkomst.
- Wat niet in de prompt zit, kan niet lekken. Wat Knostic zag, waren factuurnummers, klantnamen en bedragen: precies wat een agent meekrijgt om administratie te doen. Geef een AI-tool alleen wat hij nodig heeft, en leg in je AI-beleid vast welke gegevens erin mogen.
- Een raar antwoord is een signaal. Namen die je niet kent, een andere taal, mappen die niet van jou zijn: bewaar het antwoord en meld het aan je leverancier, in plaats van gewoon opnieuw te vragen.
- Vraag hoe je verwittigd wordt. Een verwerker moet je zonder onredelijke vertraging inlichten over een datalek. Daarna moet jij beoordelen of je het datalek moet melden bij de Gegevensbeschermingsautoriteit. Ga na hoe je leverancier dat in de praktijk doet (een statuspagina die niemand bekijkt, is geen verwittiging).
Het bord van de vorige gast
De borden werden niet afgewassen omdat dat normaal niet nodig is: de keuken vult ze toch opnieuw. Dat klopt, tot de keuken een bestelling weigert en de zaal het niet hoort. Dan krijg je een vlot opgediende maaltijd met de restjes van een ander, en een ober die zegt dat alles in orde is.
Het model deed wat het moest doen: van wat het kreeg, een samenhangend antwoord maken. Dat is precies waarom je het niet merkt. Het verschil tussen een verzinsel en andermans gegevens zit in de keuken, en daar kijk je als klant niet binnen. Wat je wel kunt doen, is weten in welk restaurant je eet, en niet meer op tafel leggen dan nodig.
Volgens Knostic vermeldde de documentatie van Cloudflare aanvankelijk zelfs 1.310.720 tokens. Cloudflare noemde dat een fout in de documentatie. Verzoeken boven 1.048.576 tokens werden geweigerd, zoals het hoort. ↑
HackerOne is een platform waarop bedrijven beveiligingsonderzoekers belonen voor het melden van lekken. Of Knostic een beloning kreeg, staat niet in de verslagen. ↑
Bronnen
- Cross-request KV cache exposure in the GLM-5.3 Workers AI model, and our remediation with SGLang (Cloudflare, 26 oktober 2026)
- Hallucination or Cross-Tenant? When an LLM Answers With Another User's Context (Knostic, 27 oktober 2026)
- Cloudflare Says GLM-5.3 Bug Leaked 155 Responses Across Tenant Sessions (Unite.AI)