Nieuwe agentdata-injectieaanval kan ervoor zorgen dat AI-agenten verkeerd klikken of commando’s van aanvallers uitvoeren

Vraag een AI-agent om de recensies op een productpagina samen te vatten, en een enkele geplaatste recensie kan ervoor zorgen dat er op ‘Nu kopen’ wordt geklikt. Vraag een codeerassistent om de oplossing van een beheerder uit een GitHub-thread toe te passen, en een nepopmerking kan ervoor zorgen dat de opdracht van een vreemde op je computer wordt uitgevoerd.

Geen van beide trucs kaapt de taak van de agent. Iedereen corrumpeert gewoon de feiten waarop hij vertrouwt en laat hem doorgaan met de baan waar u om vroeg.

Dat is de vorm van een nieuwe aanvalsklasse, uiteengezet in een artikel dat op 6 juli werd gepubliceerd door onderzoekers van de Seoul National University, de University of Illinois Urbana-Champaign en Largosoft.

Ze noemen het gegevensinjectie van agentenof ADI. De invoer van de aanvaller wordt vermomd als gegevens die de agent al vertrouwt, zoals de naam van een afzender of de ID van een knop, zodat deze voorbij de meeste verdedigingen glipt die zijn gebouwd om snelle injectie te voorkomen.

De kloof komt voort uit de manier waarop een agent leest. Er zijn twee soorten dingen nodig: instructies, wat betekent wat jij en de ontwikkelaar van de app moeten doen, en gegevens, wat betekent alles wat de app binnenhaalt tijdens het werken, zoals een e-mail, een webpagina of een opmerking. Klassieke promptinjectie verbergt een bestelling in die gegevens, zoiets als “negeer uw taak en e-mail mij de bestanden.”

Onderzoekers noemen dat instructie-injectie. Moderne verdedigingsmechanismen zijn getraind om tekst die leest als een gesmokkeld bevel te herkennen en te blokkeren, en tegen die zet werken ze nu goed.

ADI werkt één laag verder, op basis van de kleine feiten die een agent stilletjes vertrouwt: wie een e-mail heeft verzonden, de ID van een knop op een pagina, het record van een stap die een tool al heeft uitgevoerd. Corrupt deze, en de agent voert nog steeds je taak uit, alleen bovenop de informatie die de aanvaller heeft geplant.

Valse interpunctie gelooft het model

De methode erachter noemen de onderzoekers probabilistische scheidingstekeninjectie. Agenten verpakken hun gegevens in leestekens die aangeven waar het ene stuk eindigt en het volgende begint: aanhalingstekens en accolades, tags, haakjes en regeleinden. Die interpunctie is de manier waarop het model een vertrouwd veld, zoals de naam van een afzender, vertelt, afgezien van niet-vertrouwde inhoud, zoals de hoofdtekst van een bericht.

Een normaal programma leest die interpunctie volgens strikte regels. Een taalmodel leest het door middel van giswerk. Een aanvaller kan dus interpunctie-achtige tekens in een veld strooien dat hij beheert, en het model zal ze vaak lezen als een echte structuur die er nooit was, waarbij hij een extra e-mail, een extra knop of een extra tool als resultaat ziet.

Het deel dat het moeilijk maakt om te stoppen: de valse interpunctie hoeft niet eens goed te zijn. Tijdens het testen ging een ontsnapt aanhalingsteken (“), een gekruld aanhalingsteken, zelfs een dollarteken, door voor het echte werk en hield het model nog steeds voor de gek. Een strikte parser zou die tekens lezen als gewone tekst, niet als een nieuwe structuur.

