An integer underflow flaw, leading to a buffer overflow, was found in the way unzip uncompressed certain extra fields of a file. A specially crafted Zip archive could cause unzip to crash when the archive was tested with unzip's '-t' option.
oCERT reports an unzip flaw discovered by Michele Spagnuolo, Google Security Team:
The write error shows a problem in extract.c:test_compr_eb(), which was not expecting an uncompressed size of zero for an EF_NTSD extra block.
extract.c:test_compr_eb() gets a new validity test.
Red Hat would like to thank oCERT for reporting these issues. oCERT acknowledges Michele Spagnuolo of the Google Security Team as the original reporter.
Created attachment 969621 [details]
This seems to be the upstream fix mentioned in the comment 0.
Upstream patch in comment 2 does not address all related problems completely. See CVE-2014-9636 / bug 1184985 to address issues identified by the oCERT-2014-011 test case.
The problem the patch in comment 2 addresses is an uncompressed data size of 0 specified in certain extra field blocks (such as EF_NTSD mentioned in the report, but other types were affected as well). If a zip file indicated that uncompressed data size was 0, unzip skipped the check to ensure that there were still enough data in the current extra field block to hold compression data header. When using STORE compression (i.e. data stored uncompressed), this led to integer underflow, resulting in memcpy() getting called with excessively large size argument, causing it to over-read and over-write input and output buffers and crash. This is unlikely to allow code execution.
Affected code is only reached when running unzip in the test mode (unzip -t), but not when extracting zip archives.
Created unzip tracking bugs for this issue:
Affects: fedora-all [bug 1191118]
unzip-6.0-20.fc21 has been pushed to the Fedora 21 stable repository. If problems still persist, please make note of it in this bug report.
unzip-6.0-17.fc20 has been pushed to the Fedora 20 stable repository. If problems still persist, please make note of it in this bug report.
Red Hat Enterprise Linux 5 is now in Production 3 Phase of the support and maintenance life cycle. This has been rated as having Low security impact and is not currently planned to be addressed in future updates in Red Hat Enterprise Linux 5. For additional information, refer to the Red Hat Enterprise Linux Life Cycle: https://access.redhat.com/support/policy/updates/errata/
This issue has been addressed in the following products:
Red Hat Enterprise Linux 6
Red Hat Enterprise Linux 7
Via RHSA-2015:0700 https://rhn.redhat.com/errata/RHSA-2015-0700.html