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.

ZIP-Archive auf der Konsole unter Linux

ZIP-Archive können unter Linux nicht nur mithilfe von grafischen Anwendungen auf dem Desktop erzeugt werden, sondern ebenfalls über die Konsole. Dazu existieren die beiden Kommandos zip und unzip. Das Kommando zip dient der Komprimierung von Dateien und Ordnern. Soll eine oder mehreren Dateien zu einem Archiv verbunden werden, so sieht dies auf der Konsole wie folgt aus:

zip beispiel.zip text1.md text2.md

Auch die Komprimierung von ganzen Ordnern ist mit dem zip-Kommando möglich:

zip -r beispiel.zip texte

Neben der Erzeugung von normalen ZIP-Archiven, können auch verschlüsselte Archive mittels des Parameters -e erzeugt werden:

zip -e beispiel.zip text1.md text2.md

Nach der Eingabe des Kommandos wird der Nutzer nach einem entsprechenden Passwort für die Verschlüsselung gefragt. Soll ein Archiv wieder dekomprimiert werden, so wird das Kommando unzip genutzt.

unzip beispiel.zip

Das Kommando bietet nicht nur die Möglichkeit ein Archiv zu dekomprimieren, sondern kann den Inhalt des Archivs ausgeben, ohne dieses zu dekomprimieren:

unzip -l beispiel.zip

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
Preis: Kostenlos

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.

Windows das Suchen in Zip Dateien abgewöhnen

Windows hat die doofe Angewohnheit bei der Suche von Dateien auch in Zip Dateien nachzuschauen. Möchte man dieses Verhalten abschalten so begibt man sich auf die Kommandozeile und gibt

regsvr32 /u /s zipfldr.dll

ein. Danach sucht Windows nicht mehr in Zip Dateien. Möchte man das ganze später wieder aktivieren reicht ein einfaches

regsvr32 zipfldr.dll

auf der Kommandozeile.