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

Čtení cizích souborů v XAgentu má třetí číslo CVE a opravu jen ve zdrojových kódech

VulnCheck zveřejnil 11. srpna záznam CVE-2026-72713: obsluha adresy /workspace/file v autonomním agentu XAgent přečte i soubory mimo vyhrazený adresář. Táž funkce už má dva starší záznamy, z března a července. Oprava leží v hlavní větvi od 31. července, jenže jediné vydání projektu i obrazy na Docker Hubu jsou z roku 2023.

Firma VulnCheck zveřejnila 11. srpna záznam CVE-2026-72713. Týká se XAgentu, autonomního agenta od skupiny OpenBMB, který má na GitHubu 8 531 hvězd. Vada je v obsluze adresy /workspace/file: jméno souboru přijaté od uživatele se připojí k pracovnímu adresáři a rovnou přečte, aniž se ověří, že výsledná cesta pořád leží uvnitř. Kdo do jména vloží odkaz na nadřazenou složku, čte soubory, které mu nepatří.

Stohy lodních kontejnerů v rotterdamském přístavu
Stohy lodních kontejnerů v rotterdamském přístavu. Snímek je ilustrační. Foto: AgainErick, Wikimedia Commons (CC BY-SA 4.0)

Účet si k tomu útočník založí sám

VulnCheck dal chybě 8,7 bodu podle CVSS 4.0 a zařadil ji pod CWE-22, tedy nedostatečné omezení cesty k souboru. Jako nálezce uvádí George Chena. Zneužití vyžaduje přihlášeného uživatele, jenže to je slabá překážka: hlášení chyby popisuje, že server ve výchozím nastavení odbaví registraci bez potvrzení e-mailu, a README projektu uvádí přihlašovací jméno i heslo, se kterými se webové rozhraní dodává.

Co se dá přečíst, záleží na způsobu spuštění. Podle hlášení se útočník dostane na konfigurační soubor s přístupem k databázi a dál na systémové soubory. Přiložený popis služeb pro Docker přitom staví server do kontejneru a vystavuje z něj porty 5173 a 8090; heslo k databázi MySQL je v témže souboru napsané natvrdo. Kdo si server pustí mimo kontejner, má rozsah větší.

Třetí číslo pro tutéž funkci

Zajímavější než chyba sama je její evidence. Táž funkce v témže souboru už dvě čísla má:

  • CVE-2026-3954 z 11. března, přidělené databází VulDB, mluví o workspace.py a o argumentu file_name. Hodnocení 6,5 podle CVSS 3.1.
  • CVE-2026-26396 z 13. července, přidělené organizací MITRE, mluví o funkci file() v témže souboru a o parametru filename. Známku neuvádí.
  • CVE-2026-72713 z 11. srpna popisuje totéž místo znovu, tentokrát s 8,7 bodu.

Tři přidělovatelé, tři popisy. Soubor i jméno parametru sedí ve všech třech záznamech, liší se jen to, jak která databáze funkci pojmenuje. Rozdíl ve známkách není překlep – hodnotitel počítá i to, jak snadno se útočník k účtu dostane, a na tom se dva posudky běžně rozejdou. Záznamů k XAgentu je v americké národní databázi zranitelností celkem osm, nejstarší z února 2024; je to náš součet z výsledků hledání, projekt žádné takové číslo neuvádí.

Po dvou letech ticha přišly dvě opravy za jedno odpoledne

Hlavní větev XAgentu byla od 4. března 2024 beze změny. Pak 31. července 2026 přibyly dva commity. Ten podstatný, 26f2b6e, přidal 230 řádků a 52 odebral. Přišel návrhem změny #432, který byl otevřený a sloučený během necelých tří minut.

Oprava není kosmetická. Zavádí nový soubor path_security.py se dvěma funkcemi, které cestu složí, převedou na skutečnou a odmítnou ji, pokud vede jinam než pod povolený adresář. K tomu přibyla podmínka, že konverzace musí patřit tomu, kdo o soubor žádá – dosud stačilo znát její identifikátor. A úplně zmizel koncový bod /register_new_tool, který přijímal kód nového nástroje a nechtěl k tomu žádné ověření. Součástí commitu je i soubor s regresními testy, takže se táž vada nemá vrátit tiše.

Od založení hlášení k jeho uzavření uplynulo 49 dní, od prvního čísla CVE ke stejné opravě 142 dní. Obojí je náš výpočet z dat v repozitáři a v záznamech CVE. U dvou starších záznamů zapsala VulDB poznámku, že autora upozornila předem a nedostala odpověď.

Návod na instalaci k opravě nevede

Tady je jádro problému. Projekt má jediné vydání v1.0.0 z 22. listopadu 2023 a novější nevyšlo. Obrazy, které README nabízí jako první způsob rozběhnutí, jsou stejně staré: toolserver-node i toolserver-manager a xagent-server mají značku latest podle rozhraní Docker Hubu naposledy změněnou 30. listopadu 2023.

Příkaz docker compose up proto stáhne obrazy, ve kterých červencová oprava není. A týká se to i druhé poloviny opravy: kontroly cest přibyly také v ToolServeru, tedy v té části, která běží v kontejneru. Kdo chce opravený stav, musí si vzít hlavní větev z GitHubu a obrazy si postavit sám příkazem docker compose build.

Rozestup mezi opravou a tím, co se dozví uživatel, není v tomhle oboru ojedinělý – Open WebUI vydalo sedmnáct záznamů CVE osm dní po opravné verzi a u agentních nástrojů se opakované záznamy sbírají dál, jak ukazuje pátý zápis Langflow do katalogu CISA. Rozdíl je v tom, že tam vydání existují.

Praktický závěr je nudný a platí i pro jiné agenty stažené z GitHubu: rozhraní, které umí sáhnout na soubory, nepatří na veřejnou adresu, a počet hvězd o údržbě neříká nic. XAgent jich má přes osm tisíc a dva a půl roku se v něm nezměnil řádek.

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

    Keras opravil čtení cizích souborů přes odkazy v HDF5 už potřetí za půl roku

    Soubor s váhami pro Keras nemusí obsahovat žádná data – stačí, když ukáže na jiný soubor HDF5 na disku oběti, a knihovna ho poslušně načte do modelu. Hlášení CVE-2026…

  2. Bezpečnost

    Úložiště LangGraphu vracelo i záznamy z prostoru, jehož jméno začínalo stejně

    Knihovna LangGraph ukládá paměť agentů do jmenných prostorů a aplikace jimi běžně oddělují data jednoho uživatele od druhého. Úložiště pro Postgres a SQLite je ale…

  3. Bezpečnost

    Open WebUI vydalo sedmnáct záznamů CVE až osm dní po opravné verzi

    Rozhraní Open WebUI, které si lidé staví před vlastní modely, vydalo 27. července 2026 verzi 0.11.0 s bezpečnostními opravami a v poznámkách rovnou napsalo, že je zatím…

  4. Bezpečnost

    Codex a Claude Code zpřísnily ochranu tokenů a pravidla sandboxu

    Codex 0.147 začal v zobrazených příkazech a obnovené historii skrývat celé bearer tokeny. Claude Code 2.1.224 opravil obcházení zákazu čtení cestou s koncovým lomítkem a…