CVE-2026-87082 Details
Description
Net::IDN::Punycode versions before 2.590 for Perl hang, crash or return a wrong label via unvalidated malformed UTF-8 in encode_punycode. Neither backend checks that its input is well-formed UTF-8, so a string with the UTF-8 flag set over malformed bytes, as the :utf8 PerlIO layer produces from any malformed input, reaches the encoder unchecked. On perl 5.32 and later the XS backend reports a malformed sequence with a length of `(STRLEN)-1`, so the scan steps back one byte instead of forward and never ends. On earlier perls the XS returns a valid label for a different name. The pure-Perl backend runs a regex over the flagged string. Depending on the bytes, it aborts with SIGBUS on perl 5.28 and later, dies with a panic, or returns a wrong label. The documented conversion functions match the label against Unicode properties first and that match dies on such a string, so only a direct call to encode_punycode reaches the defect. The decoder is not affected. A direct caller encoding attacker-supplied bytes hangs, crashes or gets a label for a name the input never held.
A vulnerability in Net::IDN::Punycode for Perl, affecting versions prior to 2.590, allows for denial-of-service conditions and incorrect label generation. This issue arises from unvalidated malformed UTF-8 input in the 'encode_punycode' function. Neither the pure-Perl nor the XS backend properly validate UTF-8, allowing malformed strings to be processed unchecked. On Perl 5.32 and later, the XS backend enters an infinite loop when encountering a truncated UTF-8 sequence. The pure-Perl backend, while crashing on recent Perl versions, also returns incorrect labels under certain conditions. The vulnerability can be exploited by directly calling 'encode_punycode' with malformed UTF-8 bytes, leading to a hang, crash, or an incorrect label.
Users are advised to upgrade to Net::IDN::Punycode version 2.590 or later, where this vulnerability has been fixed.
Metrics
CVSS 4.0 Severity and Vector Strings:
CVSS 3.x Severity and Vector Strings:
No data available for CVSS Version 2.0 on this CVE.
Volerion
Assessed Sep 22, 2026CISA-ADP
Assessed Sep 22, 2026References to Advisories, Solutions, and Tools
By selecting these links, you will be leaving this site. These are references gathered from the official CVE record and are not endorsed by Volerion.
| URL | Source(s) | Tag(s) |
|---|---|---|
| https://github.com/robrwo/Net-IDN-Encode/commit/0918fb4a951ed5f4494c4cf202419c2842507ea4.patch | CPANSec | Source CodeVendor |
| https://github.com/robrwo/Net-IDN-Encode/commit/572af0183b3a6294e22c6b509268da09697cf77d.patch | CPANSec | Source CodeVendor |
| https://github.com/robrwo/Net-IDN-Encode/commit/59dc7f2c605a897bcbfe0ac5eb2b8dbe6792348d.patch | CPANSec | Source CodeVendor |
| https://github.com/robrwo/Net-IDN-Encode/commit/accb6df57ad107ec0c4bfb27b21551eed97c700e.patch | CPANSec | Source CodeVendor |
| https://metacpan.org/release/PJCJ/Net-IDN-Encode-2.590-TRIAL/changes | CPANSec | Release NotesVendor |
| http://www.openwall.com/lists/oss-security/2026/09/22/17 | CVE | AdvisoryMailing ListRemedy |
Weakness Enumeration
| CWE-ID | CWE Name | Source |
|---|---|---|
| CWE-1286 | Improper Validation of Syntactic Correctness of Input | CPANSec |
| CWE-835 | Loop with Unreachable Exit Condition ('Infinite Loop') | CPANSec |
Affected Products
| Product | Versions |
|---|---|
| Net::IDN::Punycode | < 2.590 |
CPE
Remediation
| |
Change History
3 change records found show changes
| Date | Action | Recorded By |
|---|---|---|
| Sep 22, 2026 | CVE Modified | CVE |
| Sep 22, 2026 | CVE Modified | CISA-ADP |
| Sep 22, 2026 | New CVE Received | CPANSec |
Volerion