Czy to prawda, że ​​plik tarball może zmienić miejsce wyodrębniania plików bez względu na polecenia użyte do jego wyodrębnienia?


27

Mam współpracownika, który mówi, że musisz uważnie wyciągać tarballi, ponieważ mogą wprowadzać zmiany, o których nie wiesz. Zawsze myślałem, że archiwum to po prostu hierarchia skompresowanych plików, więc jeśli rozpakujesz go do / tmp / example /, nie będzie on mógł wślizgnąć się do pliku / etc / ani nic podobnego.


1
Jakie środowisko (-a) systemu operacyjnego dotyczy? Tar GNU / Linux ma -Popcję, która wpływa na jego zachowanie w tym zakresie.
Jeff Schaller

1
Chyba CentOS w tym przypadku, ale chciałbym wiedzieć wszystko, co powinienem wiedzieć.
Adam R. Gray

1
Przez dłuższy czas tar GNU można było oszukać w sposób pozwalający go np. Usunąć /etc/passwdw przypadku uruchomienia jako root. Od pewnego czasu uważam, że gtardaje to podobne bezpieczeństwo, jak w przypadku star.
schily

Odpowiedzi:


41

Różne narzędzia tar działają pod tym względem inaczej, więc dobrze jest zachować ostrożność. W przypadku pliku tar, który nie został utworzony, zawsze wypisz spis treści przed wypakowaniem go.

Tar Solaris :

Nazwane pliki są wyodrębniane z pliku tar i zapisywane w katalogu określonym w pliku tar, w stosunku do bieżącego katalogu. Użyj względnych nazw ścieżek plików i katalogów do wyodrębnienia.

Bezwzględne nazwy ścieżek zawarte w archiwum tar są rozpakowywane przy użyciu bezwzględnych nazw ścieżek, to znaczy wiodący ukośnik do przodu (/) nie jest usuwany.

W przypadku pliku tar z pełnymi (bezwzględnymi) nazwami ścieżek, takimi jak:

/tmp/real-file
/etc/sneaky-file-here

... jeśli wyodrębnisz taki plik, skończysz na obu plikach.

GNU tar :

Domyślnie GNU tar usuwa wiodące /dane wejściowe lub wyjściowe i narzeka na nazwy plików zawierające ..komponent. Istnieje opcja, która wyłącza to zachowanie:

--absolute-names

-P

Nie usuwaj początkowych ukośników z nazw plików i zezwalaj na nazwy plików zawierające ..składnik nazwy pliku.

... jeśli wyodrębnisz pełny plik tar za pomocą GNU tar bez użycia -Popcji, powie ci:

tar: Usuwanie wiodących /z nazw członków

i rozpakuje plik do podkatalogów bieżącego katalogu.

Tar AIX :

nic o tym nie mówi i zachowuje się jak tar Solaris - utworzy i wyodrębni pliki tar z pełnymi / bezwzględnymi nazwami ścieżek.

Tar HP-UX : (mile widziane lepsze referencje online)

OSTRZEŻENIA

Nie ma możliwości przywrócenia bezwzględnej nazwy ścieżki do względnej pozycji.

Tar OpenBSD :

-P

Nie usuwaj wiodących ukośników ( /) z nazw ścieżek. Domyślnie usuwane są początkowe ukośniki.

Istnieją -Popcje zaimplementowane również tarw macOS, FreeBSD i NetBSD, z tą samą semantyką, z dodatkiem, że tarw FreeBSD i macOS „odmówi wyodrębnienia wpisów archiwalnych, których ścieżki zawierają ..lub których katalog docelowy zostałby zmieniony przez dowiązanie symboliczne” bez -P.

gwiazda schilytools :

-/

Nie usuwaj wiodących ukośników z nazw plików podczas rozpakowywania archiwum. Archiwa tar zawierające bezwzględne nazwy ścieżek są zwykle złym pomysłem. W przypadku innych implementacji tar prawdopodobnie nigdy nie zostaną one wyodrębnione bez blokowania istniejących plików. Z tego powodu gwiazdka domyślnie usuwa początkowe ukośniki z nazw plików w trybie wypakowywania.


2
Przez długi czas GNU tar ignorował fakt, że zawieranie nazwy ścieżki ..stanowi zagrożenie bezpieczeństwa, więc użyj starlub niedawno gtar. Zobacz także starprzykładowe archiwa tar zawierające ręcznie spreparowane tarnagłówki, które powodują, że większość tarimplementacji usuwa pliki nawet bez ostrzeżenia.
schily

@schily, zgodnie z cytatami Jeffa, czy nie dotyczy to również tarSolaris, AIX i HP-UX? Jeśli tak, to po co wskazywać tylko tarę GNU, zwłaszcza jeśli (ponownie zgodnie z cytatem powyżej), zmieniły się na nieakceptowanie ..? Problemy ze zniekształconymi danymi wejściowymi są oczywiście błędami i przypuszczam, że zgłosiłeś je jako takie.
ilkkachu

1
Historyczne implementacje tar nie sprawdzają takich rzeczy. Musiałem to zrobić, ponieważ twierdzono, że tar GNU działa bez problemów, nie wspominając o wydaniu. I BTW: taka lista bez wzmianki star(najstarsza darmowa implementacja) musi być postrzegana jako niekompletna.
schily

@schily, szukałem stron podręcznika dla głównych systemów operacyjnych (które mogą mieć różne implementacje tar); jeśli masz link do strony podręcznika online gwiazdy, chętnie go dołączę.
Jeff Schaller


9

Jedną z przezabawnych rzeczy, które zdarzają się z bombami tar, jest to, że zmieniają uprawnienia bieżącego katalogu na te zawarte w tarballu.

Na przykład, jeśli tarball zawiera „.” i rozpakujesz go w katalogu / tmp jako root, spowoduje to zniszczenie twojego systemu, czyniąc / tmp niezauważalnym przez nikogo innego niż root.


A jeśli go rozpakujesz /, zmieni to uprawnienia do katalogu głównego, co będzie miało nieoczekiwane konsekwencje (pamiętam, że dostaję „nie można wykonać / bin / bash” podczas logowania na konsoli, ponieważ /był to tryb 770).
Ustawa

1
Tak się stało z oficjalnym oprogramowaniem - wydania github „rancher-compose” wszystkie zawierają ”. na przykład w pliku tar i nuke / tmp, jeśli je tam rozpakujesz.
Harald
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.