Abstracte technische illustratie op een donker marineblauw vlak: een vierkante doorschijnende behuizing die een sandbox voorstelt, staat bovenop een stapel afgeronde serverpanelen. Binnen de behuizing gloeit een kleine cluster bleke accoladeglyfen van sjablonen; één accolade is door een haarscheur in de wand van de behuizing geglipt en loopt verder als een dunne amberkleurige lijn die zich naar beneden uitstrekt tot in de serverstapel, waar hij uiteenvalt in verscheidene korte, op commando's lijkende streken. Een tweede behuizing ernaast is intact en gesloten. Er verschijnen geen tekst, mensen of organisatielogo's. Het OrcaRouter-logo is in de rechteronderhoek gecompositeerd.
AI Safety Incidents

GitLab's AI Gateway liet een zorgvuldig samengestelde flowconfiguratie uit zijn prompt-sandbox ontsnappen.

Auteur

Rowan Sterling

Publicatiedatum

Nieuwste modellen · 20Bekijk alle modellen →
Benchmarks: Artificial Analysis · dagelijks bijgewerkt
Terug naar alle berichten

Op 2 oktober 2026 publiceerde GitLab een kritieke patchrelease voor zijn AI Gateway — de middleware die verzoeken tussen een GitLab-instantie en de taalmodellen die zijn Duo-functies aanroepen, doorgeeft — met de naam CVE-2026-90970 en kende er een score van 9,9 op 10 aan toe. De kwetsbaarheid had, in de woorden van GitLab zelf, "een geauthenticeerde gebruiker met toegang tot het Duo Agent Platform in staat kunnen stellen om via een speciaal vervaardigde flowconfiguratie uit de sandbox voor prompttemplates te ontsnappen, wat zou leiden tot uitvoering van willekeurige opdrachten op de AI Gateway." Alleen organisaties die een zelfgehoste AI Gateway gebruikten, hoefden actie te ondernemen: GitLab had de gateways die het beheert voor GitLab.com, GitLab Dedicated en zelfbeheerde klanten die een door GitLab gehoste gateway gebruiken, al gerepareerd, en meldde dat in het beveiligingsadvies. In de melding van GitLab staat niet dat de kwetsbaarheid ooit is misbruikt, en de beoordeling die de Amerikaanse Cybersecurity and Infrastructure Security Agency dezelfde dag aan het CVE-record heeft toegevoegd, vermeldt exploitatie als "none". De eer voor de ontdekking ging naar de HackerOne-onderzoeker bekend als invisiblemeerkat. Het advies van GitLab, het NVD-record en de berichtgeving die daarop volgde, zijn met elkaar in overeenstemming over wat de kwetsbaarheid was en welke versies deze bevatten; even consistent zijn ze over wat niet bekend is, namelijk of iemand er ooit misbruik van heeft gemaakt. Dit record staat naast de andere gedocumenteerde kwetsbaarheden in agentinfrastructuur in het AI-incidentenarchief, waar elke vermelding zijn eigen bronnen, ernst, betrouwbaarheidsgraad en betwistingsmarkering heeft.

Wat het advies daadwerkelijk zegt, en wat het weglaat

Het beveiligingsadvies is kort. Gepubliceerd op GitLab's documentatiesite onder de titel "Kritieke patchrelease voor GitLab AI Gateway: 19.2.4, 19.3.2 en 19.4.1", noemt het één beveiligingsfix, met als kop "Probleem met onjuiste neutralisatie in aangepast flow-prompttemplate beïnvloedt AI Gateway" en gemarkeerd als Kritiek. Het geeft de CVSS 3.1-vector als AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H — netwerkbereikbaar, lage aanvalscomplexiteit, lage privileges vereist, geen gebruikersinteractie, scope gewijzigd en hoge impact op vertrouwelijkheid, integriteit en beschikbaarheid. Die vector is het lezen waard omdat hij duidelijk is over de aanvaller: lage privileges, maar toch privileges. Het advies zegt "een geauthenticeerde gebruiker met toegang tot Duo Agent Platform" en laat het daarbij. Het noemt niet de rol, de machtiging of de voorwaarden waarop zijn eigen formulering "onder bepaalde voorwaarden" betrekking heeft.

Het publiceert geen proof of concept, beschrijft niet de speciaal samengestelde flowconfiguratie en biedt geen workaround voor gateways die niet onmiddellijk kunnen worden bijgewerkt. The Hacker News merkt in zijn rapport van 2 oktober dezelfde lacunes op en voegt er een toe die operationeel van belang is: het advies biedt geen manier om te controleren of een gateway is aangevallen voordat deze werd gepatcht. Security Affairs, dat de volgende dag schrijft, constateert dezelfde hiaten.

