Stimmt es, dass ein Tarball den Speicherort von Dateien ändern kann, unabhängig von den Befehlen, die zum Extrahieren verwendet werden?

27

Ich habe einen Kollegen, der sagt, dass Sie vorsichtig sein müssen, um Tarballs zu extrahieren, da sie Änderungen vornehmen können, die Sie nicht kennen. Ich habe immer gedacht, dass ein Tarball nur eine Hierarchie komprimierter Dateien ist. Wenn Sie ihn also nach / tmp / example / extrahieren, kann er unmöglich eine Datei in / etc / oder so etwas schleichen.

Adam R. Gray
quelle
1
Um welche Betriebssystemumgebung (en) handelt es sich? GNU / Linuxs tar hat eine -POption, die sein Verhalten in dieser Hinsicht beeinflusst.
Jeff Schaller
1
Ich denke CentOS in diesem Fall, aber ich würde gerne wissen, was ich wissen sollte.
Adam R. Gray
1
Für eine längere Zeit konnte GNU tar auf eine Weise getäuscht werden, die es erlaubte, es zB zu entfernen, /etc/passwdfalls es als root ausgeführt wurde. Ich glaube, dass dies seit gtareiniger Zeit eine ähnliche Sicherheit bietet wie Sie star.
Schily

Antworten:

41

Verschiedene Dienstprogramme verhalten sich in dieser Hinsicht unterschiedlich. Es ist also gut, vorsichtig zu sein. Listen Sie für eine Tar-Datei, die Sie nicht erstellt haben, immer das Inhaltsverzeichnis auf, bevor Sie sie extrahieren.

Solaris-Teer :

Die genannten Dateien werden aus der Tarfile extrahiert und relativ zum aktuellen Verzeichnis in das in der Tarfile angegebene Verzeichnis geschrieben. Verwenden Sie die relativen Pfadnamen der zu extrahierenden Dateien und Verzeichnisse.

Absolute Pfadnamen, die im tar-Archiv enthalten sind, werden mit den absoluten Pfadnamen entpackt, dh der führende Schrägstrich (/) wird nicht entfernt.

Im Fall einer TAR-Datei mit vollständigen (absoluten) Pfadnamen, wie z.

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

... wenn Sie eine solche Datei extrahieren, erhalten Sie beide Dateien.

GNU Teer :

Standardmäßig löscht GNU tar /bei der Eingabe oder Ausgabe einen führenden Wert und beschwert sich über Dateinamen, die eine ..Komponente enthalten. Es gibt eine Option, die dieses Verhalten deaktiviert:

--absolute-names

-P

Entfernen Sie keine führenden Schrägstriche von Dateinamen und lassen Sie Dateinamen zu, die eine ..Dateinamenskomponente enthalten.

... wenn Sie eine Tar-Datei mit vollständigem Pfad mit GNU tar extrahieren, ohne die -POption zu verwenden, werden Sie darauf hingewiesen :

tar: Entfernen von führenden /von Mitgliedsnamen

und extrahiert die Datei in Unterverzeichnisse Ihres aktuellen Verzeichnisses.

AIX-Teer :

sagt nichts darüber aus und verhält sich wie der Solaris-Teer - er erstellt und extrahiert Teer-Dateien mit vollständigen / absoluten Pfadnamen.

HP-UX tar : (bessere Online-Referenz erwünscht)

WARNUNGEN

Es gibt keine Möglichkeit, einen absoluten Pfadnamen an einer relativen Position wiederherzustellen.

OpenBSD tar :

-P

/Entfernen Sie keine führenden Schrägstriche ( ) von Pfadnamen. Standardmäßig werden führende Schrägstriche entfernt.

Unter macOS, FreeBSD und NetBSD sind ebenfalls -POptionen implementiert tar, mit der gleichen Semantik, mit dem Zusatz, dass tarunter FreeBSD und macOS "das Extrahieren von Archiveinträgen verweigert wird, deren Pfadnamen enthalten ..oder deren Zielverzeichnis durch einen Symlink geändert wird", ohne -P.

schilytools star :

-/

Entfernen Sie beim Extrahieren eines Archivs keine führenden Schrägstriche aus den Dateinamen. Tar-Archive mit absoluten Pfadnamen sind normalerweise keine gute Idee. Bei anderen tar-Implementierungen werden sie möglicherweise nie extrahiert, ohne vorhandene Dateien zu beschädigen. Star entfernt aus diesem Grund im Extraktionsmodus standardmäßig führende Schrägstriche aus den Dateinamen.

Jeff Schaller
quelle
2
Für eine lange Zeit ignoriert GNU tar die Tatsache , dass ein Pfadname enthält , ..ist ein Sicherheitsrisiko, so verwenden staroder ein kürzliche gtar. Schauen Sie sich auch die starBeispiel-Tar-Archive an, die handgefertigte tarHeader enthalten, die bei den meisten tarImplementierungen dazu führen, dass Dateien ohne Warnung entfernt werden.
Schily
@schily gilt das laut Jeffs Zitaten nicht auch für tarSolaris, AIX und HP-UX? Wenn ja, warum nur auf GNU-Teer hinweisen, vor allem, wenn (wiederum gemäß dem obigen Zitat) sie geändert haben, um nicht zu akzeptieren ..? Probleme mit fehlerhaften Eingaben sind natürlich Fehler, und ich nehme an, Sie haben sie als solche gemeldet.
Ilkkachu
1
Historische Tar-Implementierungen überprüfen solche Dinge nicht. Ich musste die Bemerkung machen, weil behauptet wurde, dass GNU-Teer ohne Probleme ist, ohne eine Veröffentlichung zu erwähnen. Übrigens: Eine starsolche Liste ohne Erwähnung (die älteste freie Implementierung) muss als unvollständig angesehen werden.
Schily
@schily, ich suchte nach Manpages für die wichtigsten Betriebssysteme (die möglicherweise unterschiedliche tar-Implementierungen haben); Wenn Sie einen Link zur Online-Manpage von star haben, würde ich ihn gerne einbinden.
Jeff Schaller
9

Eines der lustigen Dinge, die mit Teerbomben passieren , ist, dass sie die Berechtigungen des aktuellen Verzeichnisses in das im Tarball enthaltene Verzeichnis ändern.

Zum Beispiel, wenn ein Tarball das '.' Wenn Sie das Verzeichnis in / tmp als root entpacken, wird es Ihr System ruinieren, indem Sie / tmp für alle außer root unbeschreibbar machen.

Mosvy
quelle
Und wenn Sie es entpacken /, werden die Berechtigungen des Stammverzeichnisses geändert, was unerwartete Konsequenzen hat (ich erinnere mich, dass beim Anmelden an einer Konsole "/ bin / bash kann nicht ausgeführt werden" angezeigt wurde, da /es sich um Modus 770 handelte).
Law29
1
Ich habe dies mit offizieller Software erlebt - die Github-Releases von "Rancher-Compose" enthalten "alle". Zum Beispiel in der tar-Datei und nuke / tmp, wenn Sie sie dort extrahieren.
Harald