Přeskočit na obsah
Bezpečnost 4 min čtení

V AgentCore CLI šlo podstrčit kód do generovaného agenta. Oprava ho neodstraní

Nástroj @aws/agentcore, kterým se v Amazon Bedrock AgentCore zakládají a nasazují agenti, vypisoval popis spolupracujícího agenta do trojitě uvozeného řetězce v generovaném souboru main.py – a ošetřoval ho funkcí pro řetězce v uvozovkách jednoduchých. Uživatel ve stejném účtu AWS s oprávněním bedrock:AssociateAgentCollaborator tak mohl do vygenerovaného kódu propašovat vlastní Python. AWS chybu vede jako CVE-2026-11393 se známkou 9,0 a upozorňuje, že samotné povýšení nástroje nestačí.

Rotační ofsetové stroje a role papíru v hale novinové tiskárny
Ofsetové rotačky v tiskárně Sambad Press v indickém Bhuvanéšvaru. Výměna vadné tiskové formy platí od dalšího nákladu; výtisky, které už odjely, zůstanou takové, jaké byly. Foto: Subhashish Panigrahi, Wikimedia Commons (CC BY-SA 4.0)

Nástroj @aws/agentcore je příkazová řádka, kterou se v Amazon Bedrock AgentCore zakládají, ladí a nasazují agenti. Umí mimo jiné převzít agenta hotového v Bedrock Agents a přeložit ho do místního projektu v Pythonu. Právě v tomhle překladu byla chyba, kterou AWS 8. června vydal jako bulletin 2026-040 a jako CVE-2026-11393.

Známku 9,0 z deseti podle metodiky CVSS 3.1 si přidělil sám AWS, který si čísla CVE pro svoje produkty vydává. Americká národní databáze NVD měla záznam 1. srpna pořád ve stavu čekání na vlastní rozbor, takže druhé hodnocení k dispozici není.

Popis, ze kterého se stal program

Když se importuje řídicí agent, který má pod sebou další, stáhne si nástroj z rozhraní Bedrocku i údaje o nich. Mezi nimi je pole collaborationInstruction – volný text popisující, k čemu je ten který pomocník dobrý. Ten popis se pak vypíše do dokumentačního řetězce ve vygenerovaném souboru main.py, tedy do řetězce ohraničeného třemi uvozovkami.

Takový řetězec v Pythonu končí přesně tam, kde se ty tři uvozovky objeví podruhé. Cizí text v něm proto musí projít ošetřením: každá trojice se zneškodní zpětnými lomítky. Nástroj ošetření dělal, jen nesprávnou funkcí.

V souboru base-translator.ts stojí vedle sebe dvě pomocné funkce. Jedna připravuje text pro řetězec v jednoduchých uvozovkách a hlídá zpětné lomítko, apostrof a konec řádku. Druhá připravuje text pro řetězec trojitý a hlídá zpětné lomítko a trojici uvozovek. Na popis spolupracujícího agenta se pouštěla ta první, která uvozovku nehledá vůbec. Co v popisu následovalo za trojicí uvozovek, tedy vygenerovaný soubor nečetl jako text, ale jako program.

Kdo to mohl použít

Předpoklad je úzký a bulletin ho popisuje přesně. Útočník musí být přihlášený uživatel ve stejném účtu AWS a mít oprávnění bedrock:AssociateAgentCollaborator. Tím připojí k řídicímu agentovi pomocníka s připraveným popisem – a pak čeká, až si toho řídicího agenta někdo jiný naimportuje.

Vložený kód se pak spustí na dvou různých místech. Na počítači vývojáře, když spustí agentcore dev: tam běží pod jeho vlastními přístupovými údaji k AWS. A v běhovém prostředí AgentCore Runtime poté, co vývojář agenta nasadí a zavolá: tam běží pod rolí, kterou má agent přidělenou. Díra otevřená do internetu to tedy není. Je to cesta, jak se uvnitř jednoho účtu dostat z práva spravovat agenty k oprávněním někoho jiného.

Podstrčený text se u agentů obvykle řeší za běhu – ať už jde o skrytý pokyn, nebo o podvržený údaj, který agent bere jako danost. Tady jde o něco jiného: text se do agenta zapíše natrvalo ještě dřív, než poprvé nastartuje.

Oprava je jeden řádek

Návrh změny číslo 1329 se otevřel a začlenil za hodinu a půl večer 20. května světového času. Sáhl na tři soubory, přidal 126 řádků a jeden ubral; v samotném překladači je z toho jediný změněný řádek a zbytek jsou testy. Změna spočívá v tom, že se místo funkce pro jednoduché uvozovky zavolá ta pro trojité.

Ta funkce přitom nebyla nová. Ve verzi 0.14.1, tedy poslední zranitelné, je v témž souboru a volá se na třech dalších místech – u převzatých systémových zadání i u popisů funkcí z akčních skupin. Cizí text se tedy do trojitě uvozeného řetězce lepil na čtyřech místech a špatnou funkci dostalo jediné z nich.

Povýšení nástroje samo nestačí

Tohle je na celé věci nejméně obvyklé a AWS to píše natvrdo: aktualizace nástroje sama neopraví kód, který se už vygeneroval nebo nasadil. Chyba je v generátoru, ale škoda je v jeho výstupu – v souboru main.py, který leží ve vývojářově projektu a jehož kopie běží v AWS.

Bulletin proto vypisuje kroky čtyři, ne jeden: povýšit nástroj na 0.14.2 (u předběžné řady na 1.0.0-preview.9), odebrat dotčeného agenta z projektu, spustit import znovu opraveným nástrojem a nasadit ho, aby se v AWS přepsal starší otisk. Kdo to neudělá, má podle hlášení vložený kód v chodu při každém zavolání agenta. Náhradní řešení pro toho, kdo povýšit nemůže, je ruční: projít vygenerovaný main.py, najít v popisech spolupracovníků trojice uvozovek a přepsat je na ošetřený tvar.

Časová osa jde poskládat z veřejných zdrojů

Verze 0.14.1 vyšla na npm 19. května, oprava se začlenila 20. května a verze 0.14.2 byla venku 21. května. Bulletin i hlášení v repozitáři vyšly 8. června, tedy o osmnáct dní později, a týž týden chybu vypsala i týdenní zpráva CISA.

Jeden údaj se rozchází. Hlášení v repozitáři projektu nese 8. červen, ale záznam v globální databázi bezpečnostních hlášení GitHubu je datovaný 29. červencem a týmž dnem je označené i jeho ověření ze strany GitHubu. Proč mezi tím leží sedm týdnů, ani jedna z těch stránek neuvádí.

Do katalogu zneužívaných zranitelností CISA se CVE-2026-11393 nedostalo. Ten katalog měl 29. července 1 656 položek a z nástrojů pro agenty je v něm Langflow. Model EPSS, který odhaduje pravděpodobnost pokusu o zneužití v následujících třiceti dnech, u něj podle údaje připojeného k hlášení na GitHubu vychází na 0,3 %.

Co si z toho odnést

Přesah za jeden nástroj jedné firmy je v tom, jak vzniká kód agenta. Generátory berou texty z cizích rozhraní a vypisují je do zdrojových souborů; jakmile to jednou udělají špatně, nese chybu výstup, ne generátor. Aktualizace pak spraví budoucnost a minulost nechá být. U agentů to bolí o to víc, že se ten výstup obvykle rovnou nasazuje – vygenerovaný soubor je meziprodukt, do kterého se po vydání nikdo nedívá.

Podle nás je nejcennější částí bulletinu ta nudná: seznam čtyř kroků. Hlášení, které by skončilo u pokynu povýšit na 0.14.2, by tady čtenáře nechalo v přesvědčení, že má hotovo.

Zdroje: bulletin AWS 2026-040 z 8. června 2026, hlášení GHSA-m4x6-gwgp-4pm7, záznam CVE-2026-11393 v NVD, týdenní přehled CISA za týden od 8. června 2026, repozitář aws/agentcore-clibalíček @aws/agentcore na npm, odkud pocházejí data vydání jednotlivých verzí.

Diskuse

Zatím tu nikdo nediskutuje. Můžete být první.

Napsat příspěvek

Diskutovat můžete i bez účtu. S registrací se ale příspěvek zveřejní hned a nemusíte pokaždé vyplňovat jméno. Účet už máte? Přihlaste se.

Nezveřejňujeme ho, slouží jen redakci.

Podporuje zápis Texy: **tučně**, *kurzíva*, odrážky, odkazy.

Dál k tématu

  1. Bezpečnost

    Ruby SDK protokolu MCP dostalo pět CVE. Opravy vyšly o tři týdny dřív než hlášení

    Databáze bezpečnostních hlášení GitHubu přidala 30. července 2026 k oficiální rubyové knihovně protokolu MCP pět záznamů najednou, dva s vysokou závažností. Všechny…

  2. Bezpečnost

    Langflow je v katalogu CISA popáté, federální úřady dostaly tři dny

    CISA zařadila 21. července do katalogu zneužívaných zranitelností chybu CVE-2026-0770 v Langflow, nástroji na skládání agentů nad jazykovými modely. Dovoluje spustit kód…

  3. Bezpečnost

    Claude při testech napadl tři skutečné organizace a vydal škodlivý balíček na PyPI

    Anthropic prošel zpětně 141 006 testovacích běhů a našel šest, ve kterých se model dostal z uzavřeného prostředí na internet a napadl provozní systémy tří organizací.…

  4. Bezpečnost

    Útok podvrhne agentovi fakta místo pokynů. V testu neodolal Claude Code ani Codex

    Šest autorů popsalo třídu útoků, která agentovi nepodstrčí skrytý příkaz, ale zfalšuje údaje, kterým bez ptaní věří – jméno odesílatele, identifikátor tlačítka, záznam o…