Una Zip Bomb è definita come bomba a decompressione perché genera un’esplosione di dati in grado di rallentare i nostri computer fino a bloccarli. Una tecnica molto semplice che sfrutta gli algoritmi di compressione dei più noti programmi come Win Zip per realizzare file all’apparenza innocui. L’attacco Zip Bomb rientra nella categoria dei Denial of Service perché punta a rendere inutilizzabile il sistema saturando le risorse di memoria a disposizione.
In rete circola ancora il famoso file 42.zip, un archivio di soli 42 KB ma in grado di scatenare una potenza di fuoco di circa 4 PetaByte. Per avere un paragone della misura dei PetaByte basti pensare che i nostri hard disk possono disporre mediamente di qualche TeraByte. Per ottenere un PetaByte occorrono 1024 Terabytes, quindi decisamente una dimensione impressionante!
Ma torniamo al nostro 42.zip che è fatto con una struttura innestata di archivi che scende per 5 livelli. Ogni livello contiene 16 archivi e ogni archivio è il livello sottostante fatto di altri 16 archivi. Al quinto livello ogni archivio contiene un file di 4 GB e i conti tornano in fretta (4,5 GB * 16 * 16 * 16 * 16 = 4 718 598 GB = 4,5 PT).
All’apertura del file il programma tenterà di aprire ognuno degli archivi contenuti all’interno e proseguirà a decomprimere fino ad arrivare ai file da 4 GB. È facile intuire che in questo modo le capacità di un computer vengano saturate in pochissimo tempo (sia in termini di RAM che eventualmente dal punto di vista del disco fisso).
Ma come è possibile trasformare oltre 4 PT di informazioni in soli 42 KB? È la natura stessa degli algoritmi di compressione a creare il tranello da cui scaturiscono le Zip Bomb. Infatti, generalmente questi algoritmi sfruttano le parti del file ripetute. La codifica di Huffman, che costituisce la base di algoritmi come DEFLATE usati da Win Zip o Win Rar, permette di ridurre le dimensioni di un file nel modo più efficiente possibile. Talmente efficiente che in alcuni casi diventa pericoloso!
Tipicamente un’informazione ripetuta può essere raggruppata indicando, nella codifica, il simbolo (in questo caso il carattere) e il numero di ripetizioni dello stesso. Esasperando a dismisura il concetto è possibile creare un file enorme che contiene un solo carattere ripetuto tante volte. In sostanza l’algoritmo di compressione troverà la ripetizione di uno stesso carattere per n volte e la codificherà come una tupla (carattere, n), riducendo in modo drastico le dimensioni del file. Ed ecco creata la nostra Zip Bomb: tanti file di testo che contengono lo stesso carattere ripetuto, innestati in vari livelli!
Nonostante siano passati molti decenni dalla creazione della prima Zip Bomb (erano gli inizi del 2000), rimane un attacco estremamente efficace e ancora oggi utilizzato. Ad esempio la vulnerabilità CVE-2017-16129 dove il client HTTP è vulnerabile agli attacchi con le Zip Bomb. In realtà l’archivio in se non provoca grandi problemi, a parte un’ingente uso di risorse, ma lascia il client vulnerabile ad altri possibili attacchi.
Lo stesso è accaduto non molto tempo fa, nel 2020, quando con la vulnerabilità CVE-2019-9674 si è scoperto che la libreria di Python zipfile.py fino alla versione 3.7.2 è passibile di attacchi su base Zip Bomb. Sul sito del NIST è possibile vedere i dettagli di questi attacchi come cercare le vulnerabilità diffuse in passato.
In conclusione, quindi, rimane il monito di prestare estrema attenzione sia quando navighiamo sia quando scarichiamo file di cui non sappiamo la provenienza. Talvolta anche un file mandato da un amico potrebbe contenere questo fastidioso Denial of Service, facendo annaspare il nostro computer alla ricerca di nuove risorse per aprire quel benedetto archivio!