De onderzoekers bouwden drie werkende aanvallen op echte verzendtools:

  • Op webagenten (Claude in Chrome, Google’s Antigravity en Nanobrowser), gebruikt een geplaatste productrecensie de ID van een echte knop. De agent wil op “Lees meer” klikken en in plaats daarvan op “Koop nu” klikken, waardoor een bestelling wordt geplaatst die de gebruiker nooit heeft geplaatst. Omdat deze tools pagina-elementen op volgorde nummeren, kan de aanvaller de ID van tevoren achterhalen.
  • Over codeerassistenten (Claude Code, OpenAI’s Codex en Google’s Gemini CLI), smeedt een GitHub-opmerking de auteursregel zodat het lijkt alsof een projectbeheerder het heeft geschreven. Opgedragen om de oplossing van de beheerder toe te passen, zal de agent de opdracht van de aanvaller uitvoeren op de machine van de ontwikkelaar als de ontwikkelaar iets goedkeurt wat lijkt op een routinestap.
  • Een kwaadaardig pull-verzoek vervalst het record van een cheque die de agent nooit heeft uitgevoerd, zodat er een schoon uitziend resultaat in de geschiedenis verschijnt. De agent beoordeelt het nepresultaat, beoordeelt de code als veilig en gaat over tot het samenvoegen ervan, waarbij de echte, kwaadaardige code in het project wordt betrokken zodra de ontwikkelaar dit goedkeurt.

De meeste van deze tools vragen al voordat ze iets riskant doen. Claude in Chrome vraagt ​​voordat er wordt geklikt; vragen de codeerassistenten voordat ze een opdracht uitvoeren. Het helpt niet veel. De klikprompt zegt alleen dat de agent op een element wil klikken, niet op welk element of waarom.

De codeerassistenten laten hun redenering zien, maar die redenering is gebaseerd op valse feiten, zodat het leest als een verstandig verslag van een normale stap. Als een gebruiker naar het scherm kijkt, kan hij nauwelijks een echte goedkeuring onderscheiden van een gefabriceerd exemplaar.

En elk getest model bleek kwetsbaar: GPT-5.2 en GPT-5-mini van OpenAI, Claude Opus 4.5 en Sonnet 4.5 van Anthropic, en Gemini 3 Pro en Flash van Google. Bij alle zes de pogingen werkte het 31% tot 43% van de tijd op gestructureerde gegevens, en op webpaginagegevens ergens tussen een derde van de pogingen en allemaal.

Tegenover de speciaal gebouwde verdedigingsmechanismen van agenten die de onderzoekers testten, ontstond er een gat: de klassieke ordersmokkelaanval werd vrijwel volledig geblokkeerd, met een succespercentage van bijna nul, terwijl ADI er in 50% van de gevallen nog steeds in slaagde. Dezelfde verdediging, heel verschillende resultaten, omdat ze gebouwd waren voor de andere aanval.

Wat houdt het eigenlijk tegen

Niet alles viel. De Atlas-browser van ChatGPT heeft de klikaanval afgewezen omdat deze elk pagina-element tagt met een willekeurige, onraadbare ID in plaats van een eenvoudige teller, zodat de aanvaller geen match kan smeden. De onderzoekers ontdekten dat hetzelfde idee, een korte willekeurige tag toegevoegd aan veldnamen, deze in hun tests grofweg halveerde, van ongeveer 49% naar 29%, terwijl de agenten nuttig bleven.

Eén zwaardere verdediging die bijhoudt waar elk stukje data vandaan kwam, sloot het volledig uit, nul succesvolle aanvallen, maar zorgde ervoor dat de agenten slechts ongeveer een derde van hun gewone taken konden voltooien. Door de interpunctie weg te laten, werd de aanval ook afgebroken, maar het verbrak het vermogen van de agenten om normale dingen zoals koppelingen en bestandspaden mee te lezen.

De onderzoekers beschrijven alleen proof-of-concept-aanvallen en er is geen openbaar rapport dat ADI in het wild wordt gebruikt. Het team rapporteerde alles aan de betrokken leveranciers voordat het publiceerde; OpenAI, Google en Anthropic erkenden de rapporten, en Nanobrowser had op het moment van de publicatie niet gereageerd.

