CVE-2026-74766
Received Received - Intake

Heap Use-After-Free in Net::IDN::Punycode Perl Module

Vulnerability report for CVE-2026-74766, 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 from 2.301 before 2.590 for Perl allow a heap use-after-free via a decoded code point that reallocates the output buffer in decode_punycode. The XS backend inserts each decoded code point into the string buffer of the scalar it returns. decode_punycode computes the insertion pointer first and only then grows the buffer when the code point does not fit. The growth reallocates the buffer and updates every pointer except the insertion pointer, so the move that follows and the write of the code point go through a freed pointer. The buffer starts at twice the label length, and a code point above U+FFFF takes four bytes in the output, so a label of such code points outgrows it and forces the reallocation. Version 2.301, the fix for CVE-2016-15059, introduced the defect. Only the XS backend is affected. Decoding an attacker-supplied punycode label reads and writes freed heap memory.

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-416 The product reuses or references memory after it has been freed. At some point afterward, the memory may be allocated again and saved in another pointer, while the original pointer references a location somewhere within the new allocation. Any operations using the original pointer are no longer valid because the memory "belongs" to the code that operates on the new pointer.

Attack-Flow Graph

AI Quick Actions

Instant insights powered by AI
Executive Summary

This vulnerability is a heap use-after-free issue in Net::IDN::Punycode versions from 2.301 before 2.590 for Perl. It occurs during Punycode decoding when the output buffer is reallocated. The XS backend computes the insertion pointer before growing the buffer, leading to a freed pointer being used for writes. This happens when a label contains code points above U+FFFF, causing the buffer to outgrow its initial size.

Detection Guidance

This vulnerability affects Perl's Net::IDN::Punycode module versions 2.301 to 2.590. To detect it, check the installed version of the module using the command: perl -MNet::IDN::Punycode -e 'print $Net::IDN::Punycode::VERSION'.

Impact Analysis

This vulnerability allows an attacker to read and write freed heap memory by supplying a malicious Punycode label. This could lead to memory corruption, crashes, or potentially arbitrary code execution depending on the application's context and memory state.

Compliance Impact

This vulnerability involves a heap use-after-free in Net::IDN::Punycode, which could lead to memory corruption or crashes when processing attacker-supplied punycode labels. Such memory safety issues may compromise data integrity and availability, potentially violating requirements for secure data handling under GDPR and HIPAA.

Mitigation Strategies

Upgrade the Net::IDN::Punycode module to version 2.590 or later. Use the command: cpan upgrade Net::IDN::Punycode. Alternatively, apply the patches from the provided GitHub commits to fix the buffer handling issue.

Chat Assistant

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

EPSS Chart