Every CVE Search/ Get API key

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

8.4 HighFix available

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.

Attack profile

How easy it is to exploit

Attack vector
Local
Complexity
Low
Privileges needed
None
User interaction
None

What an attacker can affect

Confidentiality
High
Integrity
High
Availability
High

Exploit likelihood

0.14%Unchanged since Sep 22, 2026
90%50%10%1%

What each source reports

CVE List Score used 8.4

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

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.

Record
CVE-2026-74766
CVSS 3.1
8.4 HighCVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Weakness
CWE-416
Updated
2026-11-02
EUVDEUVD-2026-84290 8.4

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.

Record
EUVD-2026-84290
CVSS 3.1
8.4 HighCVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Updated
2026-11-02
GitHub AdvisoriesGHSA-qffm-j59f-77qw 8.4

Net::IDN::Punycode versions from 2.301 before 2.590 for Perl allow a heap use-after-free via a...

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.

Record
GHSA-qffm-j59f-77qw
CVSS 3.1
8.4 HighCVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Weakness
CWE-416
Updated
2026-11-02
NVD 8.4

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.

Record
CVE-2026-74766
CVSS 3.1
8.4 HighCVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Weakness
CWE-416
Updated
2026-11-02
OSV 8.4

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

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.

Record
CVE-2026-74766
CVSS 3.1
8.4 HighCVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Weakness
CWE-416
Updated
2026-11-07
OSVDEBIAN-CVE-2026-74766 8.4

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.

Record
DEBIAN-CVE-2026-74766
CVSS 3.1
8.4 HighCVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Updated
2026-11-03
OSVUBUNTU-CVE-2026-74766 8.4

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.

Record
UBUNTU-CVE-2026-74766
CVSS 3.1
8.4 HighCVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Updated
2026-11-04
OSVopenSUSE-SU-2026:12468-1 No score

perl-Net-IDN-Encode-2.600.0-1.1 on GA media

These are all security issues fixed in the perl-Net-IDN-Encode-2.600.0-1.1 package on the GA media of openSUSE Tumbleweed.

Record
openSUSE-SU-2026:12468-1
Updated
2026-11-07

Affected packages

Affected packages
PackageAffectedFixed
libnet-idn-encode-perl
Debian:12
All versions, plus listed versions
2.500-32.500-52.502-12.600-1
None known
libnet-idn-encode-perl
Debian:13
All versions, plus listed versions
2.500-52.502-12.600-1
None known
libnet-idn-encode-perl
Debian:14
before 2.600-1, plus listed versions
2.500-52.502-1
2.600-1
libnet-idn-encode-perl
Ubuntu:18.04:LTS
All versions, plus listed versions
2.400-1build1
None known
libnet-idn-encode-perl
Ubuntu:20.04:LTS
All versions, plus listed versions
2.500-12.500-1build1
None known
libnet-idn-encode-perl
Ubuntu:22.04:LTS
All versions, plus listed versions
2.500-1build22.500-22.500-2build1
None known
libnet-idn-encode-perl
Ubuntu:24.04:LTS
All versions, plus listed versions
2.500-32.500-3build12.500-3build22.500-5
None known
libnet-idn-encode-perl
Ubuntu:26.10
All versions, plus listed versions
2.500-5build12.500-5build2
None known
libnet-idn-encode-perl
Ubuntu:26.04:LTS
All versions, plus listed versions
2.500-5build1
None known
perl-Net-IDN-Encode
openSUSE:Tumbleweed
From an advisory covering 7 CVEs
before 2.600.0-1.1
2.600.0-1.1

History

History
RecordedChangedSources
affected, aliases, referencesOSV
affected, factsOSV
affected, factsOSV
first indexedCVE List, EUVD, GitHub Advisories, NVD, OSV

Dates are when Every CVE recorded each change. Upstream dates may differ.

In short

CVE-2026-74766 is a high vulnerability (CVSS 8.4) in libnet-idn-encode-perl, published September 22, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.14%, the 3rd percentile. Fixed in libnet-idn-encode-perl 2.600-1.

References

Show 14 moreShow less
MoveEnter Open