CVE-2026-87082
Received Received - Intake

Net::IDN::Punycode UTF-8 Handling DoS and Label Corruption

Vulnerability report for CVE-2026-87082, including description, CVSS score, EPSS score, affected products, exploitability, helpful resources, and attack-flow context.

Publication date: 2026-09-22

Last updated on: 2026-09-22

Assigner: CPANSec

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.

CVSS Scores

EPSS Scores

Probability:
Percentile:

Meta Information

Published
2026-09-22
Last Modified
2026-09-22
Generated
2026-09-22
AI Q&A
2026-09-22
EPSS Evaluated
N/A
NVD
EUVD

Affected Vendors & Products

Showing 2 associated CPEs
Vendor Product Version / Range
robrwo net_idn_punycode to 2.590 (exc)
robrwo net_idn_punycode From 5.36 (inc) to 5.40.0 (inc)

Helpful Resources

Exploitability

CWE
CWE Icon
KEV
KEV Icon
CWE ID Description
CWE-835 The product contains an iteration or loop with an exit condition that cannot be reached, i.e., an infinite loop.
CWE-1286 The product receives input that is expected to be well-formed - i.e., to comply with a certain syntax - but it does not validate or incorrectly validates that the input complies with the syntax.

Attack-Flow Graph

AI Quick Actions

Instant insights powered by AI
Executive Summary

This vulnerability affects the Perl module Net::IDN::Punycode before version 2.590. It occurs when malformed UTF-8 input is processed without proper validation, causing the encoder to hang, crash, or return incorrect labels. The issue stems from unchecked UTF-8 sequences in the encode_punycode function, leading to infinite loops or invalid outputs depending on the Perl version.

Detection Guidance

Detecting this vulnerability requires checking for outdated versions of Net::IDN::Punycode. Use Perl to inspect installed modules: perl -MNet::IDN::Punycode -e 'print $Net::IDN::Punycode::VERSION' and verify it is version 2.590 or later. Check for crashes or hangs in applications processing UTF-8 input.

Impact Analysis

If you use a vulnerable version of Net::IDN::Punycode, an attacker could supply malformed UTF-8 input to cause denial-of-service (hanging or crashing) or produce misleading domain labels. This could disrupt applications relying on IDN encoding, such as web services handling internationalized domain names.

Compliance Impact

This vulnerability does not directly affect compliance with GDPR or HIPAA as it pertains to input validation in a Perl module. However, if exploited, it could lead to denial-of-service or incorrect data processing, potentially impacting data integrity or availability, which are key considerations under these regulations.

Mitigation Strategies

Upgrade Net::IDN::Punycode to version 2.590 or later. Review applications using the module for UTF-8 input handling. Apply patches from the provided GitHub commits if upgrading is not immediately possible.

Chat Assistant

Ask questions about this CVE
Hi! I’m here to help you understand CVE-2026-87082. Ask me anything about the vulnerability, its impact, or mitigation strategies.
0/70

EPSS Chart