A zip bomb, also known as a Zip of Death or decompression bomb, is a malicious archive file designed to crash or render useless the program or system reading it. It is often employed to disable antivirus software, in order to create an opening for more traditional viruses.
Rather than hijacking the normal operation of the program, a zip bomb allows the program to work as intended, but the archive is carefully crafted so that unpacking it (e.g. by a virus scanner in order to scan for viruses) requires inordinate amounts of time, disk space or memory.
Details and use
A zip bomb is usually a small file for ease of transport and to avoid suspicion. However, when the file is unpacked its contents are more than the system can handle.
Today, most antivirus programs can detect whether a file is a zip bomb and so avoid unpacking it.
A trivial example of this is to create a zip file that contains one really large file consisting entirely of zeros:
$ dd if=/dev/zero of=/tmp/zero.txt bs=1024 count=$((10*1024*1024)) $ zip zero.zip zero.txt $ du -sh zero.* 11G zero.txt 10M zero.zip
Something like a naïve mail scanner that unpacks *.zip file attachments might run out of disk space trying to expand that.
Another example of a Zip bomb is the file 42.zip which is a zip file consisting of 42 kilobytes of compressed data, containing five layers of nested zip files in sets of 16, each bottom layer archive containing a 4.3 gigabyte (4 294 967 295 bytes; ~ 3.99 GiB) file for a total of 4.5 petabytes (4 503 599 626 321 920 bytes; ~ 3.99 PiB) of uncompressed data.  This file is still available for download on various websites across the Internet. In many anti-virus scanners, only a few layers of recursion are performed on archives to help prevent attacks that would cause a buffer overflow, an out of memory condition, or exceed an acceptable amount of program execution time. Zip bombs often (if not always) rely on repetition of identical files to achieve their extreme compression ratios. Dynamic programming methods can be employed to limit traversal of such files, so that only one file is followed recursively at each level - effectively converting their exponential growth to linear.
- Billion laughs, a similar attack on XML parsers
- Busy beaver, a program that produces the maximum possible output before terminating
- E-mail bomb
- Logic bomb
- Fork bomb