CPANSA-Net-IDN-Encode-2026-87080: Net-IDN-Encode vulnerability

Publisher giterlizzi Document category csaf_security_advisory
Initial release date 2026-09-22T00:00:00 Engine CSAF Perl Toolkit 0.26
Current release date 2026-09-22T00:00:00 Build Date
Current version 1 Status final
CVSS v3.1 Base Score 9.1 Severity Critical
Original language Language en
Also referred to

Vulnerability Description

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.

Vulnerabilities

CVE-2026-87080

Vulnerability Description

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 : Improper Validation of Syntactic Correctness of Input

Product status

Known affected
Product Score
Net-IDN-Encode less than 2.590
CVSS Version CVSS Vector CVSS Base Score CVSS Base Severity
3.1 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H 9.1 Critical
Fixed

giterlizzi

Namespace: https://github.com/giterlizzi/

gdt@cpan.org

References

Revision history

Version Date of the revision Summary of the revision
1 Tue Sep 22 00:00:00 2026 First release

Sharing rules

TLP:WHITE
For the TLP version see: https://www.first.org/tlp/