CVE-2015-3406
High · 7.5CVSS
7.5
EPSS
2.3%
Published
Nov 29, 2019
CISA due date
—
Cloudanix analysis
A flaw in a widely used Perl tool could let attackers slip bad code into software packages that should have been checked for tampering, potentially affecting any system that installs Perl modules from public sources.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Low
- Impact
- Data Tampering
- Component
- Library
- Class
- Improper Input Validation
- Remediation
- Upgrade
- Effort
- Low
- Patch risk
- Low
What it actually does
The vulnerability allows an attacker to supply a crafted SIGNATURE file such that the PGP signature verification logic treats an unsigned region as the signed content, bypassing integrity checks on Perl module distributions.
Why it matters to the business
Organizations relying on unsigned or tampered Perl modules from CPAN or mirrors may unknowingly install malicious code, leading to supply-chain compromise of build and deployment pipelines; the issue has been public for years with negligible observed exploitation.
How an attack unfolds
An attacker prepares a SIGNATURE file containing both signed and unsigned sections, manipulates the PGP parsing so the unsigned malicious portion is accepted as verified, then hosts the altered archive on a mirror or repository that developers fetch during module installation.
How to fix it
Upgrade Module::Signature to version 0.74 or later on all systems; replace any locally cached or mirrored distributions that were validated with the vulnerable parser; consider pinning the module in CPANfile or similar dependency manifests.
How to confirm the fix worked
Run 'cpan -D Module::Signature' or inspect the installed version in the Perl site library; attempt to verify a test SIGNATURE containing unsigned trailing data to confirm the parser now rejects it; review CPAN mirror logs for any distributions fetched before the update.
Typical attack path
- Identify a Perl project that uses Module::Signature for distribution verification.
- Craft a SIGNATURE file that places attacker-controlled content outside the signed region but causes the parser to treat it as signed.
- Upload or mirror the malicious archive to a location reachable by target developers or CI systems.
- Wait for or entice victims to run cpan, cpanm, or similar tooling that fetches and verifies the module.
- Gain execution of attacker code inside the victim's build or runtime environment.
How to detect it
Search Perl module installation logs, cpanm build directories, and proxy logs for SIGNATURE files fetched from untrusted mirrors; look for archives where the signed portion length does not match the actual PGP signature block; examine any post-install scripts or .pm files that appeared after a signature verification event.
What your security team should do
- Immediately inventory all Perl environments and CI pipelines that depend on Module::Signature and schedule the upgrade to 0.74+.
- Add a dependency policy check that blocks installs of Module::Signature versions older than 0.74.
- Monitor CPAN and internal mirrors for any distributions whose signatures were processed with the vulnerable parser.
- Review historical build logs for unexpected module installs that occurred after the vulnerability became public.
The record
The PGP signature parsing in Module::Signature before 0.74 allows remote attackers to cause the unsigned portion of a SIGNATURE file to be treated as the signed portion via unspecified vectors.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Debian:11 | libmodule-signature-perl | 0 | 0.78-1 |
| Debian:12 | libmodule-signature-perl | 0 | 0.78-1 |
| Debian:13 | libmodule-signature-perl | 0 | 0.78-1 |
| Debian:14 | libmodule-signature-perl | 0 | 0.78-1 |
| Debian:6.0 | libmodule-signature-perl | 0 | 0.63-1+squeeze2 |
| Debian:7 | libmodule-signature-perl | 0 | 0.68-1+deb7u2 |
| Debian:8 | libmodule-signature-perl | 0 | 0.73-1+deb8u1 |
| Ubuntu:14.04:LTS | libmodule-signature-perl | 0 | 0.73-1ubuntu0.14.04.1 |
| openSUSE:Tumbleweed | perl-Module-Signature | 0 | 0.81-1.1 |
Related vulnerabilities
- CVE-2026-106432 The BSON encoder in the MongoDB PHP Driver converts a string length to a 32-bit value… CWE-681
- CVE-2026-98049 In the Linux kernel, the following vulnerability has been resolved: bpf: zero extend the… CWE-681
- CVE-2026-88387 LibRaw 0.22.0 contains an incorrect numeric conversion vulnerability in… CWE-681
- CVE-2026-77412 RabbitMQ amqp091-go is a Go AMQP 0.9.1 client. CWE-681
- CVE-2026-84970 A numeric truncation weakness exists in the JSON parsing component of the MongoDB C++… CWE-681
- CVE-2026-82522 libjxl before 0.12 contains an integer underflow vulnerability in the container box… CWE-681
- CVE-2026-75145 FFmpeg before commit b4c199c contains an incorrect integer narrowing conversion in the… CWE-681
- CVE-2026-19879 A flaw was found in Undertow, an HTTP server, within its HTTP response header writing… CWE-681