I det Rust-baserade biblioteket async-tar, som erbjuder funktioner för att lÀsa och skriva tar-arkiv, har en sÄrbarhet identifierats (CVE-2025-62518, kodnamn TARmageddon) som gör det möjligt vid extrahering av ett specialutformat tar-arkiv inte bara att extrahera filerna i det, utan ocksÄ filer som finns i det inbÀddade tar-arkivet. SÄrbarheten kan anvÀndas för att kringgÄ arkivverifieringssystem och extrahera filer som inte har verifierats.
SÄrbarheten visar sig ocksÄ i forkar av biblioteket async-tar, sÄsom tokio-tar, krata-tokio-tar och astral-tokio-tar, samt i verktyg baserade pÄ dem, till exempel paketmanagern uv, som utvecklas som ett högpresterande alternativ till "pip" för projekt skrivna i Python. Bland populÀra projekt som anvÀnder sÄrbara bibliotek finns Àven verktyget testcontainers för att köra dockercontainrar och WebAssembly-runtime wasmCloud. I repositories pÄ crates.is har biblioteket async-tar haft 1,3 miljoner nedladdningar de senaste 90 dagarna, tokio-tar - 2,2 miljoner, testcontainers - 2,9 miljoner.
SÄrbarheten orsakas av en felaktig positionering vid tolkningen av olika storleksvÀrden i ustar- och PAX-huvuden. I tar-arkiv i PAX-format anges tvÄ huvuden för varje fil inuti arkivet - ett klassiskt ustar-huvud och ett utökat PAX-huvud. Problemet uppstÄr eftersom de sÄrbara biblioteken vid extrahering av filer istÀllet för att berÀkna offset baserat pÄ storleken frÄn det utökade PAX-huvudet, tog storleken frÄn det förÄldrade ustar-huvudet. Vid nollstorlek i ustar-huvudet, tolkades innehÄllet som följer som en korrekt TAR-huvudblock för nÀsta fil.


För att utföra en attack rÀcker det att skapa ett TAR-arkiv dÀr nollstorleken anges i ustar-huvudet, medan det aktuella storleksvÀrdet anges i PAX-huvudet, vilket gör att innehÄllet av en fil med ett annat tar-arkiv kommer att behandlas som en del av huvudarkivet. Exempel pÄ kod för att skapa sÄdana arkiv finns pÄ GitHub. SÄrbarheten har ÄtgÀrdats i versioner av tokio-tar 0.5.6 och uv 0.9.5. För de övriga biblioteken har inga patchar publicerats Àn, men patchar har förberetts för astral-tokio-tar, async-tar och krata-tokio-tar.
SÄrbarheten i biblioteken har bedömts med en risknivÄ pÄ 8,1 av 10, eftersom problemet kan anvÀndas för att skriva över extraherade filer (i sÄrbara implementationer kommer andra filer Àn de som syntes i arkivet att extraheras). SÄrbarheten i paketförvaltaren uv har dock mÀrkts som icke-farlig, eftersom om en angripare kan pÄverka innehÄllet i det ursprungliga arkivet, finns det ingen mening med att komplicera attacken och utnyttja sÄrbarheten genom ett inbÀddat arkiv, nÀr det istÀllet gÄr att utföra kod via byggscript i det huvudsakliga arkivet.
De forskare som upptÀckte sÄrbarheten föreslog flera hypotetiska attackscenarier, som gör det möjligt att kringgÄ sÀkerhetskontroller och uppnÄ kodexekvering genom att byta ut konfigurationsfiler eller pÄverka byggprocessen. Det förutsÀtts att det mottagna arkivet kommer att klara automatiserade kontroller av sÀkerhetsscannern och en manuell granskning, dÀr granskaren inte uppmÀrksammar ett konstigt inbÀddat arkiv med andra filer, efter vilket annat innehÄll Àn vÀntat kommer att extraheras med Rust-bibliotek vid uppackning.
Till exempel kan en angripare ladda upp ett modifierat arkiv till PyPI-repositoriet, vilket kommer att klara av granskningen baserat pÄ innehÄllet i det huvudsakliga arkivet, som innehÄller en legitim fil pyproject.toml. Vid bearbetning av detta paket med verktyget uv kommer den legitima pyproject.toml att ersÀttas med en skadlig version frÄn det inbÀddade arkivet, som innehÄller kommandon som kommer att utföras vid byggandet pÄ utvecklarens dator eller i CI-systemet. PÄ samma sÀtt kan man organiserar överskrivning av behÄllarfiler vid extrahering av en containerbild med hjÀlp av verktyget testcontainers.
KĂ€lla: opennet.ru
