O vulnerabilitate în bibliotecile Rust pentru formatul TAR, care duce la extragerea fișierelor dintr-un arhivă înnegrită.

În biblioteca scrisă în Rust, async-tar, care oferă funcții pentru citirea și scrierea arhivelor tar, a fost descoperită o vulnerabilitate (CVE-2025-62518, nume de cod TARmageddon), care permite, la extragerea unei arhive tar special concepute, nu doar extragerea fișierelor conținute în aceasta, ci și a fișierelor dintr-o arhivă tar închisă. Vulnerabilitatea poate fi folosită pentru a ocoli sistemele de verificare a arhivelor și pentru a extrage fișiere pentru care nu s-a efectuat verificarea.

Vulnerabilitatea se manifestă, de asemenea, în fork-uri ale bibliotecii async-tar, cum ar fi tokio-tar, krata-tokio-tar și astral-tokio-tar, precum și în utilitarele bazate pe acestea, de exemplu, în managerul de pachete uv, care se dezvoltă ca o alternativă performantă la «pip» pentru proiectele din Python. Dintre proiectele populare care folosesc biblioteci vulnerabile, se remarcă și instrumentul testcontainers pentru rularea containerelor docker și runtime-ul WebAssembly wasmCloud. În depozitul crates.is, în ultimele 90 de zile, biblioteca async-tar a avut 1,3 milioane de descărcări, tokio-tar — 2,2 milioane, iar testcontainers — 2,9 milioane.

Vulnerabilitatea este cauzată de alegerea incorectă a poziției la analiza diferitelor valori de dimensiune în antetele ustar și PAX. În arhivele tar în format PAX, pentru fiecare fișier din interiorul arhivei sunt specificate două antete — clasicul ustar și extinsul PAX. Problema este provocată de faptul că bibliotecile vulnerabile, la extragerea fișierelor, în loc să calculeze deplasarea pe baza dimensiunii din antetul extins PAX, utilizau dimensiunea din antetul depășit ustar. Cu o valoare zero a dimensiunii în antetul ustar, conținutul care urmează este procesat ca un bloc valid de antete TAR pentru următorul fișier.

O vulnerabilitate în bibliotecile Rust pentru formatul TAR, care duce la extragerea fișierelor dintr-un arhivă înnegrită.
O vulnerabilitate în bibliotecile Rust pentru formatul TAR, care duce la extragerea fișierelor dintr-un arhivă înnegrită.

Pentru a desfășura un atac, este suficient să creați o arhivă TAR în care în antetul ustar este specificată o dimensiune zero, iar în antetul pentru formatul PAX dimensiunea actuală, ceea ce face ca conținutul unui fișier cu o altă arhivă tar să fie procesat ca parte a arhivei principale. Un exemplu de cod pentru a crea astfel de arhive este disponibil pe GitHub. Vulnerabilitatea a fost corectată în versiunile tokio-tar 0.5.6 și uv 0.9.5. Pentru celelalte biblioteci, corecțiile nu au fost publicate încă, dar pentru astral-tokio-tar, async-tar și krata-tokio-tar au fost pregătite patch-uri separate.

Vulnerabilitățile din biblioteci au fost evaluate cu un nivel de pericol de 8.1 din 10, deoarece problema poate fi utilizată pentru a suprascrie fișierele extrase (în implementările vulnerabile, vor fi extrase fișiere diferite față de cele vizibile în arhivă). Totuși, vulnerabilitatea în managerul de pachete uv este considerată nepericuloasă, deoarece, dacă un atacator poate influența conținutul arhivei originale, nu are sens să complice atacul și să exploateze vulnerabilitatea printr-o arhivă încorporată, când poate obține execuția de cod prin scripturile de construire din arhiva principală.

Cercetătorii care au descoperit vulnerabilitatea au propus câteva scenarii ipotetice de atac, care permit ocolirea verificărilor de securitate și obținerea execuției de cod prin înlocuirea fișierelor de configurare sau intervenția în procesul de construire. Se subîntelege că arhiva trimisă va putea trece o verificare automatizată cu un scaner de securitate și un audit manual, în timpul căruia auditorul nu va observa o arhivă încorporată ciudată cu alte fișiere, după care, la extragerea acestora prin intermediul bibliotecilor Rust, va fi obținut un conținut diferit față de cel așteptat.

De exemplu, un atacator poate încărca o arhivă modificată în depozitul PyPI, care va trece verificarea pe baza analizei conținutului arhivei principale, conținând un fișier legitim pyproject.toml. Atunci când acest pachet este procesat prin utilitarul uv, fișierul legitim pyproject.toml va fi înlocuit cu o versiune malițioasă din arhiva încorporată, care conține comenzi ce vor fi executate la construcția pe computerul dezvoltatorului sau în sistemul de integrare continuă. Similar, se poate organiza suprascrierea fișierelor containerului la extragerea imaginii containerului prin intermediul instrumentarului testcontainers.

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster