Verborgen tekst op een webpagina was genoeg om Kiro, de agentische coderings-IDE van AWS, zijn eigen configuratiebestand te laten herschrijven en de code van een aanvaller op de machine van een ontwikkelaar uit te voeren, zonder dat er een goedkeuringsstap was die dit kon stoppen.
Intezer ontdekte in onderzoek met Kodem Security dat een zo gewoon verzoek als het vragen aan Kiro om een pagina samen te vatten, kon eindigen in het uitvoeren van code op afstand. AWS heeft het probleem verholpen en er is geen CVE aan toegewezen.
Het veiligheidsmodel van Kiro berust op een mens die op ’toestaan’ klikt. De agent kan shell-opdrachten uitvoeren, URL’s ophalen en bestanden bewerken, en het ontwerp gaat ervan uit dat een ontwikkelaar alles wat riskant is, beoordeelt voordat het gebeurt. Die goedkeuringsstap is de beveiligingsgrens, en door de fout kan een aanvaller er voorbij glippen zonder dat de ontwikkelaar ooit een keuze wordt geboden.
Het zwakke punt was het bestand dat Kiro vertelt welke externe tools moeten worden geladen. Kiro leest de lijst met Model Context Protocol-servers, en de exacte opdracht die wordt gebruikt om ze allemaal te starten, uit ~/.kiro/settings/mcp.json.
Wanneer dat bestand verandert, laadt Kiro het opnieuw en start alles wat het beschrijft op de host, met de rechten van de ontwikkelaar. Op het moment van het onderzoek kon Kiro zelfstandig naar mcp.json schrijven met zijn fsWrite-tool, zonder goedkeuring vereist, en het automatisch opnieuw laden.
Iedereen die de inhoud van dat bestand kon beïnvloeden, kon een server registreren waarvan het startcommando willekeurige code was, en deze zou worden uitgevoerd zodra Kiro opnieuw werd geladen.
Tekst in de context van Kiro plaatsen is het makkelijke gedeelte. De agent haalt externe inhoud binnen wanneer een ontwikkelaar hem vraagt een URL op te halen, documentatie te lezen of op internet te zoeken. Intezer’s proof of concept plaatste de instructies in witte tekst van één pixel (color:#fff;font-size:1px) op een verder gewone API-documentatiepagina.

De ontwikkelaar ziet een schone API-referentie. Kiro leest het verborgen blok als een installatietaak, schrijft de kwaadaardige server naar mcp.json en laadt opnieuw. Binnen enkele seconden start de malafide server en wordt de code van de aanvaller uitgevoerd.
In de demo van Intezer belde de payload slechts elke tien seconden naar huis met de hostnaam, gebruikersnaam en platform van de machine, net genoeg om de uitvoering te bewijzen. Dezelfde primitief zou elk commando kunnen uitvoeren dat beschikbaar is voor de ontwikkelaar, genoeg om inloggegevens en broncode te stelen, persistentie te planten of te draaien in welke interne systemen dan ook die ze kunnen bereiken.
De onderzoekers hielden hun callback gericht op localhost, zodat er geen echte Kiro-gebruikers werden blootgesteld, en ze merken op dat de aanval niet volkomen betrouwbaar is: het model is niet-deterministisch en kan de pagina samenvatten en het verborgen blok negeren. Bij hun tests werkte het binnen een of twee pogingen. Eén succes is alles wat nodig is.
Kiro liet in sommige gevallen een pop-up zien waarin stond dat de MCP-configuratie was gewijzigd en om goedkeuring werd gevraagd. Het maakte geen verschil. De configuratie werd opnieuw geladen, ongeacht waar de ontwikkelaar op klikte, dus de waarschuwing bood geen echte bescherming. De enige actie die de ontwikkelaar ooit daadwerkelijk heeft goedgekeurd, was het ophalen van een URL.
Kiro was hier eerder geweest
Een agent die het bestand kan schrijven dat bepaalt wat het mag uitvoeren, is al eerder in Kiro opgedoken. Op de releasedag van Kiro in juli 2025 toonde Johann Rehberger van Embrace The Red dezelfde mcp.json-schrijf-naar-uitvoering-beweging: een snelle injectie zette aangepaste code in een MCP-instellingenbestand en voerde deze uit zodra het bestand werd opgeslagen.
Hij markeerde ook een tweede route door naar .vscode/settings.json te schrijven om shell-opdrachten op de toelatingslijst te zetten. Het antwoord van AWS, Kiro 0.1.42, voegde een goedkeuringsprompt toe voor die schrijfbewerkingen, maar alleen in de bewaakte modus. De standaard Autopilot-modus bleef het bestand zelfstandig schrijven, en dat is de modus. Intezer’s 2026-ketting gebruikt. Ook toen werd er geen CVE afgegeven.
Anderen vonden aangrenzende versies van dezelfde klasse. Cymulate meldde dat Kiro automatisch code zou uitvoeren die naar .vscode/tasks.json was geschreven wanneer een map werd geopend. AWS heeft het CVE-2026-10591 toegewezen (8.8 onder CVSS 3.1, 8.6 onder CVSS 4.0) en gerepareerd in de 0.11-serie.
De mcp.json-keten van Intezer was nog steeds actief op versies 0.9.2 (macOS) en 0.10.16 (Ubuntu) toen het bedrijf dit in februari 2026 meldde, en er werd bevestigd dat de patch in v0.11.130 was aangebracht.
Het antwoord van AWS was om niet langer te vertrouwen op het oordeel van het model over deze bestanden en de cheque naar het platform te verplaatsen. Kiro markeert nu mcp.json, .vscode/tasks.json, de map .git en andere gevoelige bestanden als beschermde paden, die elk expliciete goedkeuring vereisen voordat ze kunnen worden geschreven.
De eigen documentatie maakt het punt direct duidelijk: “De begeleide modus is een workflow voor codebeoordeling, geen beveiligingscontrole.” De daaropvolgende versie 1.0 leunt nog meer op hetzelfde principe, met een op mogelijkheden gebaseerd machtigingsmodel dat om toestemming vraagt voor alles wat een ontwikkelaar nog niet heeft toegestaan.
Die combinatie sluit de route af die Intezer heeft gevolgd: Intezer bevestigde dat de aanval mislukte in 0.11.130, en, in tegenstelling tot de oplossing uit 2025, blijft de controle op beschermde paden gelden in zowel de Autopilot- als de Supervised-modus.
Intezer meldde de fout via HackerOne op 11 februari 2026, en op 3 april zei AWS dat de oplossing in de nieuwste release was geleverd, hoewel de versie nooit werd genoemd; de onderzoekers bevestigden het zelf in v0.11.130.
Er is geen CVE toegewezen: The Hacker News heeft op 21 juli 2026 geen enkele gevonden voor de bevinding in de National Vulnerability Database, en AWS heeft geen volledige lijst met getroffen builds gepubliceerd. Intezer meldde geen exploitatie in het wild, en de tests hadden betrekking op Kiro IDE; er werd niet vastgesteld of de afzonderlijke Kiro CLI- of webbuilds de fout deelden.
De huidige builds bevinden zich op de 1.0.x-lijn, met 1.0.165 als laatste vermeld vanaf 21 juli 2026, en iedereen met een oudere versie zou moeten updaten vanaf de downloadpagina van Kiro.
The Hacker News heeft contact opgenomen met AWS voor bevestiging van de getroffen Kiro-versies en waarom er geen CVE is toegewezen, en zal dit verhaal bijwerken met elk antwoord.
Gedurende ongeveer een jaar vonden drie afzonderlijke onderzoeksinspanningen dezelfde vorm van bug in Kiro: een agent die stilletjes de bestanden bewerkt en bepaalt wat hij mag uitvoeren. Kiro is niet de enige: in december 2025 hebben onderzoekers meer dan dertig tekortkomingen in AI-coderingstools gecatalogiseerd, waaronder Cursor en Copilot, die allemaal legitieme editorfuncties hebben omgezet in snelle injectiepaden naar code-uitvoering of gegevensdiefstal.
De huidige oplossingen wijzen allemaal op dezelfde les: de controle die werkt, bevindt zich op het platform, wordt in elke modus afgedwongen en buiten alles wat het model moet veranderen.
Naarmate een groter deel van de ontwikkelingsworkflow zich verplaatst naar agenten die het open web lezen, werkt een mens in de lus alleen als controle als de mens de stap wordt getoond die er toe doet, en het platform houdt de grens vast, zelfs nadat het model volledig is overgehaald om deze te overschrijden.