Wrażliwość w bibliotekach Rust dla formatu TAR, prowadząca do dekompresji plików z zagnieżdżonego archiwum

W bibliotece async-tar napisanej w języku Rust, oferującej funkcje do odczytu i zapisu archiwów tar, zidentyfikowano lukę (CVE-2025-62518, kodowa nazwa TARmageddon), która pozwala na wydobycie nie tylko plików zawartych w specjalnie przygotowanym archiwum tar, ale także plików znajdujących się w zagnieżdżonym archiwum tar podczas jego rozpakowywania. Luki można używać do obejścia systemów weryfikacji archiwów i rozpakowywania plików, dla których nie przeprowadzono walidacji.

Luka ta objawia się również w forkach biblioteki async-tar, takich jak tokio-tar, krata-tokio-tar i astral-tokio-tar, a także w narzędziach opartych na tych bibliotekach, na przykład w menedżerze pakietów uv, który jest rozwijany jako wysokowydajna alternatywa dla «pip» w projektach w języku Python. Wśród popularnych projektów używających podatnych bibliotek są także zestaw narzędzi testcontainers do uruchamiania kontenerów docker oraz runtime WebAssembly wasmCloud. W repozytorium crates.is w ciągu ostatnich 90 dni biblioteka async-tar miała 1,3 mln pobrań, tokio-tar — 2,2 mln, testcontainers — 2,9 mln.

Luka jest spowodowana niewłaściwym wyborem pozycji przy analizie różnych wartości rozmiaru w nagłówkach ustar i PAX. W archiwach tar w formacie PAX dla każdego pliku wewnątrz archiwum podawane są dwa nagłówki — tradycyjny ustar i rozszerzony PAX. Problem wynika z tego, że podatne biblioteki podczas rozpakowywania plików zamiast obliczać przesunięcie na podstawie rozmiaru z nagłówka PAX, brały rozmiar z przestarzałego nagłówka ustar. Przy zerowej wartości rozmiaru w nagłówku ustar, następująca po nim zawartość pliku była przetwarzana jako poprawny blok nagłówków TAR dla następnego pliku.

Wrażliwość w bibliotekach Rust dla formatu TAR, prowadząca do dekompresji plików z zagnieżdżonego archiwum
Wrażliwość w bibliotekach Rust dla formatu TAR, prowadząca do dekompresji plików z zagnieżdżonego archiwum

Aby przeprowadzić atak, wystarczy stworzyć archiwum TAR, w którym w nagłówku ustar wskazany jest zerowy rozmiar, a w nagłówku formatu PAX aktualny rozmiar, przez co zawartość pliku z innym archiwum tar będzie przetwarzana jako część głównego archiwum. Przykład kodu do tworzenia takich archiwów jest zamieszczony na GitHub. Luka została usunięta w wersjach tokio-tar 0.5.6 i uv 0.9.5. W przypadku pozostałych bibliotek poprawki są na razie niedostępne, ale dla astral-tokio-tar, async-tar i krata-tokio-tar przygotowano osobne patche.

Luki bezpieczeństwa w bibliotekach przyznano poziom zagrożenia 8.1 w skali 10, ponieważ problem ten może być wykorzystany do nadpisywania rozpakowywanych plików (w podatnych implementacjach rozpakowywane będą nie te pliki, które były widoczne w archiwum). Jednocześnie luka w menedżerze pakietów uv oznaczona jest jako niebezpieczna, ponieważ jeśli atakujący ma wpływ na zawartość oryginalnego archiwum, to nie ma sensu komplikować ataku i wykorzystywać lukę poprzez zagnieżdżone archiwum, kiedy można osiągnąć wykonanie kodu poprzez skrypty budujące w głównym archiwum.

Badacze, którzy odkryli lukę, zaproponowali kilka hipotetycznych scenariuszy ataków, które pozwalają obejść kontrole bezpieczeństwa i osiągnąć wykonanie kodu poprzez zastąpienie plików konfiguracyjnych lub ingerencję w proces budowy. Zakłada się, że przesłane archiwum będzie mogło przejść zautomatyzowaną weryfikację skanerem bezpieczeństwa i ręczny audyt, w trakcie którego audytor nie zwróci uwagi na dziwne zagnieżdżone archiwum z innymi plikami, a następnie podczas rozpakowywania za pomocą bibliotek Rust z archiwum zostanie wyodrębniona inna zawartość, niż oczekiwano.

Na przykład, atakujący może przesłać zmodyfikowane archiwum do repozytorium PyPI, które przejdzie weryfikację na podstawie analizy zawartości głównego archiwum, zawierającego legalny plik pyproject.toml. Podczas przetwarzania tego pakietu za pomocą narzędzia uv legalny plik pyproject.toml zostanie zastąpiony złośliwą wersją z zagnieżdżonego archiwum, zawierającą polecenia, które zostaną wykonane podczas budowy na komputerze programisty lub w systemie ciągłej integracji. Podobnie, można zorganizować nadpisywanie plików kontenera podczas wyodrębniania obrazu kontenera za pomocą narzędzi testcontainers.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster