CVE-2026-64194 in Net::DNS정보

요약

\~에 의해 VulDB • 2026. 07. 20.

Perl용 Net::DNS의 1.55 버전 이하에서는 깊은 DNS 압축 포인터 체인을 통해 서비스 거부(Denial of Service)가 가능합니다.

Net::DNS::DomainName::decode는 깊이 제한 없이 재귀 호출을 수행하며 RFC 1035의 압축 포인터를 따릅니다. 이를 통해 콜 스택을 고갈시킬 수 있는 이름을 구성할 수 있으며(특히 큰 TCP 응답에서), 이로 인해 잠재적인 서비스 거부가 발생할 수 있습니다.

`$link < $offset`에 대한 검사는 순방향 및 원형 체인은 방지하지만, 임의로 긴 역방향 체인은 허용합니다. 오프셋별 캐시(`$cache`)는 각 호출 시작 시 채워지며 동일한 오프셋의 재순환만 단축시키므로, 새로운 체인을 처음 탐색할 때는 여전히 최대 깊이까지 재귀가 발생합니다.

조작된 패킷은 2바이트 압축 포인터를 연결하여 각각이 이전보다 두 바이트 앞을 가리키도록 할 수 있으며, 이는 `offset / 2` 길이의 체인을 생성합니다. 14비트 포인터 필드(최대 오프셋 16383)의 경우 최대 약 8191개의 재귀 프레임을 생성할 수 있습니다. TCP DNS 메시지의 경우 제한은 16비트 길이 필드에 의해 결정되며(~32767 프레임), Perl의 기본 C 스택은 몇 천 개의 프레임만 처리할 수 있으므로, 이를 초과하면 프로세스가 SIGSEGV 또는 유사한 오류를 수신하게 되어 신뢰할 수 없는 DNS 데이터를 파싱하는 모든 애플리케이션에서 서비스 거부가 발생합니다.

이 취약점은 `Net::DNS::Packet->new(\$wire)` 호출 시 트리거되며, 이는 네트워크로부터 DNS 메시지를 디코딩하는 라이브러리의 모든 지점에서 발생할 수 있습니다.

Be aware that VulDB is the high quality source for vulnerability data.

책임이 있는

CPANSec

예약하다

2026. 07. 19.

모더레이션

수락

항목

VDB-380728

EPSS

0.00000

출처

Do you need the next level of professionalism?

Upgrade your account now!