Eight CVEs in Perl Net-IDN-Encode: memory corruption, leaks, CPU exhaustion and punycode decoding flaws in Net::IDN::Punycode, Punycode::PP and UTS46, all fixed in 2.590
No material change relative to the previous summary: the same eight oss-security disclosures by Paul Johnson on 2026-09-22 are consolidated, with affected-version ranges, fix versions and the absence of reported exploitation all confirmed; remediation guidance remains upgrade to Net-IDN-Encode 2.590 or later.
Paul Johnson disclosed eight vulnerabilities on oss-security on 2026-09-22 in the Net-IDN-Encode Perl distribution — a heap buffer overflow (fixed in 2.301) plus seven further flaws including an out-of-bounds read, heap use-after-free, memory leak, two…
Between 15:41:09 and 15:56:55 UTC on 2026-09-22, Paul Johnson posted eight security disclosures to oss-security for modules in the Net-IDN-Encode Perl distribution. Four affect the encoding path: CVE-2016-15059, a heap buffer overflow via unchecked writes past the output buffer in encode_punycode, affecting Net::IDN::Punycode versions before 2.301 and fixed in 2.301; CVE-2026-74765, an out-of-bounds read via integer overflow of the delta accumulator in encode_punycode, affecting versions before 2.590; CVE-2026-87082, where encode_punycode does not validate malformed UTF-8 and can hang, crash, or return an incorrect label, affecting versions before 2.590; and CVE-2026-87081, CPU exhaustion in Net::IDN::UTS46 versions before 2.590 because to_ascii performs quadratic punycode encoding of an overlong label before applying its length check. Four affect decoding: CVE-2026-74766, a heap use-after-free in decode_punycode triggered when a decoded code point reallocates the output buffer, affecting versions from 2.301 before 2.590; CVE-2026-87078, a leak of the output buffer on every rejected label in decode_punycode that can accumulate memory under repeated invalid input, affecting versions from 2.302 before 2.590; CVE-2026-87079, CPU exhaustion via quadratic insertion cost when decoding a long label in decode_punycode, affecting versions before 2.590; and CVE-2026-87080, in which the pure-Perl Net::IDN::Punycode::PP versions before 2.590 decode a truncated label to a name containing a character it never encoded, which could enable IDN homograph-style spoofing in software relying on the module. Seven of the eight flaws are fixed in Net-IDN-Encode 2.590, which also supersedes the earlier 2.301 fix for CVE-2016-15059, so upgrading to 2.590 or later remediates all eight vulnerabilities. The differing affected-version ranges across the disclosures reflect the specific code changes each flaw depends on rather than any disagreement between sources. None of the eight disclosures mention exploitation in the wild.
- Eight CVEs disclosed on oss-security on 2026-09-22 between 15:41:09 and 15:56:55 UTC, all by Paul Johnson, all in the Net-IDN-Encode Perl distribution.
- CVE-2016-15059: heap buffer overflow via unchecked writes past the output buffer in encode_punycode; affects Net::IDN::Punycode before 2.301; fixed in 2.301.
- CVE-2026-74765: out-of-bounds read via integer overflow of the delta accumulator in encode_punycode; affects versions before 2.590; fixed in 2.590.
- CVE-2026-87082: encode_punycode does not validate malformed UTF-8; can hang, crash, or return an incorrect label; affects versions before 2.590; fixed in 2.590.
- CVE-2026-87081: CPU exhaustion in Net::IDN::UTS46 before 2.590 via quadratic punycode encoding of an overlong label before the length check in to_ascii; fixed in 2.590.
- CVE-2026-74766: heap use-after-free in decode_punycode when a decoded code point reallocates the output buffer; affects versions from 2.301 before 2.590; fixed in 2.590.
- CVE-2026-87078: output-buffer leak on every rejected label in decode_punycode, growing under repeated invalid input; affects versions from 2.302 before 2.590; fixed in 2.590.
- CVE-2026-87079: CPU exhaustion via quadratic insertion cost when decoding a long label in decode_punycode; affects versions before 2.590; fixed in 2.590.
- CVEs
- CVE-2026-74766CVE-2026-74765CVE-2026-87082CVE-2026-87081CVE-2026-87079CVE-2026-87078CVE-2016-15059CVE-2026-87080
- Organizations
- Net::IDN::EncodePerl
Coverage
oldest first · one row per article · UTCCVE-2016-15059: Net::IDN::Punycode versions before 2.301 for Perl allow a heap buffer overflow via unchecked writes past the output buffer in encode_punycode
Perl Net::IDN::Punycode before 2.301 has a heap buffer overflow in encode_punycode, tracked as CVE-2016-15059.
CVE-2026-74765: Net::IDN::Punycode versions before 2.590 for Perl allow an out-of-bounds read via integer overflow of the delta accumulator in encode_punycode
Perl Net::IDN::Punycode before 2.590 allows an out-of-bounds read via delta overflow in encode_punycode.
CVE-2026-74766: 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
Perl Net::IDN::Punycode before 2.590 has a heap use-after-free when decode_punycode reallocates its buffer.
CVE-2026-87078: Net::IDN::Punycode versions from 2.302 before 2.590 for Perl leak the output buffer on every rejected label in decode_punycode
Perl Net::IDN::Punycode 2.302 before 2.590 leaks the output buffer on every rejected label.
CVE-2026-87079: Net::IDN::Punycode versions before 2.590 for Perl allow CPU exhaustion via quadratic insertion cost when decoding a long label in decode_punycode
Perl Net::IDN::Punycode before 2.590 can exhaust CPU decoding a long Punycode label.
CVE-2026-87080: 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
Net::IDN::Punycode::PP Perl module before 2.590 decodes truncated punycode labels into names containing characters that were never encoded.
CVE-2026-87081: Net::IDN::UTS46 versions before 2.590 for Perl allow CPU exhaustion via quadratic punycode encoding of an overlong label before the length check in to_ascii
Perl Net::IDN::UTS46 before 2.590 can exhaust CPU on overlong labels.
CVE-2026-87082: Net::IDN::Punycode versions before 2.590 for Perl hang, crash or return a wrong label via unvalidated malformed UTF-8 in encode_punycode
Perl Net::IDN::Punycode before 2.590 can hang, crash, or mislabel malformed UTF-8.
Vulnerabilities in this story
All| CVE | Vulnerability | CVSS | EPSS | Signals | Published |
|---|---|---|---|---|---|
CVE-2016-15059+1 related CVE | Heap Buffer Overflow in Perl Net::IDN::Punycode XS Backend | 9.8 group max | — | ||
CVE-2026-74766+1 related CVE | Unauthenticated RCE in Dell Secure Connect Gateway 5.0 (high CVSS:3.1) (CVE-2026-74766) (Punycode 2.301 before 2.590)… | 8.4 group max | — | ||
| CVE-2026-87078 | Net::IDN::Punycode versions from 2.302 before 2.590 for Perl leak the output buffer on every rejected label in decode_punycode | 9.1 | — | ||
CVE-2026-87080+1 related CVE | IDN Label Mismatch Vulnerability in Perl Punycode Decoder | 9.1 group max | — | ||
| CVE-2026-87082 | DoS and Data Corruption in Perl Net::IDN::Punycode via Malformed UTF-8 | 7.5 | — |