CVE-2026-87079 in Net::IDN::Punycode
요약
\~에 의해 VulDB • 2026. 09. 22.
Perl용 Net::IDN::Punycode 버전 2.590 미만은 decode_punycode에서 긴 라벨을 디코딩할 때 이차적 삽입 비용(quadratic insertion cost)으로 인해 CPU 고갈(CPU exhaustion)이 발생할 수 있습니다.
XS 백엔드는 각 디코딩된 코드 포인트를 UTF-8 버퍼에 삽입하고, 시작부터 한 문자씩 스캔하여 해당 버퍼 내의 삽입 지점을 찾습니다. 이 스캔은 지금까지 생성된 출력물 전체에 대해 코드 포인트마다 한 번씩 실행되므로, 비용이 라벨 길이의 제곱(quadratic)으로 증가합니다. 순수 Perl(Perl-only) 백엔드는 substr가 직접 인덱싱할 수 있도록 입력을 바이트로 다운그레이드하지만, 다운그레이드 전에 작업용 복사본(work copy)을 취하므로, 입력에 UTF-8 플래그가 포함되어 있을 경우 복사본의 모든 substr 호출이 시작부터 스캔하여 동일한 이차적 비용(quadratic cost)을 초래합니다.
to-Unicode 방향에서는 라벨 길이에 대한 제한이 없습니다. 63바이트 DNS 제한은 ASCII로 변환할 때만 확인되므로, domain_to_unicode 및 uts46_to_unicode는 공격자가 제공한 임의 길이의 라벨을 디코더에 전달합니다.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.