De Common Weakness Enumeration-vermelding die aan de CVE is gekoppeld, is CWE-1336, onjuiste neutralisatie van speciale elementen die in een template-engine worden gebruikt. In het advies van GitLab komt het woord Jinja nergens voor. In de documentatie van de AI Gateway-repository zelf wel: het document over het prompt-register beschrijft promptconfiguratiebestanden die "Jinja-expressies ondersteunen voor meerdere rollen, zoals user en system", en beschrijft een Prompt-klasse die "Jinja gebruikt om de promptsjablonen te interpoleren met de invoerargumenten". Het gat dat de CVE beschrijft, is precies het gat waar die klasse van engines berucht om is — door de gebruiker aangeleverde tekst die een sjabloon bereikt dat wordt geëvalueerd in plaats van afgedrukt.

Waarom een commando op deze specifieke host 9,9 waard is

De AI Gateway is geen sidecar. Volgens de self-hosted documentatie van GitLab ontvangt het verzoeken van GitLab, stelt het de prompts samen en communiceert het met de modelbackend — een vLLM-server, A​mazon Bedrock, Azure O​penAI of een externe provider — en in een volledig self-hosted deployment is het de component die prompts en antwoorden binnen het eigen netwerk van de organisatie houdt. De installatiehandleiding voor de AI Gateway van GitLab vertelt beheerders ook om een ondertekeningssleutelpaar te genereren en de twee helften als omgevingsvariabelen aan de service door te geven, als AIGW_SELF_SIGNED_JWT__SIGNING_KEY en AIGW_SELF_SIGNED_JWT__VALIDATION_KEY (met equivalenten voor Duo Workflow). Security Affairs maakt de consequentie expliciet: commando-uitvoering op de gateway plaatst een aanvaller op een host die JWT-ondertekeningsmateriaal bevat en op het pad zit tussen de GitLab-instantie en de modelinfrastructuur.

Dat is het verschil tussen een sandbox-escape in een speeltje en een in productie. De escape hoeft geen model te bereiken; hij moet het proces bereiken dat de sleutels bevat waarmee de modelaanroepen worden ondertekend.

De productdocumentatie van GitLab stelt, los van het advies, dat het maken of bewerken van een aangepaste flow de rol Maintainer of Owner in het beherende project vereist, en dat het uitvoeren ervan Developer of hoger vereist. Het advies bevestigt die toewijzing niet, en The Hacker News merkt op dat er geen rol wordt genoemd buiten "Duo Agent Platform access". Een lezer die de eigen blootstelling inschat, moet de documentatie behandelen als het machtigingsmodel van het product en het stilzwijgen van het advies als precies dat: stilzwijgen, geen tegenspraak.

Vastgesteld, en niet vastgesteld

De eigen velden van het record zijn consistent met alles hierboven en voegen niets toe dat niet in het advies staat. Wat volgt is de opsplitsing die een lezer niet uit een samenvatting van één regel kan halen.

• Vastgesteld: een kwetsbaarheid met kritieke ernst in GitLab AI Gateway, openbaar gemaakt op 2 oktober 2026, CVSS 9.9, CWE-1336, bereikbaar door een geauthenticeerde gebruiker van Duo Agent Platform via een speciaal samengestelde flowconfiguratie, resulterend in uitvoering van commando's op de gatewayhost.

• Vastgesteld: de getroffen reeks — alle AI Gateway-versies vanaf 18.1.6 tot vóór 19.2.4, 19.3 tot vóór 19.3.2, en 19.4 tot vóór 19.4.1 — en de gecorrigeerde versies, 19.2.4, 19.3.2 en 19.4.1.

• Vastgesteld: GitLab-gehoste gateways zijn vóór publicatie gepatcht en hun klanten hoeven geen actie te ondernemen; beheerders van zelfgehoste installaties werden rechtstreeks benaderd vóór de releasepost, wat GitLab in het advies zelf vermeldt.

• Vastgesteld: de vermelding van de melder, aan invisiblemeerkat, en het ontbreken van enige verklaring over exploitatie in het wild.

