Bug 2509706

Summary: CVE-2026-64194 perl-Net-DNS: Net::DNS: Denial of Service via crafted DNS compression pointers [fedora-all]
Product: [Fedora] Fedora Reporter: Tomas Hoger <thoger>
Component: perl-Net-DNSAssignee: Paul Wouters <paul.wouters>
Status: ON_QA --- QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: high Docs Contact:
Priority: high    
Version: 45CC: mspacek, paul.wouters, perl-devel, rstrode
Target Milestone: ---Keywords: Security, SecurityTracking
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard: {"flaws": ["acc47f81-917b-4228-8bb2-8574588bb17d"]}
Fixed In Version: Doc Type: ---
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 2502952    

Description Tomas Hoger 2026-07-31 07:40:22 UTC
Disclaimer: Community trackers are created by Red Hat Product Security team on a best effort basis. Package maintainers are required to ascertain if the flaw indeed affects their package, before starting the update process.

Net::DNS versions through 1.55 for Perl allow Denial of Service via deep DNS compression pointer chains.

Net::DNS::DomainName::decode follows RFC 1035 compression pointers by recursing into itself with no depth limit. It is possible to construct a name which saturates the call stack (at least with larger TCP responses), leading to a potential Denial of Service.

The guard `$link < $offset` prevents forward and circular chains, but still allows arbitrarily long backward chains. The per-offset cache (`$cache`) is populated at the start of each call and short-circuits only re-traverses of the same offset - the initial descent through a fresh chain still recurses at full depth.

A crafted packet can chain two-byte compression pointers so that each one points two bytes earlier than the previous, producing a chain length of `offset / 2`. For the 14-bit pointer field (max offset 16383) this gives up to ~8191 recursive frames. For a TCP DNS message the limit is the 16-bit length field (~32767 frames). Perl's default C stack handles only a few thousand frames; beyond that the process receives SIGSEGV or similar, which is a denial-of-service for any application parsing untrusted DNS data.

The vulnerability is triggered by `Net::DNS::Packet->new(\$wire)` i.e. any point where the library decodes a DNS message from the network.

Comment 1 Aoife Moloney 2026-08-17 15:44:04 UTC
This bug appears to have been reported against 'rawhide' during the Fedora Linux 45 development cycle.
Changing version to 45.

Comment 2 Fedora Update System 2026-09-01 08:13:58 UTC
FEDORA-2026-1237afef8a (perl-Net-DNS-1.56-1.fc43) has been submitted as an update to Fedora 43.
https://bodhi.fedoraproject.org/updates/FEDORA-2026-1237afef8a

Comment 3 Fedora Update System 2026-09-01 08:14:02 UTC
FEDORA-2026-a0607111e6 (perl-Net-DNS-1.56-1.fc44) has been submitted as an update to Fedora 44.
https://bodhi.fedoraproject.org/updates/FEDORA-2026-a0607111e6

Comment 4 Fedora Update System 2026-09-02 01:12:44 UTC
FEDORA-2026-a0607111e6 has been pushed to the Fedora 44 testing repository.
Soon you'll be able to install the update with the following command:
`sudo dnf upgrade --enablerepo=updates-testing --refresh --advisory=FEDORA-2026-a0607111e6`
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2026-a0607111e6

See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates.

Comment 5 Fedora Update System 2026-09-02 02:02:04 UTC
FEDORA-2026-1237afef8a has been pushed to the Fedora 43 testing repository.
Soon you'll be able to install the update with the following command:
`sudo dnf upgrade --enablerepo=updates-testing --refresh --advisory=FEDORA-2026-1237afef8a`
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2026-1237afef8a

See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates.