CVE-2026-32934: CoreDNS DNS-over-QUIC unbounded goroutine growth leads to denial of service

Published Apr 28, 2026
·
Updated

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

3 affected componentsFixes available
go/github.com/coredns/coredns<1.14.3
1.14.3
coredns.io CoreDNS<1.14.3
Microsoft azl3 coredns 1.11.4-15

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade go/github.com/coredns/coredns to a version that resolves this vulnerability.

    Fixed in 1.14.3
  2. Upgrade

    Upgrade CoreDNS DNS-over-QUIC (DoQ) server to a version that resolves this vulnerability.

    Fixed in 1.14.3

Event History

Apr 28, 2026
Advisory Published
via GitHub·10:40 PM
Data Sourced
via GitHub·10:40 PM
DescriptionSeverityWeaknessAffected Software
May 5, 2026
CVE Published
via MITRE·07:06 PM
Data Sourced
via MITRE·07:06 PM
DescriptionWeakness
Data Sourced
via NVD·08:16 PM
DescriptionSeverityWeaknessAffected Software
May 7, 2026
Data Sourced
via Microsoft·08:02 AM
DescriptionSeverityWeakness
Data Sourced
via Microsoft·08:02 AM
Affected Software
Updated
via Microsoft·08:02 AM
DescriptionSeverity

Frequently Asked Questions

1

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.

2

How do I fix CVE-2026-32934?

To fix CVE-2026-32934, upgrade CoreDNS to version 1.14.3 or later.

3

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.

4

Which versions of CoreDNS are affected by CVE-2026-32934?

CoreDNS versions prior to 1.14.3 are affected by CVE-2026-32934.

5

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.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203