CVE-2026-87079
Received Received - Intake

CPU Exhaustion in Net::IDN::Punycode via Quadratic Insertion Cost

Vulnerability report for CVE-2026-87079, 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 allow CPU exhaustion via quadratic insertion cost when decoding a long label in decode_punycode. The XS backend inserts each decoded code point into a UTF-8 buffer and finds the insertion point by scanning that buffer from the start, one character at a time. The scan runs once per code point over the output built so far, so the cost is quadratic in the label length. The pure-Perl backend downgrades its input to bytes so that substr can index it directly, but takes its working copy before the downgrade, so when the input carries the UTF-8 flag every substr on the copy scans from the start, with the same quadratic cost. Nothing bounds the label length in the to-Unicode direction. The 63-byte DNS limit is checked only when converting to ASCII, so domain_to_unicode and uts46_to_unicode pass an attacker-supplied label of any length to the decoder.

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

Currently, no data is known.

Helpful Resources

Exploitability

CWE
CWE Icon
KEV
KEV Icon
CWE ID Description
CWE-407 An algorithm in a product has an inefficient worst-case computational complexity that may be detrimental to system performance and can be triggered by an attacker, typically using crafted manipulations that ensure that the worst case is being reached.

Attack-Flow Graph

AI Quick Actions

Instant insights powered by AI
Executive Summary

This vulnerability is a CPU exhaustion issue in Net::IDN::Punycode versions before 2.590 for Perl. It occurs during the decoding of long punycode labels, where the processing time grows quadratically with the label length due to inefficient scanning of UTF-8 output. Attackers can exploit this by providing extremely long labels to cause excessive CPU usage.

Detection Guidance

This vulnerability is specific to the Net::IDN::Punycode Perl module and involves CPU exhaustion during punycode decoding. Detection requires checking if the vulnerable versions of the module are installed. Use commands like 'cpan -D Net::IDN::Punycode' or 'perl -MNet::IDN::Punycode -e "print $Net::IDN::Punycode::VERSION"' to verify the installed version.

Impact Analysis

This vulnerability can lead to denial-of-service conditions by consuming excessive CPU resources. Systems processing punycode labels, such as those handling internationalized domain names, may become unresponsive or slow down significantly when processing malicious input.

Compliance Impact

This vulnerability causes CPU exhaustion due to quadratic time complexity in decoding punycode labels, which could lead to denial-of-service conditions. Such resource exhaustion may impact system availability, potentially violating availability requirements in standards like GDPR (Article 32) and HIPAA (Security Rule).

Mitigation Strategies

Update the Net::IDN::Punycode module to version 2.590 or later. Use commands like 'cpan upgrade Net::IDN::Punycode' or 'cpanm Net::IDN::Punycode' to apply the patch. If updating is not possible, consider disabling or removing the module if it is not essential to your operations.

Chat Assistant

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

EPSS Chart