Pythonis sisseehitatud tarfile moodulis, mis pakub funktsioone tar-arhiivide lugemiseks ja kirjutamiseks, on avastatud viis haavatavust, millest üks on klassifitseeritud kriitiliseks. Haavatavused on kõrvaldatud Python 3.13.4 ja 3.12.11 väljaannetes. Kõige ohtlikum haavatavus (CVE-2025-4517) võimaldab spetsiaalselt vormistatud arhiivi lahtipakkimisel kirjutada faile ükskõik millisesse faili süsteemi ossa. Süsteemsete skriptide puhul, mis kasutavad tarfile'i ja käivitatakse root-jurisdiktsiooniga (nt pakettide töötlemise ja isoleeritud konteinerite utiliidid), võib haavatavust kasutada oma privileegide tõstmiseks või isoleeritud konteinerist väljapoole pääsemiseks.
Viga mõjutab projekte, kus moodulit tarfile kasutatakse usaldamatute tar-arhivide lahtipakkimiseks, kasutades funktsiooni TarFile.extractall() või TarFile.extract() koos parameetriga "filter=", mis on seadistatud väärtusele "data" või "tar". Viga tuleneb vale töötlemise järjestusest ".." linkide nimedes. Probleem mõjutab Python versioone alates 3.12. Režiim 'filter="data"' kehtib vaikimisi Python 3.14 harus, mis on arenduses (väljalaskmine planeeritud sügisel).
Teised TarFile haavatavused:
- CVE-2025-4330 — võimalus filtretit mööda hiilida, mis võib viia sümboolse lingi ekstraktsioonini arhiivist, viidates põhikatalooge, kuhu lahtipakkimine toimub.
- CVE-2025-4138 — võimalus luua suvalisi sümboolseid linke väljaspool põhikatalooge, kui arhive on lahti pakitud parameetriga 'filter="data"'.
- CVE-2024-12718 — võimalus muuta metateavet (nt muutmise aega) failide kohta väljaspool põhikatalooge, kui arhive on lahti pakitud parameetriga 'filter="data"' või õiguste (chmod) osas lahtipakkimisel arhive, kus parameeter on 'filter="tar"'.
- CVE-2025-4435 — kui arhiivi lahtipakkimise ajal on TarFile.errorlevel seatud väärtusele 0, siis vastupidiselt dokumentatsioonile arhiivielemendid, mis langevad soovitud filtri alla, avatakse, mitte ei ignoreerita.
Allikas: opennet.ru