• Niet vastgesteld: of iemand er misbruik van heeft gemaakt. Een CISA SSVC-beoordeling van 2 oktober 2026, zichtbaar in het NVD-record, geeft exploitatie als "geen", automatiseerbaar als "nee" en technische impact als "totaal"; de CISA Known Exploited Vulnerabilities-catalogus vermeldde CVE-2026-90970 niet in de herziening van 20 oktober 2026, wat ik rechtstreeks heb gecontroleerd. Het EPSS-model van FIRST stelde de kans op misbruik in de komende 30 dagen op 21 oktober 2026 op 0,94 procent — laag, en niet nul.

• Niet vastgesteld: hoeveel zelfgehoste gateways er bestaan, hoeveel er zijn blootgesteld, of er een is aangevallen vóór het patchen. Geen enkele bron in dit dossier geeft een aantal, en het advies van GitLab biedt geen detectiemethode.

HTML card headed 'CVE-2026-90970 · GitLab AI Gateway', titled 'What the record establishes — and what it does not', subtitled with the sources: the GitLab AI Gateway advisory of 2 October 2026 and the NVD record for CVE-2026-90970, with the archive classification confidence A, not disputed, real harm recorded as false. Two columns run side by side. The left column, headed 'Established' in blue, lists eight items: CVSS 9.9 critical with the vector AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H; CWE-1336, improper neutralisation of special elements used in a template engine; an authenticated user with Duo Agent Platform access escaping the prompt template sandbox through a specially crafted flow configuration; arbitrary command execution on the AI Gateway; affected AI Gateway 18.1.6 before 19.2.4, 19.3 before 19.3.2 and 19.4 before 19.4.1; fixed in 19.2.4, 19.3.2 and 19.4.1, released 2 October 2026; GitLab-hosted gateways already patched; and credit to the HackerOne researcher invisiblemeerkat through coordinated disclosure. The right column, headed 'Not established' in amber, lists eight items: no exploitation reported, since the advisory does not say the flaw was used in attacks; CISA's SSVC assessment of 'none', dated 2 October 2026 in the NVD entry, with automatable 'no' and technical impact 'total'; no proof of concept and no technical detail of the crafted flow configuration; no exposure count, since nothing in the cited sources says how many self-hosted gateways exist or ran an affected version; no detection method; no workaround; no named role beyond 'Duo Agent Platform access'; and no fix below 19.2.4. A footer reads 'Facts as published by GitLab and NVD. Card rendered by OrcaRouter.' The OrcaRouter logo is composited in the bottom-right corner.

Het getroffen bereik, en de versies waarvoor geen oplossing is vermeld

De versiearitmetiek is minder netjes dan de drie releases met een fix suggereren. Het getroffen bereik begint bij 18.1.6, en er is geen release met een fix gepubliceerd op enige tak onder 19.2.4. Elke gateway van 18.1.6 tot en met de 19.1-serie valt dus binnen het genoemde getroffen bereik, zonder dat er een gepatchte versie voor wordt genoemd. The Hacker News wijst op dezelfde consequentie en de vragen die daaruit volgen: GitLab's installatiedocumentatie zegt beheerders om de gateway-image te draaien waarvan de versie overeenkomt met hun GitLab-minorversie, en het advies zegt niet of een 19.2.4-gateway werkt met GitLab 19.1 of ouder, noch of er fixes voor de oudere takken gepland zijn. GitLab's beleid voor ondersteunde versies vermeldt, zoals The Hacker News opmerkt, momenteel 19.4, 19.3 en 19.2 — dezelfde drie takken die fixes kregen.

Herstel is een containervervanging in plaats van een patch: de gateway wordt geleverd als een eigen Docker-image of Helm-chart. De installatiegids van GitLab beschrijft het stoppen en verwijderen van de draaiende container, het ophalen van de nieuwe image met een self-hosted-vX.Y.Z-ee-tag en het opnieuw starten ervan met de omgevingsvariabelen intact; bij Helm-implementaties wordt de tag ingesteld in het image-veld van de chart. Noch de advisory, noch de installatiegids biedt een signatuur of indicator die een aangevallen gateway van een schone zou kunnen onderscheiden.

HTML card headed 'GitLab AI Gateway · affected and fixed', titled 'Three fixed releases, and older lines with none', subtitled 'Version ranges as published in the GitLab advisory of 2 October 2026. The advisory does not say whether fixes for the 18.x and 19.1 lines are planned.' Four horizontal bars follow, one per release line. The first, labelled '18.1.6 to 19.1' with the note 'no fixed release listed', is a single hatched amber bar reading 'affected, no patched version named' across the full width. The second, labelled '19.2 line' with the note 'affected before 19.2.4', is a short amber segment reading '18.1.6 – 19.2.3' followed by a blue segment reading 'fixed in 19.2.4'. The third, labelled '19.3 line' with the note 'affected before 19.3.2', is an amber segment reading '19.3.0 – 19.3.1' followed by a blue segment reading 'fixed in 19.3.2'. The fourth, labelled '19.4 line' with the note 'affected before 19.4.1', is an amber segment reading '19.4.0' followed by a blue segment reading 'fixed in 19.4.1'. A legend below reads 'Affected range' and 'Patched release', with the note 'GitLab-hosted AI Gateways were patched before publication.' A footer reads 'Card rendered by OrcaRouter.' The OrcaRouter logo is composited in the bottom-right corner.

