GitHub Advisoryadvisory · Go
GHSA-cvx7-x8pj-x2gw CoreDNS Vulnerable to DoQ Memory Exhaustion via Stream Amplification
HIGH
Official page ↗
- Aliases
- CVE-2025-47950
- Ecosystem
- Go
- Packages
- github.com/coredns/coredns
- Severity
- High
- CVSS vector
- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
- Weaknesses
- CWE-770
- Reviewed
- 2025-06-06
Affected packages
• Go github.com/coredns/coredns: < 1.12.2 → fixed in 1.12.2
Description
Summary
A Denial of Service (DoS) vulnerability was discovered in the CoreDNS DNS-over-QUIC (DoQ) server implementation. The server previously created a new goroutine for every incoming QUIC stream without imposing any limits on the number of concurrent streams or goroutines. A remote, unauthenticated attacker could open a large number of streams, leading to uncontrolled memory consumption and eventually causing an Out Of Memory (OOM) crash — especially in containerized or memory-constrained environments.
Impact
• Component: `server_quic.go`
• Attack Vector: Remote, network-based
• Attack Complexity: Low
• Privileges Required: None
• User Interaction: None
• Impact: High availability loss (OOM kill or unresponsiveness)
This issue affects deployments with `quic://` enabled in the Corefile. A single attacker can cause the CoreDNS instance to become unresponsive using minimal bandwidth and CPU.
Patches
The patch introduces two key mitigation mechanisms:
• `max_streams`: Caps the number of concurrent QUIC streams per connection. Default: `256`.
• `worker_pool_size`: Introduces a server-wide, bounded worker pool to process incoming streams. Default: `1024`.
This eliminates the 1:1 stream-to-goroutine model and ensures that CoreDNS remains resilient under high concurrency. The new configuration options are exposed through the `quic` Corefile block:
```
quic {
max_streams 256
worker_pool_size 1024
}
```
These defaults are generous and aligned with typical DNS-over-QUIC client behavior.
Workarounds
If you're unable to upgrade immediately, you can:
• Disable QUIC support by removing or commenting out the `quic://` block in your Corefile
• Use container runtime resource limits to detect and isolate excessive memory usage
• Monitor QUIC connection patterns and alert on anomalies
References
• RFC 9250 - DNS over Dedicated QUIC Connections
• quic-go GitHub project
• QUIC stream exhaustion class of vulnerabilities (related)
Credit
Thanks to @thevilledev for disclovering this vulnerability and contributing a high-quality fix.
For more information
Please consult our security guide for more information regarding our security process.
Related
Alias · CVE (1)
- CVE-2025-47950 CoreDNS is a DNS server that chains plugins. vulnerability
Weakness · CWE (1)
- CWE-770 Allocation of Resources Without Limits or Throttling weakness
References
- https://github.com/coredns/coredns/security/advisories/GHSA-cvx7-x8pj-x2gw web
- https://nvd.nist.gov/vuln/detail/CVE-2025-47950 advisory
- https://github.com/coredns/coredns/commit/efaed02c6a480ec147b1f799aab7cf815b17dfe1 web
- https://datatracker.ietf.org/doc/html/rfc9250 web
- https://github.com/coredns/coredns package
- https://github.com/quic-go/quic-go web
- https://www.usenix.org/conference/usenixsecurity23/presentation/botella web