CVE-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
Paul Johnson 22 Sep 2026 07:55 UTC
========================================================================
CVE-2016-15059 CPAN Security Group
========================================================================
CVE ID: CVE-2016-15059
Distribution: Net-IDN-Encode
Versions: before 2.301
MetaCPAN: https://metacpan.org/dist/Net-IDN-Encode
VCS Repo: https://github.com/robrwo/Net-IDN-Encode
Net::IDN::Punycode versions before 2.301 for Perl allow a heap buffer
overflow via unchecked writes past the output buffer in encode_punycode
Description
-----------
Net::IDN::Punycode versions before 2.301 for Perl allow a heap buffer
overflow via unchecked writes past the output buffer in
encode_punycode.
The XS backend builds the encoded label in the string buffer of the
scalar it returns, sized from the input length. The loop that emits the
digits of each code point checks for room before every write, but the
write of the last digit of each round and the write of the terminating
NUL do not, so an input whose encoded form fills the buffer writes past
its end.
Only the XS backend is affected.
Encoding an attacker-supplied string corrupts the heap.
Problem types
-------------
- CWE-122 Heap-based Buffer Overflow
Solutions
---------
Upgrade to Net-IDN-Encode 2.301 or later.
References
----------
https://rt.cpan.org/Ticket/Display.html?id=118924
https://github.com/robrwo/Net-IDN-Encode/commit/9a3ba07f15d22c0347eefee9625b012cbc803657.patch
https://metacpan.org/release/CFAERBER/Net-IDN-Encode-2.301/changes
Timeline
--------
- 2016-12-03: Version 2.301 released with fix.
--
Paul Johnson - xxxxxx@pjcj.net