You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
CVE-2019-9674 : zip bomb vulnerability in Lib/zipfile.py #80643
The reserved information of CVE-2019-9674 is shown below:
[Description]
[Lib/zipfile.py](https://github.com/python/cpython/blob/main/Lib/zipfile.py) in Python through 3.7.2 allows remote
attackers to cause a denial of service (resource consumption)
via a ZIP bomb.
[Additional Information]
The python zipfile library version 3.2, 3.3, 3.4, 3.5, 3.6,
3.7, 3.8. Allow attackers to cause a denial of service (disk
volume exhaustion) via a ZIP bomb.
We have found python standard library zipfile doesn't have
ZIP bomb detection and protection. If the user uses zipfile
library to unzip a ZIP bomb file, this might cause a denial
of service of the localhost.
[VulnerabilityType Other]
Denial-of-Service
Our proposed solutions:
1.The compression ratio:
Compression ratio = Uncompressed file size / Compressed file size
Since ZIP bomb file has a higher compression ratio (1028) than
normal ZIP file (1 to 3). Therefore, we calculate the compression
ratio and set a threshold for the detection.
2.Nested zip file
There is a high chance that it is zip bomb if it is a nested zip
file.
3.By limiting resources such as CPU, memory, disk usage.
Unsolved issue
However, we have not yet determined the compression ratio. We
temporarily set the compression ratio to 10, and if it exceeds, it
may be a ZIP bomb.
It is likely that detection may misjudge nested compressed files.
For example, under normal circumstances, compressed files are
included in the zip file.
Our solution code:
"""For ratio"""
def_exam_ratio(self, threshold=10):
"""If the ratio exceeds threshold, it may be a ZIP Bomb."""sum_file_size=sum([data.file_sizefordatainself.filelist])
sum_compress_size=sum([data.compress_sizefordatainself.filelist])
ratio=sum_file_size/sum_compress_sizeif (ratio>threshold):
raiseBadZipFile("Zip Bomb Detected")
"""For Nested zip file"""
if(members.filename.endswith(".zip")):
raise BadZipFile("Nested Zip File Detected")
I do not think that the library should limit the compression ratio. Large compression ratio is legit. For example, compressed file of size 1 GiB consisting of zeros has the compress ratio 1030 (and I suppose it is even larger if use bzip2 or lzma compressions).
If this is a problem for your program, your program should make a decision what ZIP files should be rejected.
I would request closing the other one as duplicate and opening this since this contains the actual report or perhaps the report could be copied to bpo-36260. Since Serhiy suggested closing this as not a bug I will leave it to him on resolution of the other issue too.
I would request closing the other one as duplicate and opening this since
this contains the actual report or perhaps the report could be copied to
bpo-36260. Since Serhiy suggested closing this as not a bug I will leave
it to him on resolution of the other issue too.
Thanks to the python community, both of these issues are the same.
I also think it's a good thing to make related documentation to reduce this type of problem rather than implementing it on a low-level zipfile module. Perhaps we can customize such a requirement through a pip package.
Activity
krnick commentedon Mar 28, 2019
Dear Python Community,
we found a python module vulnerability during these days and we got a CVE number, CVE-2019-9674 after reported it to cve.mitre.org.
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-9674
The reserved information of CVE-2019-9674 is shown below:
Our proposed solutions:
Unsolved issue
Our solution code:
"""For ratio"""
"""For Nested zip file"""
if(members.filename.endswith(".zip")):
raise BadZipFile("Nested Zip File Detected")
Thanks!
serhiy-storchaka commentedon Mar 28, 2019
I do not think that the library should limit the compression ratio. Large compression ratio is legit. For example, compressed file of size 1 GiB consisting of zeros has the compress ratio 1030 (and I suppose it is even larger if use bzip2 or lzma compressions).
If this is a problem for your program, your program should make a decision what ZIP files should be rejected.
I suggest to close this issue as "not a bug".
tirkarthi commentedon Mar 28, 2019
Going by CVE number and report is this a duplicate of bpo-36260 ?
brettcannon commentedon Mar 28, 2019
Closing as a duplicate of bpo-36260.
tirkarthi commentedon Mar 28, 2019
I would request closing the other one as duplicate and opening this since this contains the actual report or perhaps the report could be copied to bpo-36260. Since Serhiy suggested closing this as not a bug I will leave it to him on resolution of the other issue too.
brettcannon commentedon Mar 28, 2019
You can also leave a comment in the other issue saying there's more details
in the closed duplicate.
On Thu, Mar 28, 2019 at 9:54 AM Karthikeyan Singaravelan <
report@bugs.python.org> wrote:
krnick commentedon Mar 29, 2019
Thanks to the python community, both of these issues are the same.
I also think it's a good thing to make related documentation to reduce this type of problem rather than implementing it on a low-level zipfile module. Perhaps we can customize such a requirement through a pip package.