AWS odmítl označit převzetí agentů v Bedrock AgentCore za zranitelnost
Výzkumníci Zenity Labs popsali, jak přes jednoho veřejného agenta v Amazon Bedrock AgentCore získali přístup ke všem agentům téhož účtu a regionu. AWS tvrdí, že jde o zdokumentované chování, ne o zranitelnost. Výchozí roli agentů přesto mezitím zúžil a nález nemá číslo CVE.

Bezpečnostní firma Zenity Labs zveřejnila 8. října sérii rozborů, kterou nazvala AgentCorruption, a týž den ji představila na konferenci SecTor v Torontu. Tvrdí v ní, že stačila jedna zpráva veřejně dostupnému agentovi na platformě Amazon Bedrock AgentCore a výzkumníci pak měli v rukou všechny ostatní agenty v témže účtu AWS a v témže regionu. Amazon to vidí jinak. Podle vyjádření pro server TNW výzkum „nepřesně vykresluje očekávané a zdokumentované chování jako zranitelnost“ (přeloženo).
AgentCore je služba AWS, na které firmy provozují vlastní agenty s nástroji, pamětí a správou přístupů. Každý agent běží v kontejneru uvnitř samostatného virtuálního stroje Firecracker. O téže platformě jsme už psali, tehdy šlo o podstrčený kód v nástroji AgentCore CLI. Tentokrát nejde o chybu v kódu, ale o to, kam až agenta platforma pustí.
Z jednoho agenta do celého účtu
Výzkumníci postavili zkušebního agenta s běžným nástrojem pro webové požadavky z knihovny Strands, kterou vydává sám AWS. Agenta šlo podle nich obyčejnou větou přimět, aby se zeptal interní metadatové služby virtuálního stroje a vrátil dočasné přihlašovací údaje své role. Ty pak fungovaly i na počítači výzkumníků, mimo AgentCore. Stejného výsledku dosáhli přes nástroj pro příkazovou řádku, takže podle Zenity nejde o vadu jednoho nástroje, ale o chybějící oddělení na úrovni platformy.
Podstatnější je druhý krok. Role, kterou AgentCore agentovi přiděloval ve výchozím nastavení, neplatila jen pro něj, ale pro prostředky celého účtu a regionu. Podle druhého rozboru s ní výzkumníci vypsali všechny agenty, stáhli obrazy jejich kontejnerů i se zdrojovým kódem, volali interní agenty, ke kterým neměli mít přístup, a četli soukromé konverzace uživatelů. Z úložiště Secrets Manager získali klíče k cizím službám, které agenti používali mimo AWS.
Nejhůř se podle Zenity odhaluje zápis do paměti. Výzkumníci do dlouhodobé paměti agenta vložili podvržený pokyn, který agent dál bral jako přání uživatele. Uživatel s ním mluvil jako dřív a jeho konverzace mezitím odcházely ven.
Co tvrdí AWS a co se mezitím změnilo
Celé vyjádření AWS stojí na jedné větě: agent se k prostředkům v jiném účtu AWS dostane jen tehdy, když mu to vývojář výslovně povolí na obou stranách. Zenity ale o jiných účtech nepsala. Všechno, co popisuje, se odehrálo uvnitř jednoho účtu, a TNW kvůli tomu dodatečně opravil titulek, který mluvil o celém regionu. Druhá část vyjádření je doporučení dávat roli agenta jen ta oprávnění, která opravdu potřebuje.
Na tom, že výchozí stav byl příliš štědrý, se přitom AWS v praxi se Zenity shodl. Podle časové osy, kterou zveřejnil TNW, nahlásila Zenity přístup k metadatové službě 25. prosince 2025 a široká oprávnění výchozí role 12. ledna 2026. Vlastní text Zenity si v tom protiřečí: v jedné větě uvádí nahlášení 17. prosince, v časové ose pod ní 25. prosince. AWS první hlášení v dubnu uzavřel jako „informativní“ a dodal, že nově nasazení agenti od 14. února používají jen IMDSv2, tedy verzi metadatové služby, která chce ke každému dotazu token relace. V červnu byla role podle Zenity pořád stejná. Při poslední kontrole 29. září už v ní chybělo volání ostatních agentů, čtení konverzací i přístup do Secrets Manageru. Číslo CVE nález nemá.
Co ve vzorové roli zůstalo
Dokumentace AWS na stránce IAM Permissions for AgentCore Runtime uvádí vzorovou roli, se kterou agent běží. Ve znění staženém 8. října volání agentů, paměť ani Secrets Manager neobsahuje, takže odpovídá stavu, který Zenity našla v září. Dvě oprávnění, na kterých stála první část útoku, v ní ale jsou dál: čtení obrazů ze všech repozitářů ECR v účtu (repository/*) a výpis všech skupin záznamů v CloudWatch (log-group:*). Podle Zenity právě z názvů skupin záznamů vyčetli jména agentů a podle nich si stáhli jejich kontejnery. V tomhle bodě má AWS pravdu doslova: je to zdokumentované.
Pro firmy z toho plyne totéž, co radí obě strany. Každý agent má mít vlastní roli omezenou na vlastní repozitář a vlastní záznamy, veřejně dostupní agenti nemají sdílet účet s interními a hesla ani klíče nepatří do obrazu kontejneru. Jestli AWS zúžil i role, které už u běžících agentů visí, nepíše ani jedna strana, takže kdo agenty nasadil dřív, ověří si to jedině v konzoli IAM.
Zenity prodává platformu pro zabezpečení agentů a v srpnu získala investici 125 milionů dolarů, na nálezech v tomhle oboru má tedy obchodní zájem. Popsané kroky ale doložila výpisy oprávnění, které se dají porovnat s dokumentací AWS.
Zdroje
- Zenity Labs: AgentCorruption: Initial IMDS Access (8. 10. 2026)
- Zenity Labs: AgentCorruption: One Role to Rule Them All (8. 10. 2026)
- TNW: Zenity says one prompt took over every AgentCore agent in an AWS account (8. 10. 2026, s vyjádřením AWS)
- The Decoder: A single prompt was enough to hijack every AI agent in an AWS account (8. 10. 2026)
- AWS: IAM Permissions for AgentCore Runtime (staženo 8. 10. 2026)