CVE-2026-48961
High · 7.3CVSS
7.3
EPSS
0.4%
Published
May 27, 2026
CISA due date
—
Cloudanix analysis
A specially crafted ZIP file can make a Perl ZIP-inspection tool crash, potentially disrupting automated file-checking workflows.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Low
- Impact
- Denial Of Service
- Component
- Application
- Class
- Denial of service
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
CVE-2026-48961 is a denial-of-service flaw in the zipdetails command-line tool bundled with Perl IO::Compress versions 2.207 through versions before 2.220. When zipdetails parses a ZIP archive containing an Info-ZIP Unix Extra Field with tag 0x7875 and a UID Size or GID Size of 8 bytes, the code path calls a misspelled helper function, unpackValueQ, instead of the defined unpackValue_Q function. This results in an “Undefined subroutine &main::unpackValueQ” runtime error and terminates the zipdetails process with exit status 255. The defect affects the CLI analysis tool, not normal IO::Compress or IO::Uncompress library callers.
Why it matters to the business
The main operational risk is disruption of workflows that automatically inspect, validate, triage, or extract metadata from ZIP files using zipdetails. A crafted archive can cause those jobs to fail, potentially interrupting malware analysis pipelines, file-ingestion checks, software supply-chain review processes, or automated archive metadata reporting. Because this is not listed in CISA KEV, is not known to be used in ransomware campaigns, has low EPSS likelihood, and has no reported public exploit maturity, urgency is moderate; however, organizations that run zipdetails on untrusted archives should prioritize remediation to prevent trivial processing failures.
How an attack unfolds
An attacker creates or modifies a ZIP archive so that it includes an Info-ZIP Unix Extra Field with tag 0x7875 and sets either the UID Size or GID Size field to 8. The attacker then delivers the archive to a system or workflow that runs the vulnerable zipdetails CLI tool against untrusted ZIP content, such as an automated file-inspection service, developer toolchain, email attachment analysis process, or malware triage script. During parsing, zipdetails attempts to decode the 8-byte UID or GID value, reaches the misspelled decode path, raises an undefined-subroutine exception, and exits abnormally. The attacker’s practical outcome is denial of service against that inspection step rather than compromise of the underlying IO::Compress libraries.
How to fix it
Upgrade IO::Compress to version 2.220 or later wherever the bundled zipdetails CLI tool is installed or used. If upgrading immediately is not possible, avoid running vulnerable zipdetails versions on untrusted ZIP archives, isolate ZIP metadata inspection in a sandboxed worker, and ensure automation handles zipdetails failures without halting critical pipelines. Because the affected component is the bundled CLI tool, applications that only use IO::Compress or IO::Uncompress library APIs are not directly affected by this defect, but packages should still be updated to remove the vulnerable utility from the environment.
How to confirm the fix worked
Confirm the installed IO::Compress version is 2.220 or later and verify the zipdetails script no longer contains a call to unpackValueQ without the underscore. On systems with Perl modules installed, check the module version using package-management tooling or a Perl one-liner such as querying IO::Compress::Zip::VERSION, and verify the zipdetails executable comes from the updated package. As a functional validation, run the updated zipdetails against a controlled ZIP sample containing an Info-ZIP Unix Extra Field with an 8-byte UID or GID and confirm it does not exit with “Undefined subroutine &main::unpackValueQ” or status 255.
Typical attack path
- Identify a target workflow that runs the Perl zipdetails CLI tool on ZIP archives.
- Craft a ZIP archive containing an Info-ZIP Unix Extra Field with tag 0x7875.
- Set the UID Size or GID Size in that extra field to 8 bytes.
- Submit or deliver the crafted archive to the target workflow.
- The vulnerable zipdetails process parses the archive and calls the misspelled unpackValueQ helper.
- zipdetails terminates with an undefined-subroutine error and exit status 255, disrupting the workflow that depended on it.
How to detect it
Review logs from file-ingestion services, CI jobs, malware-analysis sandboxes, email attachment scanners, archive metadata pipelines, and developer automation that invoke zipdetails. Look for abnormal process exits with status 255 and Perl runtime errors referencing “Undefined subroutine &main::unpackValueQ”. Correlate these crashes with recently processed ZIP files, especially files from external or untrusted sources. Preserve suspicious ZIP samples and inspect their central directory or local file headers for an Info-ZIP Unix Extra Field with tag 0x7875 and UID Size or GID Size equal to 8. There are no known named threat actors, KEV exploitation, ransomware usage, or mature public exploit campaigns associated with this issue as provided, so detection should focus on crash artifacts and malicious or malformed ZIP inputs rather than actor-specific infrastructure.
- Undefined subroutine &main::unpackValueQ
- unpackValueQ
- decodeLitteEndian
- zipdetails
- exit status 255
- Info-ZIP Unix Extra Field
- 0x7875
- UID Size: 8
- GID Size: 8
What your security team should do
- Inventory systems, containers, CI images, malware-analysis sandboxes, and developer workstations that include Perl IO::Compress versions 2.207 through before 2.220 or the bundled zipdetails CLI tool.
- Prioritize upgrades to IO::Compress 2.220 or later on systems that process untrusted ZIP archives automatically.
- Add monitoring for zipdetails crashes containing “Undefined subroutine &main::unpackValueQ” to identify attempted or accidental triggering of the flaw.
- Ensure file-processing pipelines treat zipdetails failures as non-fatal where possible and route failed samples for review instead of stopping the entire workflow.
- Sandbox archive-inspection tooling that handles external or untrusted files, even after patching, to reduce impact from future parser bugs.
- Because KEV and ransomware flags are negative and EPSS is low, treat this as a targeted hardening and reliability issue rather than an emergency internet-wide incident unless zipdetails is exposed in critical ingestion paths.
The record
IO::Compress versions from 2.207 before 2.220 for Perl ship a zipdetails CLI tool that crashes with undefined subroutine on Info-ZIP Unix Extra Field with 8-byte UID or GID. When decode_ux() in bin/zipdetails handles an Info-ZIP Unix Extra Field (tag 0x7875) with UID Size or GID Size set to 8, causing zipdetails to decode an 8-byte UID or GID value, it dispatches through decodeLitteEndian(), which calls a misnamed helper unpackValueQ. The actual function defined in the same file is unpackValue_Q (with underscore); the call raises 'Undefined subroutine &main::unpackValueQ' and the script exits with status 255. Library callers of IO::Compress and IO::Uncompress are not affected; the defect is in the bundled CLI tool.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| openSUSE:Leap 16.0 | perl-IO-Compress | 0 | 2.220.0-bp160.1.1 |
| openSUSE:Tumbleweed | perl-IO-Compress | 0 | 2.220.0-2.1 |
Related vulnerabilities
- CVE-2026-48962 IO::Compress versions before 2.220 for Perl can execute arbitrary code in… Also affects perl-IO-Compress
- CVE-2026-109618 PHP uses longjmp() for out-of-memory (OOM) errors to exit the current context and abort… CWE-755
- CVE-2026-109619 PHP has various global state that temporarily points into request memory. CWE-755
- CVE-2026-105757 vLLM is an inference and serving engine for large language models. CWE-755
- CVE-2026-102274 PyJWT is a Python implementation of JSON Web Token standards. CWE-755
- CVE-2026-49305 Permission control vulnerability in the Wi-Fi enhancement module. Impact: Successful… CWE-755
- CVE-2026-45819 baseline-browser-mapping 2.x before 2.11.0 calls process.exit() instead of throwing on… CWE-755
- CVE-2026-52856 Wings is the server control plane for Pterodactyl, a free, open-source game server… CWE-755