AWS-, Google- en Vercel-agentfouten zorgen ervoor dat aanvallers tools kunnen activeren zonder het model uit te voeren

Beveiligingsfouten in de agentinfrastructuur van Amazon Web Services (AWS), Google en Vercel zorgen ervoor dat niet-vertrouwde of vervalste instructies de tools van een agent bereiken zonder te controleren of een modelbeurt deze heeft geautoriseerd.

Bij verschillende aanvalspaden draaide het model helemaal niet, waardoor systeemprompts, inhoudfilters en vangrails op modelniveau nooit de kans kregen om in te grijpen.

De betrokken producten omvatten de InvokeHarness API van Amazon Bedrock AgentCore, de Agent Development Kit (ADK) van Google voor Python en de Vercel AI SDK-harnaspakketten voor de codex- en OpenCode-codeeragenten. AWS heeft de beheerde service gerepareerd, Google heeft de problemen opgelost in ADK 2.5.0 en Vercel heeft @ai-sdk/harness-codex gepatcht in versie 1.0.29 en @ai-sdk/harness-opencode in versie 1.0.28.

Dit zijn geen identieke kwetsbaarheden en delen niet dezelfde aanvalsomstandigheden. AWS betrof een geverifieerd extern verzoek, de paden van Google vereisten door aanvallers gecontroleerde sessiegebeurtenissen of door de gebruiker geschreven functieaanroepen, en de fouten van Vercel vereisten niet-vertrouwde code die al in een Linux-sandbox draaide.

De blootstelling wordt begrensd door wat elke agent al kan doen, dus een agent die geen gevoelige tools heeft, levert een aanvaller niets op.

Het ontbrekende bewijs achter een gereedschapsoproep

Hedi Ingber En Aviyam Ivgimede-oprichters van Stealth, presenteerden vandaag het platformonafhankelijke patroon, dat zij CoreBreak noemen, op Black Hat USA 2026. Beiden beantwoordden vragen van The Hacker News per e-mail.

In een normale agentstroom stuurt de softwareontwikkelingskit het verzoek van de gebruiker, de systeemprompt, de gespreksgeschiedenis en de beschikbare tooldefinities naar het model. Het model beslist of een tool moet worden aangeroepen en retourneert een gestructureerde instructie met de toolnaam en argumenten. De SDK voert het vervolgens uit.

De kwetsbare paden hebben de herkomst tussen de laatste twee stappen niet geverifieerd. De runtime ontving gegevens in de vorm van een door een model gegenereerde tooloproep en behandelde deze als gezaghebbend.

Een aanvaller hoefde het model niet te overtuigen de regels te overtreden; de aanvaller zou het verzendings- of autorisatiepad kunnen bereiken zonder een legitieme modelbeurt.

AWS Fixed AgentCore, Strands behoudt het CV-pad

Het beveiligingsbulletin van AWS wijst CVE-2026-18830, met een CVSS v4.0-score van 8,6, toe aan onvoldoende invoervalidatie in het Amazon Bedrock AgentCore-harnas.

Een geverifieerde externe gebruiker kan een inhoudsblok voor het gebruik van een tool in het laatste bericht van een InvokeHarness-verzoek plaatsen. De gebeurtenislus kan het genoemde hulpmiddel vervolgens rechtstreeks verzenden zonder het model te vragen.

AWS zegt dat het probleem de beheerde InvokeHarness API vóór 31 juli 2026 trof. Het voegde validatie aan de serverzijde toe die door de beller aangeleverde toolgebruiksblokken afwijst voordat ze de gebeurtenislus bereiken. De beperking is automatisch toegepast en vereist geen actie van de klant.

De oplossing voor de beheerde service dekt niet een vergelijkbaar model-skipping-pad in de open-source Strands Python-code, waarop volgens de onderzoekers het harnas van AgentCore is gebouwd. De huidige upstream event_loop.py roept een helper aan met de naam _has_tool_use_in_latest_message, en wanneer die controle slaagt, stelt de gebeurtenislus de stopreden in op tool_use, neemt het laatste bericht direct over en slaat de uitvoering van het model over.

Een commentaar boven die branch luidt: “Sla modelaanroep over als het laatste bericht ToolUse bevat.” The Hacker News bevestigde dat de branch vanaf 5 augustus 2026 nog steeds aanwezig is in de hoofdtak van de repository.

Direct boven de controle bevindt zich een smallere tak die een toolgebruiksbericht herstelt dat de agent vóór een interrupt heeft opgeslagen, in plaats van te nemen wat er in het laatste bericht staat.

Een pull-request uit april waarschuwde dat extern geïnjecteerde toolUse-blokken de tool-uitvoering konden bereiken zonder dat het model werd aangeroepen. De voorgestelde wijziging zou de snelkoppeling hebben verwijderd, maar deze werd op 19 juni niet meer samengevoegd.

