Downloads · 30 days
0
Rodion111/joblib-bz2-decompression-bomb-poc
joblib-bz2-decompression-bomb-poc is a machine learning model from Rodion111. Use it for the machine learning task on the model card, and read the license before you ship it in a product.
Vulnerability: BZ2CompressorWrapper.decompressorfile() has no decompression size limit File: joblib/compressor.py line ~145 Severity: CVSS 7.5 High (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H) CWE: CWE-409 (Improper Handling…
Downloads · 30 days
0
Access
Public
Updated Apr 8, 2026
Repo size
1.3 KB
Likes
0
Public
Click a slice to open those files.
Other1.5 KB · 35%
From the Hugging Face model README
Vulnerability: BZ2CompressorWrapper.decompressor_file() has no decompression size limit File: joblib/compressor.py line ~145 Severity: CVSS 7.5 High (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H) CWE: CWE-409 (Improper Handling of Highly Compressed Data) Affected: joblib <= 1.5.x (all versions with BZ2 support) Reported via: huntr.com bug bounty
| File | Compressed Size | Decompressed | Ratio |
|---|---|---|---|
joblib_bz2_100mb_bomb.joblib.bz2 | 347 bytes | 100 MB | 288,184:1 |
joblib_bz2_1gb_bomb.joblib.bz2 | 957 bytes | 1 GB | 1,044,932:1 |
import joblib
# 957 bytes → 1 GB memory allocation → OOM crash
data = joblib.load("joblib_bz2_1gb_bomb.joblib.bz2")
# Process is killed by OOM on systems with < 1 GB available memory
# joblib/compressor.py, BZ2CompressorWrapper.decompressor_file()
def decompressor_file(self, fileobj):
fileobj = self.fileobj_factory(fileobj, "rb") # bz2.BZ2File(fileobj, "rb")
return fileobj # No maxsize limit — reads until EOF
Compare to the LZMA bomb filed earlier (also lacks maxsize) — BZ2 is even more efficient:
Filed via huntr.com Model File Format bug bounty program.