ZIP-Bombe neu gedacht

ZIP-Bomben (oder Archivbomben im allgemeinen) sind ZIP-Dateien, welche beim dekomprimieren sehr groß werden. Der bekannteste Vertreter dieser Spezies ist die 42.zip. Bei dieser ZIP-Datei werden rekursiv immer weitere Dateien entpackt. Dies führt dazu das die 42 Kilobyte große Datei am Ende 4,5 Petabyte Speicherplatz auf der Festplatte benötigt. Solche Dateien werden meist benutzt, um Virenscanner in die Knie zu zwingen, da diese versuchen die Datei zu entpacken und dabei in den meisten Fällen scheitern.

David Fifield hat nun eine neue Art von ZIP-Bombe gebaut, welche ohne Rekursion auskommt. Das Problem ist das für die 42.zip alle Dateien entpackt werden müssen und nicht nur die erste Ebene. Er verfolgte zwei Ziele: maximale Kompressionsrate und das Ganze sollte möglichst kompatibel bleiben:

Maximize the compression ratio. We define the compression ratio as the the sum of the sizes of all the files contained the in the zip file, divided by the size of the zip file itself. It does not count filenames or other filesystem metadata, only contents.

Be compatible. Zip is a tricky format and parsers differ, especially around edge cases and optional features. Avoid taking advantage of tricks that only work with certain parsers. We will remark on certain ways to increase the efficiency of the zip bomb that come with some loss of compatibility.

Mit dieser neuen Art der ZIP-Bombe, welche überlappende Dateien innerhalb des ZIP-Container nutzt, kommt er auf folgende Werte:

zbsm.zip	42 kB	→	5.5 GB
zblg.zip	10 MB	→	281 TB
zbxl.zip	46 MB	→	4.5 PB (Zip64, less compatible)

Im Detail wird die neue ZIP-Bombe auf bamsoftware.com erklärt; dort lassen sich auch entsprechende Beispiele herunterladen. Nur entpackt werden sollten die Beispiele natürlich nicht.

Ordner mittels tar und gzip komprimieren

Möchte man unter Linux auf dem Terminal einen Ordner mittels tar und gzip komprimieren, so ist dies mit zwei Befehlen erledigt:

tar cvwf data.tar data

Damit wird der Ordner data in eine Tar-Datei archiviert. Bei den Buchstaben nach dem Befehl handelt es sich um die gewünschten Optionen (create, verbose, interactive, file). Eine Tar-Datei ist nicht komprimiert, da das Tar-Format die Daten der Dateien einfach hintereinander in der Tar-Datei anordnet. Zur Kompression der Tar-Datei wird gzip genutzt:

gzip -9 data.tar

Damit wird die Datei mittels gzip gepackt und trägt anschließend den Namen data.tar.gz. Das -9 teilt gzip mit, das die höchste Kompressionsstufe genutzt werden soll.

CPGZ-Datei beim Entpacken einer ZIP-Datei unter Mac OS X

Wenn man unter Mac OS X auf eine ZIP-Datei klickt, so wird diese Datei im Normalfall entpackt. In seltenen Fällen kann es allerdings passieren das z.B. aus der ZIP-Datei daten.zip die Datei daten.zip.cpgz ensteht.

Bei diesen CPGZ-Dateien handelt es sich um sogenannte Copy In, Copy Out-Archive bzw. Compressed cpio-Archive. Technisch betrachtet handelt es sich bei diesem Archiv um eine Datei, in welcher die entsprechenden Daten nacheinander in diese Datei geschrieben wurde. Meist werden diese anschließend noch mittels gzip komprimiert. Damit ähnelt cpio dem bekannteren tar-Format bzw. dessen komprimierter Version, dem tgz-Format. 1988 wurde cpio im POSIX.1-1988-Standard erwähnt; hat aber seit dem stark an Bedeutung eingebüßt. Es wird heutzutage noch beim RPM-Paketsystem und dem initramfs genutzt.

Die einfachste Methode eine solche ZIP-Datei trotzdem zu entpacken ist es eine zusätzliche Applikation wie The Unarchiver zu nutzen.

‎The Unarchiver
Price: Free

The Unarchiver kann solche Dateien, meist problemlos entpacken, auch wenn das Mac OS X eigene Archivprogramm an einer solchen Datei scheitert. Hervorgerufen wird dieses Verhalten meist durch defekte oder ungewöhnliche ZIP-Dateien. Die defekten Dateien können durch unvollständige Downloads oder bestimmte Webbrowser entstehen, welche den Dateityp nicht korrekt behandeln. Deshalb kann es manchmal auch helfen, die Datei erneut herunterzuladen. Wenn ein Fehler im Browser vermutet wird, sollte ein anderer Browser für den Download genutzt werden. Eine CPGZ-Datei kann im Terminal mittels:

ditto -x datei.zip.cpgz targetFolder

entpackt werden. Mit der Nutzung des Terminals kann auf externe Applikationen verzichtet werden. Sollte das Problem öfter auftreten, kann es allerdings nicht schaden, The Unarchiver zu installieren und nutzen. The Unarchiver war bis zum Aufkauf durch MacPaw freie Software, deren Quelltext auf BitBucket zu finden ist.