Dezelfde bugklasse, acht maanden eerder

Dit is niet de eerste keer dat GitLab een 9.9 uitbrengt voor template-injectie in de AI Gateway. Op 6 februari 2026 bracht het AI Gateway 18.6.2, 18.7.1 en 18.8.1 uit voor CVE-2026-1868, in dat advies omschreven als een "Insecure Template expansion issue", waarbij de component Duo Workflow Service "kwetsbaar was voor onveilige template-expansie van door gebruikers aangeleverde gegevens via speciaal samengestelde Duo Agent Platform Flow-definities", bruikbaar voor denial of service of code-uitvoering op de gateway. De CVSS-vector is teken voor teken identiek aan die van oktober, en dat geldt ook voor de CWE. De melder was iemand anders: die werd intern gevonden, door GitLab-teamlid Joern Schneeweisz.

Het beveiligingsadvies uit oktober noemt dat van februari niet, en The Hacker News zegt dat expliciet. Of de twee een gemeenschappelijke grondoorzaak delen, een oplossing die geen stand hield, of slechts een taal en een dreigingsmodel — dat beantwoordt geen van beide openbare documenten. Wat vaststaat, is dat een template-engine in een AI-middlewarecomponent nu in hetzelfde jaar twee kritieke adviezen over commando-uitvoering met dezelfde score heeft opgeleverd, en dat er een externe onderzoeker nodig was om de tweede te vinden.

Wat is er veranderd, en wat moeten operators nog beslissen?

De concrete wijziging bestaat uit drie image-tags en een directe outreachronde. GitLab zegt dat het vóór publicatie contact heeft opgenomen met klanten van de zelfgehoste gateway, en het beveiligingsadvies werd dezelfde dag samen met de gepatchte images uitgebracht. Voor alle anderen — GitLab.com, GitLab Dedicated en zelfbeheerde instances die naar een door GitLab gehoste gateway wijzen — was de fix al server-side toegepast en volgens GitLab was er niets nodig.

Voor een self-hosted operator is de beslissing beperkter en minder comfortabel dan een normale patchcyclus. Er is geen workaround voor een gateway die niet onmiddellijk kan worden verplaatst. Er is geen vrijgegeven methode om vast te stellen of de host voorafgaand gecompromitteerd was, wat betekent dat de enige retrospectieve optie de gebruikelijke is: behandel de container als een systeem waarvan de integriteit onbewezen is, en zoek naar aanwijzingen voor uitvoering buiten zijn normale gedrag. En voor gateways op 18.x of 19.1 noemt het advies helemaal geen doelversie — een omissie die The Hacker News meldt en die de kennisgeving van GitLab niet adresseert.

De eigen classificatie van het archief is bewust nauwer dan die van de leverancier. Het registreert deze vermelding als een kwetsbaarheid, met vertrouwensniveau A en de bronnen eensgezind, niet betwist, zonder geregistreerde reële schade, en met een ernstveld van "hoog" tegenover "kritiek" bij GitLab en NVD. Dat zijn antwoorden op verschillende vragen: de score beschrijft wat de fout zou toelaten, en de beoordeling van het archief beschrijft wat er bekend is gebeurd. In het openbare dossier is er niets gebeurd — geen misbruik, geen slachtoffers, geen incidentrapport. De waarde van de vermelding is dat ze, met een CVE-nummer en een opgeloste versie, precies documenteert hoe een prompt-sjabloon een opdrachtregel werd in de middleware waarvan enterprise-AI-functies afhankelijk zijn.

Abstract illustration on a dark navy field: two rounded server racks stand on a plain surface. In front of them, a translucent panel etched with faint brace-shaped lines has a single hairline fracture running from its lower corner to the floor, and through that fracture a thin amber thread passes to a small glowing node at the base of the nearer rack. The second rack is untouched and unlit. No text, people or organisation logos appear. The OrcaRouter logo is composited in the bottom-right corner.