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

    Přihlášený uživatel OpenShift AI může načíst společné klíče NVIDIA

    Red Hat zveřejnil 7. září zranitelnost CVE-2026-86332 se skóre 6,5. Přihlášený uživatel dashboardu OpenShift AI může bez správcovského oprávnění načíst společný klíč…

  2. Bezpečnost

    Hlídač agentů v API OpenAI umí konverzaci zastavit, hotové kroky ale nevrátí zpět

    Spolu s modelem GPT-6 Astra ohlásilo OpenAI 3. září 2026 systém, který na pozadí čte uvažování agenta a při podezření na nezamýšlený přenos dat nebo destruktivní zásah…

  3. Bezpečnost

    Dynamicky sestavený Bifrost mohl bez přihlášení spustit modul z webu

    Správní rozhraní AI brány Bifrost před verzí 2.0.0 přijímalo od nepřihlášeného volajícího internetovou adresu vlastního zásuvného modulu. V dynamickém sestavení mohl…

  4. Bezpečnost

    Souběžné načtení dvou vektorů promptu obešlo ve vLLM pojistku proti loňské díře

    Záznam CVE-2026-73557 popisuje, že pojistka, kterou vLLM přidal v prosinci 2025 proti chybě CVE-2025-62164, stála na přepínači společném pro celý proces. Když server…