De aanwezigheid van de snelkoppeling zorgt ervoor dat niet elke Strands-applicatie op afstand kan worden misbruikt. De blootstelling hangt af van de vraag of een applicatie niet-vertrouwde bellers toestaat gestructureerde gespreksberichten in te dienen, de opgeslagen geschiedenis te wijzigen of anderszins een toolUse-blok te plaatsen op de positie die wordt ingenomen door de gebeurtenislus.

AWS heeft geen afzonderlijke CVE, getroffen versiereeks of patchkennisgeving gepubliceerd voor zelfstandige Strands-implementaties. Ingber en Ivgi zeiden dat AWS hen vertelde dat het gedrag aan de kant van de klant valt binnen het gedeelde verantwoordelijkheidsmodel, en dat het bedrijf reageerde met een documentatiewijziging in plaats van een codefix.

AWS documenteerde het gedrag in plaats daarvan. Een Strands-pagina met de titel Trusted Message History, gearchiveerd onder Veiligheid en Beveiliging, vertelt ontwikkelaars dat een tool-call-blok als het meest recente bericht ervoor zorgt dat de agent dat tool direct uitvoert bij de volgende aanroep, zonder dat er een model-oproep tussen zit, en dat de auteur van het blok het tool en zijn argumenten regelrecht kiest. Het instrueert ontwikkelaars om berichtgeschiedenis op te bouwen op basis van hun eigen applicatie in plaats van op basis van invoer die een beller kan vormgeven.

Twee afzonderlijke paden in de ADK van Google

De eerste Google-fout, bijgehouden als CVE-2026-18236 met een CVSS v4.0-score van 9,3, heeft invloed op ADK voor Python-versies vóór 2.5.0. Met ADK kan een ontwikkelaar een gevoelige tool markeren omdat deze bevestiging vereist, waardoor de oproep wordt vastgehouden totdat iemand deze goedkeurt. Een aanvaller die gebeurtenissen in de sessiegeschiedenis van een agent kan manipuleren of injecteren, kan die goedkeuring vervalsen en ervoor zorgen dat een ongeautoriseerde tool wordt uitgevoerd.

De bevestigingsprocessor heeft niet geverifieerd dat het doelhulpmiddel toebehoorde aan de uitvoerende agent, dat het hulpprogramma daadwerkelijk bevestiging nodig had, of dat de naam en argumenten ervan overeenkwamen met de oorspronkelijke oproep die tijdens de sessie was opgenomen. De patch van Google heeft deze controles toegevoegd.

Google heeft een tweede, gerelateerde oplossing uitgebracht in dezelfde ADK 2.5.0-release, die op 16 juli 2026 uitkwam. Stromen in de hervatbare modus accepteerden door de gebruiker geschreven gebeurtenissen die function_call-onderdelen bevatten, die kunnen worden geïnterpreteerd als instructies om geregistreerde tools uit te voeren

Google weigert nu functieaanroepen in door gebruikers geschreven berichten, waardoor wordt voorkomen dat wat de commit omschrijft als het omzeilen van de LLM en het direct uitvoeren van willekeurige geregistreerde tools.

In de release-opmerkingen wordt de omzeiling van de hervatbare modus apart vermeld van de oplossing voor vervolgvervalsing. De onderzoekers zeiden dat beide bevindingen van hen waren, en dat Google een CVE heeft uitgegeven voor vervolgvervalsing omdat dit de standaardconfiguratie beïnvloedt, terwijl de hervatbare modus een nieuwere, niet-standaardfunctie is.

Het openbare record voor CVE-2026-18236 omvat alleen het vervolg-vervalsingspad en mag niet worden gebruikt als overkoepelende identificatie voor beide problemen.

De relais van Vercel vertrouwde op het procespad

De bevindingen van Vercel zijn van invloed op @ai-sdk/harness-codex tot en met versie 1.0.28, bijgehouden als CVE-2026-64650, en @ai-sdk/harness-opencode tot en met versie 1.0.27, bijgehouden als CVE-2026-64651. Beide hebben een CVSS v4.0-score van 6,3.

Het harnasrelais vertrouwde een proces toen de opdrachtregel het pad bevatte van een goedgekeurd helperscript, host-tool-mcp.mjs in het geval van OpenCode en de Codex-opdrachtregel in het andere geval.

Schadelijke code die al in de sandbox draait, zou aan die controle kunnen voldoen en door de host blootgestelde tools kunnen aanroepen, waaronder geheime zoekopdrachten, implementatiebewerkingen en cloud-API-aanroepen, zonder een overeenkomstige, door het model geautoriseerde gebeurtenis.

