{"id":"CVE-2026-87081","aliases":["DEBIAN-CVE-2026-87081","EUVD-2026-84294","GHSA-653x-rhrr-h9h8","UBUNTU-CVE-2026-87081","openSUSE-SU-2026:12468-1"],"status":"published","title":"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","description":"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.\n\nto_ascii punycode encodes each label and only then applies the 63-byte DNS limit. encode_punycode in both backends follows the sample implementation in RFC 3492, whose outer loop runs once per distinct non-ASCII code point and scans the whole input each round, so a label of distinct non-ASCII characters costs the square of its length before the limit rejects it. Every ASCII conversion in the distribution, including domain_to_ascii and email_to_ascii, goes through to_ascii.","severity":{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high","assessor":"adp","from":"cve"},"epss":{"day":"2026-11-12","score":0.00365,"percentile":0.30771,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-407"],"published":"2026-09-22T07:25:22Z","modified":"2026-11-07T17:27:13Z","fixes":[{"ecosystem":"Debian:14","package":"libnet-idn-encode-perl","fixed_in":["2.600-1"],"sources":["osv"]}],"affected":[{"source":"osv","ecosystem":"Debian:12","package":"libnet-idn-encode-perl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.500-3","2.500-5","2.502-1","2.600-1"]},{"source":"osv","ecosystem":"Debian:13","package":"libnet-idn-encode-perl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.500-5","2.502-1","2.600-1"]},{"source":"osv","ecosystem":"Debian:14","package":"libnet-idn-encode-perl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.600-1"}]}],"versions":["2.500-5","2.502-1"]},{"source":"osv","ecosystem":"Ubuntu:16.04:LTS","package":"libnet-idn-encode-perl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.202-1","2.300-1","2.300-1build1"]},{"source":"osv","ecosystem":"Ubuntu:18.04:LTS","package":"libnet-idn-encode-perl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.400-1build1"]},{"source":"osv","ecosystem":"Ubuntu:20.04:LTS","package":"libnet-idn-encode-perl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.500-1","2.500-1build1"]},{"source":"osv","ecosystem":"Ubuntu:22.04:LTS","package":"libnet-idn-encode-perl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.500-1build2","2.500-2","2.500-2build1"]},{"source":"osv","ecosystem":"Ubuntu:24.04:LTS","package":"libnet-idn-encode-perl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.500-3","2.500-3build1","2.500-3build2","2.500-5"]},{"source":"osv","ecosystem":"Ubuntu:26.10","package":"libnet-idn-encode-perl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.500-5build1","2.500-5build2"]},{"source":"osv","ecosystem":"Ubuntu:26.04:LTS","package":"libnet-idn-encode-perl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.500-5build1"]},{"source":"osv","ecosystem":"openSUSE:Tumbleweed","package":"perl-Net-IDN-Encode","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.600.0-1.1"}]}],"bundled":7}],"references":[{"url":"https://metacpan.org/release/PJCJ/Net-IDN-Encode-2.590-TRIAL/changes","tags":["release-notes","advisory","report"]},{"url":"https://github.com/robrwo/Net-IDN-Encode/commit/5ac3315131264670efcd3a29857b651506dfee8e.patch","tags":["patch","fix","report"]},{"url":"https://github.com/robrwo/Net-IDN-Encode/commit/ea34f812d7dc67f3b211f4d92e74c6a7e24d764a.patch","tags":["patch","fix","report"]},{"url":"http://www.openwall.com/lists/oss-security/2026/09/22/16","tags":["web"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-87081","tags":["advisory"]},{"url":"https://github.com/advisories/GHSA-653x-rhrr-h9h8"},{"url":"https://cpan.org/modules","tags":["web"]},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/87xxx/CVE-2026-87081.json","tags":["advisory"]},{"url":"https://github.com/robrwo/Net-IDN-Encode","tags":["package"]},{"url":"https://security-tracker.debian.org/tracker/CVE-2026-87081","tags":["advisory"]},{"url":"https://ubuntu.com/security/CVE-2026-87081","tags":["report"]},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-87081","tags":["report"]},{"url":"https://lists.security.metacpan.org/cve-announce/msg/43753018/","tags":["report"]},{"url":"","tags":["advisory"]},{"url":"https://www.suse.com/security/cve/CVE-2026-74765","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2026-74766","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2026-87078","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2026-87079","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2026-87080","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2026-87081","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2026-87082","tags":["web"]}],"sources":{"cve":[{"id":"CVE-2026-87081","title":"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","description":"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.\n\nto_ascii punycode encodes each label and only then applies the 63-byte DNS limit. encode_punycode in both backends follows the sample implementation in RFC 3492, whose outer loop runs once per distinct non-ASCII code point and scans the whole input each round, so a label of distinct non-ASCII characters costs the square of its length before the limit rejects it. Every ASCII conversion in the distribution, including domain_to_ascii and email_to_ascii, goes through to_ascii.","status":"published","published":"2026-09-22T07:25:22.09Z","modified":"2026-09-22T17:07:31.325Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high","assessor":"adp"}],"cwes":["CWE-407"],"updated_at":"2026-11-02T13:37:58.613221Z"}],"euvd":[{"id":"EUVD-2026-84294","description":"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.\n\nto_ascii punycode encodes each label and only then applies the 63-byte DNS limit. encode_punycode in both backends follows the sample implementation in RFC 3492, whose outer loop runs once per distinct non-ASCII code point and scans the whole input each round, so a label of distinct non-ASCII characters costs the square of its length before the limit rejects it. Every ASCII conversion in the distribution, including domain_to_ascii and email_to_ascii, goes through to_ascii.","status":"published","published":"2026-09-22T07:25:22Z","modified":"2026-09-22T17:07:31Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high"}],"updated_at":"2026-11-02T17:28:02.601428Z"}],"ghsa":[{"id":"GHSA-653x-rhrr-h9h8","title":"Net::IDN::UTS46 versions before 2.590 for Perl allow CPU exhaustion via quadratic punycode...","description":"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.\n\nto_ascii punycode encodes each label and only then applies the 63-byte DNS limit. encode_punycode in both backends follows the sample implementation in RFC 3492, whose outer loop runs once per distinct non-ASCII code point and scans the whole input each round, so a label of distinct non-ASCII characters costs the square of its length before the limit rejects it. Every ASCII conversion in the distribution, including domain_to_ascii and email_to_ascii, goes through to_ascii.","status":"published","published":"2026-09-22T09:31:13Z","modified":"2026-09-22T18:34:35Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high"}],"cwes":["CWE-407"],"updated_at":"2026-11-02T15:12:18.539197Z"}],"nvd":[{"id":"CVE-2026-87081","description":"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.\n\nto_ascii punycode encodes each label and only then applies the 63-byte DNS limit. encode_punycode in both backends follows the sample implementation in RFC 3492, whose outer loop runs once per distinct non-ASCII code point and scans the whole input each round, so a label of distinct non-ASCII characters costs the square of its length before the limit rejects it. Every ASCII conversion in the distribution, including domain_to_ascii and email_to_ascii, goes through to_ascii.","status":"published","published":"2026-09-22T08:16:40.863Z","modified":"2026-09-22T19:07:00.983Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high","assessor":"secondary"}],"cwes":["CWE-407"],"updated_at":"2026-11-02T14:12:50.368368Z"}],"osv":[{"id":"CVE-2026-87081","title":"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","description":"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.\n\nto_ascii punycode encodes each label and only then applies the 63-byte DNS limit. encode_punycode in both backends follows the sample implementation in RFC 3492, whose outer loop runs once per distinct non-ASCII code point and scans the whole input each round, so a label of distinct non-ASCII characters costs the square of its length before the limit rejects it. Every ASCII conversion in the distribution, including domain_to_ascii and email_to_ascii, goes through to_ascii.","status":"published","published":"2026-09-22T07:25:22.09Z","modified":"2026-11-07T17:27:13.115243934Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high"}],"cwes":["CWE-407"],"updated_at":"2026-11-07T17:50:02.333869Z"},{"id":"DEBIAN-CVE-2026-87081","description":"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.  to_ascii punycode encodes each label and only then applies the 63-byte DNS limit. encode_punycode in both backends follows the sample implementation in RFC 3492, whose outer loop runs once per distinct non-ASCII code point and scans the whole input each round, so a label of distinct non-ASCII characters costs the square of its length before the limit rejects it. Every ASCII conversion in the distribution, including domain_to_ascii and email_to_ascii, goes through to_ascii.","status":"published","published":"2026-09-22T08:16:40.863Z","modified":"2026-11-03T04:00:11.245533378Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high"}],"updated_at":"2026-11-03T04:20:33.401912Z"},{"id":"UBUNTU-CVE-2026-87081","description":"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. to_ascii punycode encodes each label and only then applies the 63-byte DNS limit. encode_punycode in both backends follows the sample implementation in RFC 3492, whose outer loop runs once per distinct non-ASCII code point and scans the whole input each round, so a label of distinct non-ASCII characters costs the square of its length before the limit rejects it. Every ASCII conversion in the distribution, including domain_to_ascii and email_to_ascii, goes through to_ascii.","status":"published","published":"2026-09-22T08:16:00Z","modified":"2026-10-17T13:01:14.239176354Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high"}],"updated_at":"2026-11-02T16:57:24.828975Z"},{"id":"openSUSE-SU-2026:12468-1","title":"perl-Net-IDN-Encode-2.600.0-1.1 on GA media","description":"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.","status":"published","published":"2026-11-06T00:00:00Z","modified":"2026-11-07T17:23:17.491063492Z","updated_at":"2026-11-07T17:50:39.727056Z"}]}}
