ZeroHour

CVE-2026-86003

mass

CoreDNS DoH/DoQ/gRPC listeners let unauthenticated DNS UPDATEs reach upstreams

CVSS 3.1
7.5 high
EPSS
Published
()
Modified
AI analysis

CoreDNS's DNS-over-HTTPS, DNS-over-HTTP/3, DNS-over-QUIC, and DNS-over-gRPC listeners (in plugin/pkg/doh/doh.go, core/dnsserver/server_quic.go, and core/dnsserver/server_grpc.go) unpack requests without applying dns.DefaultMsgAcceptFunc, the screening policy that the UDP, TCP, and DNS-over-TLS listeners enforce. As a result, an unauthenticated remote client can submit an RFC 2136 dynamic UPDATE over DoH/DoH3/DoQ/DoG, which the proxy or forward plugin relays unchanged to an update-capable upstream. If that upstream trusts CoreDNS's source address or connection and does not require an attacker-unknown end-to-end TSIG, the attacker can add, replace, or delete DNS records to redirect traffic, take over names, alter mail routing, or corrupt a writable zone. Any CoreDNS deployment prior to 1.14.7 that exposes these listeners and forwards to dynamic-update-capable upstreams is affected, a notable population since CoreDNS is the default DNS server in Kubernetes. No exploitation has been reported (not in CISA KEV, no public PoC), and a fix ships in CoreDNS 1.14.7.

What to do: Upgrade to CoreDNS 1.14.7. Until then, do not expose DoH/DoH3/DoQ/DoG listeners to untrusted networks, and require end-to-end TSIG on any upstream zone accepting RFC 2136 updates instead of trusting CoreDNS's source address. Audit Corefiles for doh://, quic:// (h3), and grpc:// server blocks and verify whether their forward/proxy upstreams accept dynamic DNS UPDATEs.

Affected
CoreDNS project (CNCF) CoreDNSAll versions prior to 1.14.7 (fixed in 1.14.7)
Estimated exposure
massmillions of CoreDNS instances (default DNS in Kubernetes clusters), though only an unknown subset exposes DoH/DoH3/DoQ/DoG with update-capable upstreams — CoreDNS is bundled as the default DNS service in virtually every Kubernetes cluster, including managed offerings, implying an installed base in the millions, but the flaw is only reachable where DoH/DoH3/DoQ/DoG listeners are exposed and…

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 listeners in plugin/pkg/doh/doh.go, core/dnsserver/server_quic.go, and core/dnsserver/server_grpc.go call dns.Msg.Unpack without the dns.DefaultMsgAcceptFunc request policy used by UDP, TCP, and DNS-over-TLS. An unauthenticated client can send an RFC 2136 UPDATE that the proxy or forward plugin passes unchanged to an update-capable upstream. If that upstream trusts CoreDNS's source address or connection and does not require an attacker-unknown end-to-end TSIG, the request appears to originate from CoreDNS and can add, replace, or delete DNS records, redirect traffic, take over names, alter mail routing, or disrupt the writable zone. This issue is fixed in version 1.14.7.

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

In the news

No ingested article mentions this CVE yet.