Dit was een lokale omzeiling van de sandbox-naar-host-autorisatie, een ander pad dan het externe verzoek dat AWS had opgelost. Voor de exploitatie was Linux nodig, een actieve harnassessie met ten minste één door de host geleverde tool en niet-vertrouwde code die al in de sandbox werd uitgevoerd, zoals een kwaadaardige afhankelijkheid, een buildscript of een levenscyclushook.

Vercel heeft de fallback van het procespad verwijderd. Het gepatchte relais accepteert alleen een verzoek als het overeenkomt met een exacte, kortstondige, eenmalige autorisatie voor de gereedschapsnaam en invoer die is waargenomen in een modelgebeurtenis.

The Hacker News bevestigde via het npm-register dat beide vaste releases op 10 juli 2026 zijn gepubliceerd. Beide pakketten zijn sindsdien ver voorbij hen gegaan, naar 1.0.60 en 1.0.59 vanaf 5 augustus 2026.

Een afzonderlijke Vercel-fix kwam een ​​maand eerder binnen. Pull request 15947, samengevoegd op 10 juni, verhardde het replay-pad van de SDK voor het goedkeuren van tools tegen vervalste goedkeuringen van de klant, en de erkenning ervan wordt toegeschreven aan Claude, de AI-assistent van Anthropic, samen met het beveiligingsteam van Anthropic.

Vercel beschreef de resulterende controles, opt-in HMAC-ondertekende toolgoedkeuringen en hervalidatie van toolinvoer voordat de uitvoering wordt hervat, in de AI SDK 7 release notes. Ingber en Ivgi schrijven die bevinding toe aan Anthropic’s Mythos, onthuld onder Project Glasswing, in plaats van aan hun eigen team.

Beide CVE-records bevatten fouten. Het Codex-item noemt het OpenCode-pakket in zijn beschrijving, en de gestructureerde gegevens van het OpenCode-item vermelden een vaste versie die de eigen tekst tegenspreekt. The Hacker News heeft elk pakket aan zijn CVE gekoppeld aan de twee GitHub-adviezen, waarin de getroffen en gepatchte versies rechtstreeks worden vermeld.

De controle moet bij het gereedschap zitten

Op het moment van schrijven gaan de adviezen en CVE-records achter deze oplossingen niet in op de vraag of een van de paden werd gebruikt tegen een live-implementatie voordat deze werd gepatcht.

Ingber en Ivgi zeiden dat ze proof-of-concept-code naar de betrokken leveranciers hebben gestuurd en deze niet publiekelijk hebben vrijgegeven.

De uitvoeringslaag behandelde in elk geval tool-call-vormige gegevens als voldoende autoriteit. Het record van Google en beide Vercel-adviezen zijn geclassificeerd onder CWE-863, onjuiste autorisatie, en AWS heeft zijn eigen advies ingediend als onjuiste invoervalidatie.

Elke beveiliging die alleen in een systeemprompt of modelreactie is geïmplementeerd, verdwijnt wanneer een beller het verzendpad kan bereiken zonder een legitieme modelbeurt.

De drie remedies komen samen op dezelfde controle. Google controleert een bevestiging aan de hand van de tool en de argumenten die in de sessie zijn vastgelegd, Vercel bindt elk relay-verzoek aan een eenmalige autorisatie die is gekoppeld aan een waargenomen modelgebeurtenis, en AWS verwerpt het toolgebruikblok van de beller voordat de gebeurtenislus dit ziet. Geen van hen laat de vorm van de binnenkomende gegevens een modelwending in de weg staan.

  • Patch de getroffen pakketten: Upgrade Google ADK voor Python naar versie 2.5.0 of hoger, @ai-sdk/harness-codex naar 1.0.29 of hoger, en @ai-sdk/harness-opencode naar 1.0.28 of hoger.
  • Door de beller geschreven tooloproepen weigeren: Behandel de gespreksgeschiedenis, hervatbare gebeurtenissen, bevestigingsreacties en gestructureerde blokkades voor het gebruik van tools als niet-vertrouwde invoer wanneer ze een externe grens overschrijden.
  • Autoriseren op uitvoeringstijd: Bind elke toolaanroep aan de exacte modelgebeurtenis, toolnaam, argumenten, sessie en autorisatiestatus die deze hebben geproduceerd.
  • Verminder geërfde autoriteit: Geef elke agent alleen de tools, cloudrollen, inloggegevens en schrijfrechten die nodig zijn voor zijn taak.

Dit is geen snelle injectie. Er is geen probabilistisch model om voor de gek te houden en geen sterker model dat zich daartegen verzet, omdat het model nooit aan de beurt komt.

Thijs Van der Does