CVE-2026-48962
High · 7.3CVSS
7.3
EPSS
0.5%
Published
May 27, 2026
CISA due date
—
Cloudanix analysis
A vulnerable Perl file-processing library can let an attacker turn a specially crafted filename pattern into code that runs on the server.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Low
- Impact
- Remote Code Execution
- Component
- Library
- Class
- Command Injection
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
IO::Compress for Perl before version 2.220 contains an injection flaw in File::GlobMapper. The vulnerable code places a caller-supplied output glob inside double quotes, stores that expression, and later evaluates it with Perl eval STRING. If an attacker can control the output glob value and include a literal double quote, they can break out of the intended quoted string and cause following text to be interpreted as Perl code. The injected Perl executes in the context of the process using the library, with that process's filesystem, network, and permission boundaries. Impact depends on how the consuming application exposes compression, archive, backup, file-conversion, or glob-mapping functionality, but can include unauthorized command execution, file read/write, data tampering, or service disruption.
Why it matters to the business
Applications or services that accept user-controlled file glob patterns and pass them into vulnerable IO::Compress/File::GlobMapper code may allow unauthenticated remote attackers to run code as the application process. This can lead to compromise of application servers, exposure or alteration of data accessible to the service account, interruption of business workflows that rely on Perl-based compression or file-processing jobs, and potential lateral movement if the affected process has broad permissions. The EPSS score is currently low and there is no known CISA KEV listing or reported ransomware use, but the bug is straightforward when the vulnerable call path is exposed, so internet-facing or automated file-processing services should still be prioritized for upgrade.
How an attack unfolds
An attacker first identifies an application, API, job runner, or file-processing workflow that uses IO::Compress/File::GlobMapper and allows an external party to influence the output glob argument. They then submit an output glob containing a double quote to terminate the library's intended quoted expression, followed by Perl syntax that performs the attacker's desired action. When the vulnerable application later calls the glob-mapping operation, _parseOutputGlob() stores the attacker-controlled expression and _getFiles() evaluates it using eval STRING. The injected Perl runs inside the application process, inheriting its privileges, environment variables, filesystem access, and network reachability. The attacker may use this to execute OS commands through Perl, modify files generated by the workflow, read application-accessible secrets, install persistence, or disrupt the service. Exploitability is highest where the output glob is accepted directly from unauthenticated network input or from untrusted archive/job metadata.
How to fix it
Upgrade IO::Compress to version 2.220 or later everywhere it is installed, including direct application dependencies, vendored Perl libraries, container images, build images, and system package installations. If using CPAN, update the IO::Compress distribution to 2.220 or newer and rebuild/redeploy affected applications. If using operating-system packages, apply the vendor security update that backports or includes the fix. If an immediate upgrade is not possible, prevent untrusted users from controlling output glob strings, reject literal double quotes and Perl metacharacter patterns in output glob inputs, avoid passing externally supplied glob expressions into File::GlobMapper, and run affected jobs with least-privilege service accounts in restricted execution environments. Treat input filtering as a temporary mitigation only; the durable fix is upgrading the library.
How to confirm the fix worked
Confirm that every runtime and build environment resolves IO::Compress to version 2.220 or later. Use Perl package inventory methods such as querying installed modules, checking CPAN dependency lock files, reviewing OS package versions, and inspecting container images. Verify that no application bundle or vendored library still contains an older IO::Compress release. Exercise representative compression or glob-mapping workflows after upgrade to ensure normal output glob handling still works. For exposure validation, review code paths for use of File::GlobMapper or IO::Compress APIs where output glob values originate from HTTP parameters, message queues, uploaded job files, archive metadata, configuration imports, or other untrusted sources. If temporary mitigations are deployed, test that inputs containing literal double quotes or Perl expression delimiters are rejected before reaching the library.
Typical attack path
- Identify a Perl-based application or service that performs compression, archive, backup, file-conversion, or file glob mapping using IO::Compress/File::GlobMapper.
- Find an input field, API parameter, job definition, configuration import, or metadata field that controls the output glob value.
- Submit a crafted output glob containing a literal double quote that escapes the library's quoting context and appends Perl expressions.
- Trigger the vulnerable file-mapping/compression operation so the stored output glob expression is processed.
- The vulnerable _getFiles() path executes eval STRING on the attacker-influenced expression.
- Injected Perl runs with the privileges of the calling process.
- Use the resulting execution to read or alter accessible files, execute system commands, stage additional payloads, disrupt processing, or move laterally within reachable systems.
How to detect it
Because this is a library-level injection issue, there may be no universal product log entry proving exploitation. Detection should focus on applications that expose output glob configuration or file-processing job definitions. Review HTTP access logs, API gateway logs, application logs, job scheduler logs, message queue payload archives, uploaded configuration/job files, and audit logs for output glob values containing a literal double quote followed by Perl syntax, command execution functions, backticks, semicolons, pipe characters, or shell redirection. Correlate suspicious submissions with child process creation by Perl interpreters, unexpected outbound connections from Perl-based services, unusual file writes in application working directories, new cron/systemd/user startup artifacts, or errors mentioning eval, File::GlobMapper, _parseOutputGlob, or _getFiles. Endpoint telemetry should be queried for perl processes spawning shells, curl/wget, scripting interpreters, or system administration commands during or shortly after compression/glob-mapping requests. If application logs preserve request bodies or job definitions, inspect historical records from the time the vulnerable version was deployed through completion of the upgrade. Absence of these artifacts does not prove non-exploitation if inputs were not logged.
- File::GlobMapper
- _parseOutputGlob
- _getFiles
- eval STRING
- "; system(
- "; exec(
- "; qx(
- "; `
- "; open(
- "; unlink(
- "; chmod(
- "; chown(
- "; use Socket
- "; require Socket
- "; use MIME::Base64
- perl -e
- /bin/sh -c
- /bin/bash -c
- curl http
- wget http
What your security team should do
- Inventory all Perl applications, containers, job runners, and build systems for IO::Compress versions earlier than 2.220.
- Prioritize internet-facing services, self-service file-processing workflows, CI/CD jobs, backup/archive systems, and automation platforms where users can influence output filenames or glob patterns.
- Upgrade IO::Compress to 2.220 or later and redeploy affected applications from clean, patched build artifacts.
- Search source code for File::GlobMapper usage and confirm output glob values are not derived from untrusted input without strict validation.
- Until patched, block or reject output glob inputs containing literal double quotes or Perl execution metacharacter sequences, and disable exposed functionality if validation cannot be assured.
- Run affected services with least privilege and restrict outbound network access to reduce the blast radius of possible code execution.
- Review logs and job histories for suspicious output glob values submitted before patching, especially values containing double quotes followed by Perl keywords, command execution functions, or shell metacharacters.
- Monitor threat intelligence for any change in exploit maturity, EPSS trend, KEV status, or public proof-of-concept availability because exploitability can increase quickly for library-level injection flaws.
The record
IO::Compress versions before 2.220 for Perl can execute arbitrary code in File::GlobMapper via an attacker-controlled output glob. _parseOutputGlob() wraps the caller-supplied output glob string in double quotes and stores it in the parser state; _getFiles() then runs the stored expression through eval STRING. A literal double quote in the output glob closes the dquote wrapper, and the characters that follow are evaluated as Perl. Arbitrary Perl in the output glob executes at the calling process's privilege.
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-1.1 |
Related vulnerabilities
- CVE-2026-48961 IO::Compress versions from 2.207 before 2.220 for Perl ship a zipdetails CLI tool that… Also affects perl-IO-Compress
- CVE-2026-85165 n8n versions before 2.36.2 contain an expression sandbox bypass vulnerability where free… CWE-95
- CVE-2026-19295 IBM Langflow OSS 1.0.0 through 1.11.1 allows an authenticated attacker to execute… CWE-95
- CVE-2026-54569 SENAITE.CORE is the core framework for the SENAITE laboratory information management… CWE-95
- CVE-2026-75062 Improper Neutralization of Directives in Dynamically Evaluated Code ('Eval Injection') in… CWE-95
- CVE-2026-71867 Orval generates type-safe JavaScript clients in TypeScript from OpenAPI v3 and Swagger v2… CWE-95
- CVE-2026-71865 Orval generates type-safe JavaScript clients in TypeScript from OpenAPI v3 and Swagger v2… CWE-95
- CVE-2026-71866 Orval generates type-safe JavaScript clients in TypeScript from OpenAPI v3 and Swagger v2… CWE-95