ZeroHour

CVE-2026-82399

mass

Unauthenticated memory-exhaustion DoS in CoreDNS DoH/DoQ/DoH3/gRPC listeners

CVSS 3.1
7.5 high
EPSS
Published
()
Modified
AI analysis

CoreDNS before 1.14.7 unpacks attacker-controlled DNS messages before the fixed-header validation performed by dns.DefaultMsgAcceptFunc on its DNS-over-HTTPS, DNS-over-HTTP/3, DNS-over-QUIC, and DNS-over-gRPC request paths (plugin/pkg/doh/doh.go, core/dnsserver/server_quic.go, core/dnsserver/server_grpc.go). An unauthenticated client can abuse DNS name compression with inflated DNS section counts to trigger excessive memory allocation before the plugin chain runs. By sustaining enough concurrent requests, the attacker exhausts memory and terminates the CoreDNS process, and because allocation happens before the plugin chain, plugin-level rate limiting cannot prevent the denial of service. Only deployments exposing these non-default listeners are affected; the ordinary UDP and TCP listeners validate the header first and are not vulnerable. No in-the-wild exploitation, public proof-of-concept, or CISA KEV listing is currently known.

What to do: Upgrade to CoreDNS 1.14.7 or later. Audit Corefiles for quic://, https://, h3://, or grpc:// server blocks to determine exposure, and until patching, restrict those listeners to trusted clients via firewalling or allowlisting, noting that plugin-level rate limiting does not mitigate this flaw. UDP/TCP-only deployments can be deprioritized.

Affected
CoreDNSAll versions prior to 1.14.7 with DoH, DoH3, DoQ, or DoG (gRPC) listeners enabled
Estimated exposure
massmillions of CoreDNS instances deployed (default cluster DNS in Kubernetes), of which likely tens of thousands run exposed DoH/DoQ/DoH3/gRPC listeners — CoreDNS is bundled as the default DNS service in virtually all Kubernetes clusters and is widely used in public and enterprise resolvers, giving a very large installed base, though only deployments with https://, h3://, quic://, or grpc://…

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description

CoreDNS is a DNS server written in Go. Prior to 1.14.7, the DNS-over-HTTPS, DNS-over-HTTP/3, DNS-over-QUIC, and DNS-over-gRPC request paths in plugin/pkg/doh/doh.go, core/dnsserver/server_quic.go, and core/dnsserver/server_grpc.go call dns.Msg.Unpack on attacker-controlled DNS section counts before dns.DefaultMsgAcceptFunc validates the fixed header. An unauthenticated client can use DNS name compression and excessive section counts to amplify allocation before the plugin chain, so plugin-level rate limiting cannot prevent concurrent requests from exhausting memory and terminating CoreDNS. The ordinary UDP and TCP listeners are not affected because they validate the header first. This issue is fixed in version 1.14.7.

Weakness
CWE-770
Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

In the news

No ingested article mentions this CVE yet.