Č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ří.

Úč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.