Në bibliotekën async-tar të shkruar në gjuhën Rust, e cila ofron funksione për të lexuar dhe shkruar arkiva tar, është zbuluar një cenueshmëri (CVE-2025-62518, emri kodik TARmageddon), e cila lejon që gjatë shkrirjes së një arkivi tar të dizajnuar në mënyrë speciale të nxirren jo vetëm skedarët e vendosur brenda tij, por edhe skedarët që ndodhen në një arkiv tar të brendshëm. Kjo cenueshmëri mund të përdoret për të anashkaluar sistemet e verifikimit të arkivave dhe për të shkruar skedarë për të cilët nuk është kryer kontrolli.
Cenueshmëria zbulohet gjithashtu në forkat e bibliotekës async-tar, siç janë tokio-tar, krata-tokio-tar dhe astral-tokio-tar, si dhe në mjetet bazuar në to, për shembull, menaxheri i paketave uv, që po zhvillohet si një zëvendësim me performancë të lartë për "pip" për projektet në gjuhën Python. Nga projektet e njohura që përdorin biblioteka të cenueshme, shquhen gjithashtu mjeti testcontainers për ekzekutimin e konteinerëve docker dhe runtime WebAssembly wasmCloud. Në repositorin crates.is, gjatë 90 ditëve të fundit, biblioteka async-tar ka numëruar 1.3 milion shkarkime, tokio-tar - 2.2 milion, testcontainers - 2.9 milion.
Cenueshmëria shkaktohet nga zgjedhja e gabuar e pozicionit gjatë analizës së vlerave të ndryshme të madhësisë në başitë e ustar dhe PAX. Në arkivat tar në format PAX, për çdo skedar brenda arkivit, janë të specifikuara dy başe - klasike ustar dhe të zgjeruara PAX. Problemi është se bibliotekat e cenueshme, gjatë shkrirjes së skedarëve, në vend që të llogarisin offset-in mbi bazën e madhësisë nga başi i zgjeruar PAX, merrnin madhësinë nga başi i vjetër ustar. Me një vlerë zero për madhësinë në başin ustar, përmbajtja e skedarit pas tij trajtohej si një bllok i saktë TAR për skedarin e ardhshëm.


Për të kryer një sulm, mjafton të krijohet një arkiv TAR, në të cilin në başin ustar është e specifikuar një madhësi zero, dhe në başin për formatin PAX, madhësia aktuale, çka bën që përmbajtja e skedarit me një arkiv tjetër tar të trajtohet si pjesë e arkivit kryesor. Një shembull kodi për krijimin e arkivave të tilla është publikuar në GitHub. Cenueshmëria është eliminuar në lëshimet tokio-tar 0.5.6 dhe uv 0.9.5. Për bibliotekat e tjera, rregullimet ende nuk janë publikuar, por për astral-tokio-tar, async-tar dhe krata-tokio-tar janë përgatitur patch-e veçanërisht.
Vulnerabilitetet në bibliotekat janë vlerësuar me nivel rreziku 8.1 nga 10, pasi problemi mund të përdoret për të riparuar skedarët e shkarkueshëm (në implementimet e cenueshme do të shkarkohen skedarë të ndryshëm nga ata që ishin të dukshëm në arkiv). Në këtë rast, vulnerabiliteti në menaxherin e paketave uv është shënuar si i sigurt, pasi nëse sulmuesi mund të ndikojë në përmbajtjen e arkivit origjinal, nuk ka kuptim të komplikohet sulmi dhe të shfrytëzohet vulnerabiliteti përmes arkivave të të hapura, kur mund të arrihet ekzekutimi i kodit përmes skripteve ndihmëse në arkivin kryesor.
Shkencëtarët që zbuluan vulnerabilitetin propozuan disa skenarë hipotetikë sulmi që lejojnë kalimin e verifikimeve të sigurisë dhe arritjen e ekzekutimit të kodit përmes zëvendësimit të skedarëve të konfigurimit ose ndërhyrjes në procesin e ndërtimit. Supozohet se arkivi i dërguar do të kalojë verifikimin automatizuar nga skaneri i sigurisë dhe auditi manual, gjatë të cilit kontrolluesi nuk do të vërehet ndonjë arkiv të çuditshëm të hapur me skedarë të tjerë, pas së cilës gjatë shkarkimit me bibliotekat Rust do të nxjerrë përmbajtje të ndryshme nga ajo që pritej.
Për shembull, sulmuesi mund të ngarkojë një arkiv të modifikuar në repositorin PyPI, i cili do të kalojë verifikimin bazuar në analizën e përmbajtjes së arkivit kryesor, që përmban skedarin legjitim pyproject.toml. Gjatë përpunimit të këtij paketi me ndihmën e utilitarit uv, pyproject.toml legjitim do të zëvendësohet me një version të dëmshëm nga arkivi i hapur, që përmban komanda që do të ekzekutohen gjatë ndërtimit në kompjuterin e zhvilluesit ose në sistemin e integrimit të vazhdueshëm. Gjithashtu, është e mundur të organizohet zëvendësimi i skedarëve të kontejnerit gjatë nxjerrjes së imazhit të kontejnerit me ndihmën e instrumenteve testcontainers.
Burimi: opennet.ru
