CVE-2026-32934: CoreDNS DNS-over-QUIC unbounded goroutine growth leads to denial of service
Summary CoreDNS' DNS-over-QUIC (DoQ) server can be driven into large goroutine and memory growth by a remote client that opens many QUIC streams and stalls after sending only 1 byte. Even with a small configured quic { workerpoolsize ... }, CoreDNS still spawns a goroutine per accepted stream (workers + waiters) and active workers can block indefinitely in io.ReadFull() with no per-stream read deadline, enabling unauthenticated remote DoS via memory exhaustion/OOM-kill.
Details CoreDNS' DoQ server uses a global worker pool (streamProcessPool) to limit concurrent stream processing, but when the pool is full it still spawns a goroutine per accepted stream that waits to acquire a worker token: select { case s.streamProcessPool <- ...: go ...; default: go ... wait for token ... } (core/dnsserver/serverquic.go)
Additionally, the DoQ message framing reads are blocking io.ReadFull() calls with no per-stream read deadline: readDOQMessage() reads the 2-byte length prefix and message body via io.ReadFull() (core/dnsserver/serverquic.go)
This allows an attacker to pin all workers by sending 1 byte (so io.ReadFull() blocks waiting for the second byte of the DoQ length prefix), while also creating an unbounded backlog of goroutines waiting for a worker token.
Note: this appears to be a result of an incomplete fix/regression for CVE-2025-47950 (GHSA-cvx7-x8pj-x2gw).
PoC 1. Adjust COREDNSBIN in the PoC to point at right path (see the top-level const definitions for tunables as well) 2. Run python3 ./doq-dos-repro.py 3. Expected sample output: Start CoreDNS Corefile: /tmp/vh-f003-doq-mem-regression/Corefile Log: /tmp/vh-f003-doq-mem-regression/coredns.log
Baseline sample (idle) rsskib=49380 gogoroutines=17
Build + run partial-stream flooder go: downloading golang.org/x/net v0.43.0 go: downloading golang.org/x/crypto v0.41.0 go: downloading go.uber.org/mock v0.5.2 go: downloading github.com/stretchr/testify v1.11.1 go: downloading golang.org/x/sys v0.35.0 go: downloading github.com/pmezard/go-difflib v1.0.0 go: downloading github.com/davecgh/go-spew v1.1.1 go: downloading gopkg.in/yaml.v3 v3.0.1
Candidate sample (during attack) rsskib=137968 gogoroutines=15557
Flooder output opened conns=60 streamsperconn=256 totalstreams=15360
Wrote results /tmp/vh-f003-doq-mem-regression/results.json
OK DoQ flood caused goroutine/RSS growth despite workerpoolsize.
Impact Unauthenticated remote DoS on an encrypted DNS transport via goroutine/RSS growth leading to OOM-kill/crash and service outage.
Other sources
CoreDNS DNS-over-QUIC unbounded goroutine growth leads to denial of service
— Microsoft
CoreDNS is a DNS server that chains plugins. In versions prior to 1.14.3, the DNS-over-QUIC (DoQ) server can be driven into unbounded goroutine and memory growth by a remote client that opens many QUIC streams and sends only 1 byte per stream. When the worker pool is full, CoreDNS still spawns a goroutine per accepted stream to wait for a worker token. Additionally, active workers block indefinitely in io.ReadFull() with no per-stream read deadline, allowing an attacker to pin all workers by sending a single byte so the read blocks waiting for the second byte of the DoQ length prefix. This enables an unauthenticated remote attacker to cause memory exhaustion and OOM-kill. This issue has been fixed in version 1.14.3. No known workarounds exist.
— MITRE
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
go/github.com/coredns/corednsto a version that resolves this vulnerability.Fixed in 1.14.3 - Upgrade
Upgrade
CoreDNS DNS-over-QUIC (DoQ) serverto a version that resolves this vulnerability.Fixed in 1.14.3
Event History
Frequently Asked Questions
What is the severity of CVE-2026-32934?
CVE-2026-32934 has a moderate severity, as it can lead to resource exhaustion through goroutine and memory growth.
How do I fix CVE-2026-32934?
To fix CVE-2026-32934, upgrade CoreDNS to version 1.14.3 or later.
What is the exploit mechanism in CVE-2026-32934?
The exploit mechanism involves a remote client opening multiple QUIC streams and stalling after sending only 1 byte.
Which versions of CoreDNS are affected by CVE-2026-32934?
CoreDNS versions prior to 1.14.3 are affected by CVE-2026-32934.
What potential impact does CVE-2026-32934 have on my system?
CVE-2026-32934 can lead to performance issues and potential denial of service due to high resource consumption.