W standardowym module Python tarfile, który oferuje funkcje do odczytu i zapisu archiwów tar, wykryto pięć podatności, z których jedna została uznana za krytyczną. Usterki zostały naprawione w wydaniach Python 3.13.4 i 3.12.11. Najbardziej niebezpieczna podatność (CVE-2025-4517) umożliwia zapis plików w dowolnej części systemu plików podczas dekompresji specjalnie przygotowanego archiwum. W skryptach systemowych, które wykorzystują tarfile i są uruchamiane z uprawnieniami roota (np. w narzędziach do zarządzania pakietami oraz w odizolowanych kontenerach), podatność może być wykorzystana do podniesienia swoich uprawnień lub wyjścia poza granice odizolowanego kontenera.
Vulnerability dotyczy projektów, w których moduł tarfile jest używany do wypakowywania nieufnych archiwów tar za pomocą funkcji TarFile.extractall() lub TarFile.extract() z parametrem „filter=”, ustawionym na wartość „data” lub „tar”. Problemy są spowodowane nieprawidłowym przetwarzaniem sekwencji „..” w nazwach linków. Problem dotyczy wersji Pythona od 3.12. Tryb „filter=„data”” jest domyślnie używany w gałęzi Pythona 3.14, która jest w trakcie opracowania (premiera zaplanowana na jesień).
Inne podatności w TarFile:
- CVE-2025-4330 — możliwość obejścia filtra danych do wypakowywania, co może prowadzić do wypakowania z archiwum symbolicznego linku, wskazującego poza katalog bazowy, w którym odbywa się rozpakowywanie.
- CVE-2025-4138 — możliwość tworzenia dowolnych symbolicznych linków poza katalogiem bazowym przy rozpakowywaniu archiwów z parametrem „filter=„data””.
- CVE-2024-12718 — możliwość zmiany metadanych (np. czasu modyfikacji) plików poza katalogiem bazowym przy rozpakowywaniu archiwów z parametrem „filter=„data”” lub praw dostępu (chmod) przy rozpakowywaniu archiwów z parametrem „filter=„tar””.
- CVE-2025-4435 — jeśli podczas rozpakowywania archiwum parametr TarFile.errorlevel jest ustawiony na 0, to wbrew dokumentacji elementy archiwum, które pasują do danego filtra, są wypakowywane, a nie ignorowane.
Źródło: opennet.ru