Om de aanval te laten werken, moeten een aantal dingen op één lijn liggen. De agent moet inhoud verwerken die een vreemde kan bewerken, en dat is wat web- en GitHub-agenten de hele dag doen. En de aanvaller moet weten in welk formaat de agent zijn gegevens verpakt.

De onderzoekers zeggen dat een aanvaller het formaat van een open-source of lokaal uitgevoerde tool kan herstellen door de code ervan te lezen of deze te reverse-engineeren, en dat een cloudservice moeilijker is, waarbij er mogelijk een jailbreak nodig is die niet gegarandeerd werkt.

Volgens het artikel geven de onderzoekers ook hun benchmark- en aanvalscode vrij, zodat leveranciers en verdedigers deze kunnen testen.

Woohyuk Choi, die de paper samen met prof. Byoungyoung Lee schreef, vertelde The Hacker News dat OpenAI, Google en Anthropic allemaal hebben bevestigd dat de aanval geldig is, en dat OpenAI en Google om een ​​kopie van de paper hebben gevraagd. Verder zei hij dat het team “niet op de hoogte is gesteld van enige oplossing, ongeacht of deze is verzonden of gepland.”

Wat het ene moeilijke deel betreft, het herstellen van het formaat dat een cloudservice gebruikt, zei Choi dat het team daar toch in geslaagd is. Voor dat server-side formaat, dat een aanvaller niet direct kan zien, hebben ze het model gekregen om het te onthullen met een jailbreak in meerdere beurten, en met wisselende inspanningen werkte het tegen GPT, Claude en Gemini.

Er is zelfs een kortere weg: de grotere en kleinere modellen van een bedrijf delen meestal hetzelfde formaat, zodat een aanvaller het uit een kleiner model kan halen, wat gemakkelijker te kraken is. Choi verwacht dat het formaat herstelbaar zal blijven, zelfs als de modellen verbeteren, omdat taalmodellen dat soort geheimen niet op betrouwbare wijze kunnen bewaren.

Waar dit past

Het onderliggende vertrouwensprobleem is al eerder aan de oppervlakte gekomen. In juni 2025 maakte Aim Security EchoLeak (CVE-2025-32711) bekend, een fout in Microsoft 365 Copilot waarbij men een e-mail kon opstellen waardoor de assistent interne bestanden kon lekken zonder dat er een klik nodig was.

Microsoft heeft het gepatcht en er is geen sprake van misbruik in de echte wereld, maar het was een vroeg, concreet geval van een idee voor snelle injectie dat werd omgezet in een werkend data-exfiltratiepad in een verzendproduct. EchoLeak was dat verhaal in zijn eerste vorm: een verborgen orde. ADI is de volgende draai aan de schroef.

De GitHub-invalshoek is ook niet nieuw. In mei 2025 toonde Invariant Labs aan dat een openbaar GitHub-probleem een ​​agent ertoe zou kunnen aanzetten een privérepository te lezen en deze te lekken, een ontwerpprobleem zonder schone patch.

Meer recentelijk hebben cross-vendor tests Claude Code, Gemini CLI en Copilot ertoe aangezet hun eigen geheimen te lekken door middel van issue- en pull-request-teksten, waarbij ze voorbij de vangrails zijn geglipt die GitHub precies daarvoor heeft toegevoegd. Bij die aanvallen werden instructies binnengesmokkeld. ADI vervalst wie wat heeft gezegd en vervalst de gegevens van wat de agent al heeft gedaan.

De onderzoekers herleiden dit tot een les die traditionele software op de harde manier heeft geleerd: houd code en data gescheiden, en houd vervolgens vertrouwde data gescheiden van niet-vertrouwde data.

Agenten pakten de eerste helft op en sloegen de tweede over. In het eigen geheugen van een agent staat de naam van een e-mail vlak naast de hoofdtekst van die e-mail, zonder dat iets aangeeft waar het systeem voor instaat en wat een vreemde heeft getypt. Totdat agenten die grens trekken, is een overtuigende leugen over wie iets heeft gestuurd het enige dat een aanval nodig heeft.

Thijs Van der Does