Cloudflare meldt in een rapport van 26 oktober dat 155 antwoorden van het Workers AI-model GLM-5.3 gegevens uit eerdere verzoeken van andere klanten bevatten.
Een antwoord aan een Nederlandse organisatie die tussen 27 augustus en 9 september GLM-5.3 via Workers AI gebruikte, kon tekst uit een eerdere aanvraag van een andere klant bevatten. Cloudflare koppelt alle 155 getroffen antwoorden aan prompts langer dan 681.280 tokens en zegt dat geen ander Workers AI-model is geraakt. De publicatie noemt geen klantnamen of categorieën gegevens, zodat de trigger bekend is maar niet de inhoud per antwoord.
De modelcontext was groter dan de cachepool
Een KV-cache is het tijdelijke werkgeheugen dat een taalmodel gebruikt om eerdere tokens uit een prompt niet opnieuw te hoeven berekenen. Het is geen Cloudflare Workers KV-database. In deze uitvoering las een groep GPU's de prompt en bouwde de cache op; een tweede groep gebruikte die cache om het antwoord te genereren. De eerste stap heet prefill, de tweede decode. SGLang verdeelt de GPU-cache in vaste pagina's. Die worden na gebruik niet gewist; een volgende aanvraag hoort ze volledig te overschrijven.
Bij GLM-5.3 stond het contextvenster op 1.048.576 tokens, maar de cachepool van de prefill-GPU's kon 681.280 tokens bevatten. De twee limieten kwamen uit verschillende instellingen. SGLang reserveerde zijn cachepool uit het resterende GPU-geheugen bij het opstarten; niets dwingt die pool gelijk te zijn aan het ingestelde contextvenster. Een prompt die onder de contextlimiet bleef maar de kleinere pool overschreed, paste dus wel binnen het modelvenster maar niet in de cachepool.
In augustus hield Z.ai de GLM-5.3-gewichten twee weken achter nadat de cybercapaciteiten harder groeiden dan verwacht. Die afweging ging over het model; de fout die Cloudflare beschrijft zat in de beheerde omgeving: geheugenconfiguratie plus SGLang.
Een afgewezen prompt bleef doorstromen
Als een prompt de cachepool overschreed, wees SGLang hem af en verving de prompt door een placeholder van één token. Op één server kreeg de klant een foutmelding. In Cloudflares gescheiden prefill/decode-opzet keken beide toelatingswachtrijen alleen of een aanvraag was afgerond, niet afgewezen. De placeholder bleef daardoor actief.
Prefill bouwde cachedata voor dat ene token en meldde de overdracht als voltooid. Decode had pagina's gereserveerd op basis van de oorspronkelijke promptlengte. De meeste waren niet overschreven en bevatten nog delen van eerdere prompts of antwoorden. Decode las die pagina's en stuurde een antwoord terug. SGLang beschrijft hoe een afgewezen aanvraag toch door de prefill- en decodewachtrij kwam en oude KV-pagina's liet lezen.

De publicatie beschrijft de blootstelling via modelantwoorden: tekst uit recente verzoeken van andere gebruikers kon daarin terugkomen. Ze beschrijft geen directe klanttoegang tot het GPU-geheugen.
Cloudflare vergrootte de pool en patchte SGLang
Gadi Evron meldde de fout op 8 september via HackerOne. Cloudflare bevestigde die de volgende ochtend, haalde GLM-5.3 offline en herstelde het model diezelfde dag. De prefillpool is nu circa 2,04 miljoen tokens, bijna tweemaal de contextlengte; Cloudflare vergelijkt pool- en contextgrootte rechtstreeks vóór nieuwe deployments.
De enginefix stopt afgewezen aanvragen vóór de overdracht. Cloudflare voegde voor alle SGLang-modellen controles toe op poolgrootte en cachevrijgave. Het adviseert beheerders die SGLang zelf draaien te upgraden naar v0.5.22 of hoger en beide pools te meten. De officiële tag van SGLang kwam uit op 19 oktober, een week vóór de publicatie.
Een andere route beschermt data tijdens inferentie. Cohere's Model Vault versleutelt prompts en antwoorden tijdens verwerking in hardwarematige vertrouwensomgevingen; de documentatie zegt dat ze ook tijdens verwerking niet leesbaar zijn buiten de enclave. Dat adresseert inzage door de cloudoperator; de fout bij Cloudflare ging over cachepagina's die niet bij de aanvraag hoorden. Het zijn verschillende lagen van databeveiliging.
Cloudflare geeft geen klantentelling
Cloudflare zegt geen bewijs te hebben gevonden voor doelbewuste uitbuiting. Na aftrek van eigen tests en die van de onderzoeker leken de overige verzoeken qua volume en timing op gewoon gebruik van lange contexten. Dat is Cloudflares eigen incidentanalyse. SGLang schrijft dat Cloudflare het klantimpactrapport publiceert; het eigen verslag focust op de technische route en geeft geen onafhankelijke telling van getroffen antwoorden.
De publicatie telt 155 antwoorden, maar noemt geen klanten, datatypen of hoeveelheid per antwoord. Een teruggekomen fragment betekent niet automatisch dat een volledig dossier is uitgelezen. De melding toont de trigger, niet de gegevens die daadwerkelijk terugkwamen.
Ook bij CosmosEscape, waar één platformbrede sleutel toegang kon geven tot elke Azure Cosmos DB-database, lag de klantgrens in gedeelde infrastructuur. Daar zat de fout in een databasegateway; bij Cloudflare in oude modelcachepagina's na een afwijzing. De routes verschillen, maar beide omgevingen worden door de aanbieder beheerd.
Workers AI heeft de fout hersteld en Cloudflare zegt dat andere modellen niet zijn geraakt. Een Nederlandse klant kan de eigen verzoekhistorie toetsen aan twee kenmerken: GLM-5.3-gebruik tussen 27 augustus en 9 september en prompts boven 681.280 tokens. Dat markeert de aanvragen binnen de beschreven trigger, niet welke gegevens in een antwoord zijn teruggekomen. De HTTP-status 200 gaf in dit geval geen uitsluitsel over de herkomst van de tekst in het antwoord.
Veelgestelde vragen
AI-diensten met duidelijke grenzen
Ik denk met je mee over modelkeuze en gegevensstromen, ontwerp de architectuur en realiseer die end-to-end. Waar het kan, houd ik de verwerking self-hosted zodat je zicht houdt op waar data terechtkomt.
Dit artikel is geproduceerd samen met het Agent Team. Meer over de redactie.
