Чи правда, що тарбол може змінюватись, де витягуються файли, незалежно від команд, які використовуються для його вилучення?


27

У мене є колега, який каже, що вам потрібно бути обережними, добуваючи тарболи, оскільки вони можуть внести зміни, про які ви не знаєте. Я завжди думав, що тарбол - це лише ієрархія стислих файлів, тому, якщо ви витягнете його до / tmp / example /, він не може прокрасти файл у / etc / або щось подібне.


1
Яке середовище операційної системи вас турбує? Дьоготь GNU / Linux має -Pможливість, яка впливає на його поведінку в цьому плані.
Джефф Шаллер

1
Я думаю, що CentOS в цьому випадку, але я хотів би знати все, що повинен знати.
Адам Р. Грей

1
Більш тривалий час тар GNU можна обдурити таким чином, що дозволить зробити його, наприклад, видалити, /etc/passwdякщо він запускався як root. З деякого часу я вважаю, що це gtarдає схожу безпеку, як і ви star.
schily

Відповіді:


41

У цьому питанні різні комунальні послуги ведуть себе по-різному, тому добре бути обережними. Для файлу tar, який ви не створили, завжди перераховуйте вміст, перш ніж витягувати його.

Дьоготь Solaris :

Іменовані файли витягуються з tarfile та записуються в каталог, вказаний у tarfile, щодо поточного каталогу. Використовуйте відносні назви файлів та каталогів, які потрібно витягти.

Абсолютні імена контурів, що містяться в архіві смоли, розпаковуються за допомогою абсолютних імен шляхів, тобто провідна коса коса смуга (/) не знімається.

У випадку файлу tar з повними (абсолютними) іменами шляху, наприклад:

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

... якщо ви витягнете такий файл, ви отримаєте обидва файли.

GNU смола :

За замовчуванням, GNU tar відкидає лідерство /на вході чи виході та скаржиться на імена файлів, що містять ..компонент. Є варіант, який вимикає таку поведінку:

--absolute-names

-P

Не знімайте провідні косої риси з імен файлів, а дозволяйте імена файлів, що містять ..компонент імені файлу.

... якщо ви витягнете повністю запам’ятований файл tar, використовуючи гугл GNU, не використовуючи -Pпараметр, він скаже вам:

tar: видалення провідних /імен учасників

і витягне файл у підкаталоги вашого поточного каталогу.

AIX дьоготь :

про це нічого не говорить і поводиться як смола Solaris - вона створюватиме та витягуватиме файли tar з повною / абсолютною назвою шляху.

Тарг HP-UX : (вітається краща онлайн-довідка)

ПОПЕРЕДЖЕННЯ

Немає можливості відновити абсолютну назву шляху до відносної позиції.

OpenBSD tar :

-P

Не знімайте провідні косої риски ( /) від імен шляхів. За замовчуванням - знімати провідні риски.

Існують -Pпараметри, реалізовані для tarmacOS, FreeBSD та NetBSD, з тією ж семантикою, з тим, що tarна FreeBSD та macOS "відмовляться витягувати записи архівів, чиї імена шляхів містять ..або цільовий каталог буде змінено символьним посиланням" без -P.

зірка шилітоулз :

-/

Не витягуйте провідні риски з імен файлів під час вилучення архіву. Архів смоли, що містить абсолютні імена, зазвичай є поганою ідеєю. З іншими реалізаціями tar, вони, можливо, ніколи не будуть вилучені без крадіжки існуючих файлів. Зірка з цієї причини, за замовчуванням смужки, що ведуть нахил від імені файлів, коли вони перебувають у режимі вилучення.


2
Протягом тривалого часу тар GNU ігнорував той факт, що ім'я шляху містить ..ризик безпеки, тому використовуйте starабо недавно gtar. Подивіться також starприклади архівів tar, які містять вручну створені tarзаголовки, які призводять tarдо видалення файлів у більшості реалізацій навіть без попередження.
schily

@schily, згідно з цитатами Джеффа, це не стосується і tarSolaris, AIX та HP-UX? Якщо так, навіщо вказувати лише тар GNU, особливо якщо (знову ж таки, згідно з цитатою вище), вони змінилися на неприйняття ..? Проблеми із неправильним введенням - це, звичайно, помилки, і я вважаю, що ви повідомили про них як такі.
ilkkachu

1
Реалізація історичних смол не перевіряє подібні речі. Мені потрібно було зробити зауваження, оскільки висловлювалося твердження, що гугл GNU без проблем не згадуючи реліз. І BTW: такий список без згадування star(найстаріша безкоштовна реалізація) повинен розглядатися як неповний.
schily

@schily, я шукав man-сторінки для основних ОС (які можуть мати різну реалізацію tar); якщо у вас є посилання на сторінку чоловіка в Інтернеті, я би радий включити його.
Джефф Шаллер


9

Однією з найсмішніших речей, що трапляються з дьогтьовими бомбами, є те, що вони змінюють дозволи поточного каталогу на той, що включений у тарбол.

Наприклад, якщо тарбол містить знак '.' каталог, і ви розпакуєте його в / tmp як корінь, він зруйнує вашу систему, зробивши / tmp непридатним для всіх, крім root.


І якщо ви розпакуєте його /, це змінить дозволи кореневого каталогу, що матиме несподівані наслідки (я пам'ятаю, що при вході на консоль "не вдалося виконати / bin / bash", оскільки /був режим 770).
Закон29

1
У мене це траплялося з офіційним програмним забезпеченням - релізи github "rancher-compose" все містять ". у файлі tar, наприклад, та nuke / tmp, якщо ви витягаєте їх там.
Харальд
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.