Zranitelnost v Rust knihovnách pro formát TAR, která vede k rozbalení souborů z vnořeného archivu

V knihovně async-tar napsané v jazyce Rust, která poskytuje funkce pro čtení a zápis tar archivů, byla objevena zranitelnost (CVE-2025-62518, kódové jméno TARmageddon), která umožňuje při rozbalování speciálně vytvořeného tar archivu nejen extrahovat soubory umístěné v něm, ale také soubory obsažené ve vnořeném tar archivu. Zranitelnost může být využita k obcházení systémů verifikace archivů a rozbalení souborů, pro které nebyla provedena kontrola.

Zranitelnost se také projevuje v forkách knihovny async-tar, jako jsou tokio-tar, krata-tokio-tar a astral-tokio-tar, a také v nástrojích založených na nich, například v balíčkovém správci uv, který se vyvíjí jako vysoce výkonná náhrada za „pip“ pro projekty v jazyce Python. Mezi populárními projekty, které používají zranitelné knihovny, se také uvádí nástroj testcontainers pro spouštění docker kontejnerů a runtime WebAssembly wasmCloud. V repozitáři crates.is zaznamenala knihovna async-tar za posledních 90 dní 1,3 milionu stažení, tokio-tar – 2,2 milionu, testcontainers – 2,9 milionu.

Zranitelnost je způsobena nesprávným výběrem pozice při analýze různých hodnot velikosti v hlavičkách ustar a PAX. V tar archivech ve formátu PAX je pro každý soubor uvnitř archivu uvedeno dvě hlavičky – klasická ustar a rozšířená PAX. Problém je způsoben tím, že zranitelné knihovny při rozbalování souborů místo výpočtu posunu na základě velikosti z rozšířené hlavičky PAX braly velikost z zastaralé hlavičky ustar. Při nulovém hodnotě velikosti v hlavičce ustar bylo následující obsah souboru zpracováváno jako platný blok TAR hlaviček pro další soubor.

Zranitelnost v Rust knihovnách pro formát TAR, která vede k rozbalení souborů z vnořeného archivu
Zranitelnost v Rust knihovnách pro formát TAR, která vede k rozbalení souborů z vnořeného archivu

Pro provedení útoku stačí vytvořit TAR archiv, ve kterém je v hlavičce ustar uvedena nulová velikost, zatímco v hlavičce pro formát PAX aktuální velikost, což způsobí, že obsah souboru s jiným tar archivem bude zpracován jako součást hlavního archivu. Příklad kódu pro vytvoření podobných archivů je umístěn na GitHubu. Zranitelnost byla odstraněna ve verzích tokio-tar 0.5.6 a uv 0.9.5. Pro ostatní knihovny zatím opravy zveřejněny nebyly, ale pro astral-tokio-tar, async-tar a krata-tokio-tar byly připraveny samostatné patche.

Zranitelnosti v knihovnách byly hodnoceny na úroveň nebezpečnosti 8,1 z 10, protože problém může být použit k přepsání rozbalovaných souborů (v zranitelných implementacích budou rozbaleny jiné soubory, než které byly viditelné v archivu). Zranitelnost v balíčkovém správci uv je přitom označena jako nezávadná, protože pokud útočník může ovlivnit obsah původního archivu, nemá smysl komplikovat útok a zneužívat zranitelnost prostřednictvím vnořeného archivu, když lze dosáhnout provedení kódu pomocí build skriptů v hlavním archivu.

Výzkumníci objevující zranitelnost navrhli několik hypotetických scénářů útoků, které by umožnily obcházet bezpečnostní kontroly a dosáhnout provedení kódu prostřednictvím výměny konfiguračních souborů nebo zasahováním do procesu sestavování. Předpokládá se, že zaslaný archiv projde automatizovanou kontrolou pomocí bezpečnostního skeneru a ručním auditem, během kterého kontrolor nevšimne zvláštního vnořeného archivu s jinými soubory, po čemž bude při rozbalení pomocí Rust knihoven vytaženo jiné obsah, než se očekávalo.

Například útočník může nahrát pozměněný archiv do repozitáře PyPI, který projde kontrolou na základě analýzy obsahu hlavního archivu obsahujícího legitimní soubor pyproject.toml. Při zpracování tohoto balíčku pomocí nástroje uv bude legitimní pyproject.toml nahrazen škodlivou variantou z vnořeného archivu, obsahující příkazy, které budou provedeny při sestavování na počítači vývojáře nebo v systému kontinuální integrace. Podobně lze organizovat přepisování souborů kontejneru při extrakci obrazu kontejneru pomocí nástroje testcontainers.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster