Skip to content
NewA calmer, faster ZeroHour
Vulnerability1 · 1 read

CVE-2026-87080

IDN Label Mismatch Vulnerability in Perl Punycode Decoder

CVSS 3.1
9.1 critical
EPSS
—
Published
·
Modified
Analyze CVE-2026-87080 with Vani AIImpact, affected versions, exploitation status, mitigations and detection

CVE-2026-87080 is a logic flaw in the pure-Perl Punycode decoder (Net::IDN::Punycode::PP) that processes truncated IDN labels incorrectly, reading past the end of the input string and deriving an extra character. This leads to a deterministic but incorrect decoding result. An attacker can craft a malicious IDN label that resolves successfully on systems using the vulnerable Perl backend but is rejected by systems using the XS backend, potentially causing inconsistencies in security-critical name resolution. The flaw is in the 'PP' backend, which is used when the XS backend fails to compile. As of the report, there is no known public exploit or exploitation in the wild.

What to do: Update Net::IDN::Punycode::PP to version 2.590 or later. Check your system's Perl modules for the installed version. Systems using the XS backend are not vulnerable.

ProductAffected
Perl CPAN Net::IDN::Punycode::PPbefore 2.590
Estimated exposure
No basis for an estimate.

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description · NVD

Net::IDN::Punycode::PP versions before 2.590 for Perl decode a truncated label to a name containing a character it never encoded in decode_punycode. The pure-Perl decoder reads one digit at a time with four-argument substr and tests the result with defined to detect the end of the input. substr on an exhausted string returns the empty string rather than undef, so decoding continues past the end. The empty string converts to a digit value below the range, reducing the accumulator, and the decoder derives one extra code point and its position from it. The result is deterministic. The XS backend rejects the same label. Net::IDN::Punycode uses this backend wherever the XS does not build. The two backends disagree about what such a label means, so a sender can pick a label that one installation resolves to a name and another rejects.

Weakness
CWE-1286
Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H

In the news

1 story