Skip to main content

IO::Uncompress::Unzip CVE-2026-48959

| EUVDEUVD-2026-32043 HIGH
Inefficient Algorithmic Complexity (CWE-407)
2026-05-27 CPANSec GHSA-7vxx-5gqr-7r44
7.5
CVSS 3.1 · Vendor: CPANSec
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Recon
    Identify Perl service accepting ZIP uploads
  2. Delivery
    Craft archive with large compressed entry preceding target
  3. Exploit
    Submit ZIP to vulnerable endpoint
  4. Install
    Service invokes IO::Uncompress::Unzip->new with Name option
  5. C2
    fastForward per-byte loop pins worker CPU
  6. Execute
    Repeat across workers to exhaust capacity
  7. Impact
    Service-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.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.0% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

IO::Uncompress::Unzip 0 <2.220

Affected Packages

euvd io_uncompress_unzip fix: 2.220

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

Vendor (CPANSec) PRIMARY 7.5 HIGH
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Red Hat 5.0 MEDIUM

Primary rating from Vendor (CPANSec).

CVSS VectorVendor: CPANSec

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High

Lifecycle Timeline

3
CVE Published
Jun 22, 2026 - 06:03 cve.org
HIGH 7.5
CVSS changed
May 29, 2026 - 16:27 NVD
7.5 (HIGH)
CVE Published
May 27, 2026 - 02:29 nvd
UNKNOWN (no severity yet)

DescriptionCVE.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

EPSS Score
0.0%
Top 96% exploitable
Exploit
POC
Public exploit code exists
Data Quality
7 sources
Confidence: High

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC Yes
EPSS 0.0%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
Poc
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact· derived
Medium

Priority Score

58
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +38
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

Vendor StatusVendor

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy