Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconIdentify Perl service accepting ZIP uploads
-
DeliveryCraft archive with large compressed entry preceding target
-
ExploitSubmit ZIP to vulnerable endpoint
-
InstallService invokes IO::Uncompress::Unzip->new with Name option
-
C2fastForward per-byte loop pins worker CPU
-
ExecuteRepeat across workers to exhaust capacity
-
ImpactService-wide denial of service
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V2 - Validation and Business Logic Algorithmic complexity limits
|
| Exploitation Conditions | The target application must (1) accept ZIP archive content from an untrusted source and (2) instantiate IO::Uncompress::Unzip with the Name => $target option to extract a specific named entry - bulk sequential extraction without Name does not invoke the vulnerable fastForward() seek path in the same way. The attacker-supplied entry must precede the named target in the archive layout and have a large compressed size (impact scales linearly up to the non-Zip64 4 GiB cap, so meaningful CPU starvation requires entries in the hundreds-of-megabytes to multi-gigabyte range). Limiting factors: pure availability impact only (C:N/I:N), no code execution or data exposure; exploitation requires the victim service to actually read the malicious archive, so passive file storage that never invokes the module is unaffected; upload-size limits at the web tier (e.g., nginx client_max_body_size, application-level caps) directly cut the achievable CPU cost. |
| Impact | The CVSS 3.1 vector AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H (7.5 High) correctly captures the picture: an unauthenticated, low-complexity, network-reachable attack producing only availability impact. EPSS at 0.02% (4th percentile) and the absence of CISA KEV listing indicate this is not seeing opportunistic mass exploitation in the wild, consistent with an algorithmic-complexity DoS that requires a target application to actually parse attacker-supplied ZIPs. The 'Information Disclosure' tag in the input data conflicts with the CVSS vector (C:N) and the description (CPU exhaustion only) - the tag appears mis-applied and should be treated as DoS, not info-disclosure. Real-world priority is moderate: high for services that accept untrusted uploads and process them with IO::Uncompress::Unzip (mail scanners, CI artifact handlers, web upload endpoints), low for batch tooling operating on trusted archives. |
| Exploit ScenarioDerived | An attacker uploads a ZIP file containing a single named entry whose compressed size approaches the 4 GiB non-Zip64 cap to a Perl-based service (for example, a mail attachment scanner, document-conversion endpoint, or CI artifact intake) that calls IO::Uncompress::Unzip->new($zip, Name => $target) to extract a specific member. The fastForward() seek over the preceding bytes degenerates into a per-byte read loop, pinning a worker process at 100% CPU for an extended period; repeating the request across worker slots starves the service and produces a denial of service. No public exploit code has been identified at time of analysis, but the trigger condition is trivially reproducible from the patch diff. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – May 29, 2026
Denial of service in the Perl module IO::Uncompress::Unzip before version 2.220 allows remote attackers to cause CPU exhaustion by supplying a crafted ZIP archive that triggers a per-byte read loop in the fastForward() routine. No public exploit identified at time of analysis, and EPSS rates exploitation probability at 0.02%, but any application that accepts untrusted ZIP files and extracts a named entry through this module is exposed to availability impact.
RemediationAI
Upgrade the IO-Compress distribution to version 2.220 or later from CPAN (the vendor-released patch is shipped in 2.220 per https://metacpan.org/release/PMQS/IO-Compress-2.220/changes, and the source fix is commit 68db44076f4c1a86a2ffe53a958eac6cabaf72e2). Where immediate upgrade is not possible, compensating controls include rejecting or sandboxing untrusted ZIP archives, enforcing strict size caps on uploaded compressed entries well below the 4 GiB non-Zip64 limit, and wrapping IO::Uncompress::Unzip->new(..., Name => ...) calls with a Perl alarm()/SIGALRM CPU timeout - note that hard CPU timeouts will also abort large legitimate archives, so tune to expected workloads. Distribution package maintainers should pull in the upstream fix and republish; reference advisory disclosure was posted to oss-security at http://www.openwall.com/lists/oss-security/2026/05/27/2.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
IO::Uncompress::Unzip is a pure-Perl CPAN module (distributed in the IO-Compress distribution by Paul Marquess) used widely by Perl applications to read ZIP archives without shelling out to unzip. The root cause maps to CWE-407 (Inefficient Algorithmic Complexity): in fastForward(), the code intended to limit a read chunk size $c to the remaining offset, but mistakenly compared length $offset (the number of digits in the offset value, between 1 and 19) against $c, rather than $offset itself. The patch (commit 68db4407) changes the comparison to use $offset directly. Because the original 16 KiB chunk size collapses to 1-19 bytes per iteration, traversing the non-Zip64 4 GiB maximum compressed-entry size devolves into hundreds of millions of tiny read operations, burning CPU on what should be a fast seek.
Know when Io gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Primary rating from Vendor (CPANSec).
CVSS VectorVendor: CPANSec
Lifecycle Timeline
3DescriptionCVE.org
IO::Uncompress::Unzip versions before 2.220 for Perl allow CPU exhaustion via per-byte read loop in fastForward.
fastForward() compares length $offset (the digit count of the offset, 1 to 19) against the chunk size $c instead of $offset itself, so $c shrinks from 16 KiB to 1-19 bytes per iteration.
Extracting a named entry from an attacker supplied zip via IO::Uncompress::Unzip->new($zip, Name => $target) drives a per-byte read loop scaling with the entry's compressed size, up to the non-Zip64 4 GiB cap.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
sbt is a build tool for Scala, Java, and others. Rated high severity (CVSS 7.1), this vulnerability is no authentication
Denial of service in the zipdetails CLI tool bundled with Perl's IO::Compress versions 2.207 through 2.219 causes the sc
Uncaught exception in IO::Uncompress::Unzip before version 2.215 for Perl causes application-level denial of service whe
EUVD-2026-32043
GHSA-7vxx-5gqr-7r44
NVD
CVE.org
EPSS
VulDB
Exploit-DB