Drie onderzoekers hebben maandenlang de sandbox niet aangevallen
Eilon Cohen, Dan Lisichkin en Ariel Fogel van Pillar Security stelden een scherp afgebakende vraag over de sandboxes die met AI-codeeragenten worden meegeleverd. Niet of de muren sterk genoeg zijn, maar of ze op de juiste plek staan. Op 20 juli 2026 begonnen zij hun antwoord te publiceren als een reeks die zij de Week of Sandbox Escapes noemen, elke dag een bijdrage, over Cursor, de OpenAI Codex CLI, de Google Gemini CLI en Google Antigravity.
In alle gevallen hield de agent zich aan de afspraken. Hij bleef binnen de werkruimte die hij had gekregen en overtrad geen enkele regel die de sandbox afdwingt. Hij schreef een bestand. Een proces buiten de sandbox las dat bestand vervolgens, vertrouwde het en voerde uit wat erin stond. De ontsnapping voltrok zich zonder dat de agent de grens ook maar raakte.
Pillar brengt de bevinding terug tot een zin: de impactradius van een agent is niet het agentproces, het is alles wat de agent kan wegschrijven en wat de host daarna vertrouwt. Die zin is het eigenlijke nieuws, en hij verklaart waarom het patchen van de afzonderlijke fouten het onderwerp niet afsluit.
Een socket verklaart drie van de vier producten
De duidelijkste bevinding is meteen de minst spectaculaire. Codex CLI, Cursor en Gemini CLI konden alle drie vanuit hun sandbox bij de lokale Docker-socket. Een daemon die met verhoogde rechten op de host draait, start een container voor iedereen die hem weet aan te spreken, en die container draait volledig buiten de sandbox. Een enkele advisory, GHSA-v4xv-rqh3-w9mc, geldt voor drie van de vier geteste producten. Hij is verholpen.
Codex had daarnaast een probleem van een heel andere orde. De allowlist voor veilige commando's beoordeelde commando's op hun naam. Die liet git show toe als leesbewerking, zonder in kaart te brengen wat gevaarlijke argumenten bij git show in werkelijkheid kunnen aanrichten. Dat is gerepareerd in versie 0.95.0, en de melding leverde een bounty op in de ernstcategorie hoog.
Wie beide naast elkaar legt, ziet het patroon. Het zijn allebei allowlists. En allebei zijn ze opgesteld op basis van wat een beheerder kan zien, een socketpad en een commandonaam, en niet op basis van wat daarmee mogelijk is zodra je er eenmaal bij kunt.
De ontsnappingen liepen via bestanden die uw editor toch al vertrouwt
Cursor leverde er drie op. Een agent kon de interpreter binnen een virtuele Python-omgeving herschrijven en afwachten tot de Python-extensie van de editor zelf, die zonder sandbox draait, hem zou uitvoeren. Hij kon een Git-map onder een niet-standaard naam aanmaken, zodat sandboxregels op basis van paden geen treffer meer gaven, en die map daarna door fsmonitor laten oppikken. En hij kon een hook-configuratie in de werkruimte neerzetten die de tooling zonder sandbox uitvoerde. Die laatste heeft CVE-2026-48124 en advisory GHSA-pc9j-3qc2-95wv gekregen, en alle drie zijn verholpen in Cursor 3.0.0.
De twee bevindingen van Google horen tot dezelfde familie. Het macOS-Seatbelt-profiel onder Antigravity was als denylist opgezet, en die laat alles toe wat er niet met zoveel woorden in staat, terwijl een taakconfiguratie in .vscode langs de bescherming van Secure Mode kwam. Google liet de onderzoekers weten dat het rapport van uitzonderlijke kwaliteit was, merkte de bevindingen vervolgens aan als moeilijk te misbruiken omdat er social engineering voor nodig is, en waardeerde ze op die grond af.
Die inschatting valt in haar eigen redenering te verdedigen en doet niet ter zake voor wie deze tools in gebruik heeft. Social engineering betekent bij een agent: een zin in een README, een reactie onder een issue of een alinea in de documentatie van een afhankelijkheid. Niet-vertrouwde tekst lezen is voor een agent doodgewoon dagelijks werk.
De grens die u gekocht hebt is niet de grens die u hebt
Elk van deze producten presenteert de sandbox als de maatregel die autonoom programmeren aanvaardbaar maakt. Dat is het antwoord dat een securityreview te horen krijgt, en het is de reden dat er goedkeuring is gegeven. Uit het onderzoek blijkt dat de sandbox precies een ding beheerst, namelijk het agentproces. Over de werkruimte is nooit iets beloofd.
De werkruimte is het echte aanvalsoppervlak, want zij wordt gelezen door een hele reeks processen die jaren voor de komst van agenten zijn ontworpen en die er stuk voor stuk van uitgaan dat een mens heeft ingetypt wat zij lezen. De Python-extensie. De Git-daemon. De Docker-socket. De pre-commit-hook. De installer voor afhankelijkheden. De CI-runner die de branch kloont. Geen van alle is gebouwd om de inhoud van een repository als vijandige invoer te behandelen, en toch krijgt elk van hen nu precies dat voorgeschoteld.
Het object van governance is dus verkeerd gekozen. Eigenaren hebben tot nu toe agenten goedgekeurd. Wat een beleid nodig heeft is de werkruimte, en de regel is kort: een repository waarin een AI-agent mag schrijven is niet-vertrouwde invoer voor elk proces dat er stroomafwaarts van ligt, op gelijke voet met een bestand dat een onbekende heeft geüpload.
Wat u deze week moet veranderen
Begin bij de socket, want een enkele advisory gold voor drie van de vier producten. Geen enkele codeeragent heeft toegang tot een Docker-socket nodig, en die intrekken is een kwestie van configuratie en geen project. Werk daarna de versies bij. Cursor 3.0.0 en Codex CLI 0.95.0 zijn de herstelde lijnen, en ontwikkeltooling wordt per gebruiker bijgewerkt en niet per vloot, dus een leverancier die een patch uitbrengt is nog niet hetzelfde als engineers die hem draaien.
De verandering die standhoudt, gaat over de plek waar agenten draaien. Een branch waar een agent aan heeft gezeten hoort als niet-vertrouwd bij de CI binnen te komen, en dat betekent in de praktijk dat de pijplijn geen hooks, taken of interpreters uit die branch uitvoert zolang een mens de diff niet heeft goedgekeurd. Dat is een beslissing over de pijplijn en niet over de tooling, en zij houdt stand bij de volgende publicatie.
Onder NIS2 is een incident dat in de editor van een ontwikkelaar begint en in uw productiepijplijn eindigt meldingsplichtig binnen dezelfde termijn als elk ander incident. De plicht maakt geen onderscheid tussen een aanvaller die een engineer heeft gephisht en een agent die een vergiftigde README heeft gelezen, dus de maatregel moet daar zitten waar de pijplijn haar kan afdwingen.
Lees hierna: De nginx-patch is er, de exploit komt in augustus | ServiceNow patchte eerst de eigen cloud, u pas 103 dagen later



