CoreDNS DoH/DoQ/gRPC bypass UPDATE rejection enforced on UDP/TCP
### Summary CoreDNS accepted [RFC 2136](https://datatracker.ietf.org/doc/html/rfc2136) UPDATE messages over DoH, DoH3, DoQ, and DNS-over-gRPC, then allowed the `proxy`/`forward` plugin to send them unchanged to an upstream DNS server. UDP, TCP, and DoT rejected the same opcode before plugin dispatch. If an update-capable upstream trusts CoreDNS's source address or authenticated connection instead of requiring end-to-end TSIG, an unauthenticated client can use CoreDNS to add, replace, or delete DNS records. ### Details The affected listeners called `dns.Msg.Unpack` without the request policy used by the UDP/TCP server: - [DoH and DoH3](https://github.com/coredns/coredns/blob/18a58b9e898ccd95c3f8ee72a37b95b3d1e3e928/plugin/pkg/doh/doh.go#L134-L155) - [DoQ](https://github.com/coredns/coredns/blob/18a58b9e898ccd95c3f8ee72a37b95b3d1e3e928/core/dnsserver/server_quic.go#L212-L219) - [DNS-over-gRPC](https://github.com/coredns/coredns/blob/18a58b9e898ccd95c3f8ee72a37b95b3d1e3e928/core/dnsserver/server_grpc.go#L176-L184) CoreDNS routed the message using its Zone question without checking the opcode. [`forward`](https://github.com/coredns/coredns/blob/18a58b9e898ccd95c3f8ee72a37b95b3d1e3e928/plugin/forward/forward.go#L113-L118) then passed the original message to the [upstream](https://github.com/coredns/coredns/blob/18a58b9e898ccd95c3f8ee72a37b95b3d1e3e928/plugin/pkg/proxy/connect.go#L150-L167). By contrast, [`dns.DefaultMsgAcceptFunc`](https://github.com/miekg/dns/blob/v1.1.72/acceptf
GO-2026-6506
Revision 1
CoreDNS DoH/DoQ/gRPC bypass UPDATE rejection enforced on UDP/TCP in github.com/coredns/coredns
CoreDNS DoH/DoQ/gRPC bypass UPDATE rejection enforced on UDP/TCP in github.com/coredns/coredns
Imported from structured advisory data. Source references identify upstream records or fields; verify affected versions and your deployed configuration.
Security context
Source reference: osv:GO-2026-6506
github.com/coredns/coredns
Source reference: /affected/0/package/name
- Affected versions
- Not stated in this record
- Fixed versions
- 1.14.7
Source reference:
/affected/0/ranges - Prerequisites
- Not stated in this record
Structured affected-version data
Original package identities and version rules from this source.
[
{
"ranges": [
{
"type": "SEMVER",
"events": [
{
"introduced": "0"
},
{
"fixed": "1.14.7"
}
]
}
],
"package": {
"name": "github.com/coredns/coredns",
"purl": "pkg:golang/github.com/coredns/coredns",
"ecosystem": "Go"
},
"database_specific": {
"source": "https://vuln.go.dev/ID/GO-2026-6506.json"
},
"ecosystem_specific": {}
}
]- Related CVEs
- CVE-2026-86003
Source reference:
/aliases
Publisher severity
No explicit severity was provided.
- Event
- #23357 · Revision 1
- Added to Heist Feed
- Publisher date
GHSA-9gm5-9rfh-m6vx
Primary source · Revision 1
Imported from structured advisory data. Source references identify upstream records or fields; verify affected versions and your deployed configuration.
Security context
Source reference: osv:GHSA-9gm5-9rfh-m6vx
github.com/coredns/coredns
Source reference: /affected/0/package/name
- Affected versions
- Not stated in this record
- Fixed versions
- 1.14.7
Source reference:
/affected/0/ranges - Prerequisites
- Not stated in this record
Structured affected-version data
Original package identities and version rules from this source.
[
{
"ranges": [
{
"type": "SEMVER",
"events": [
{
"introduced": "0"
},
{
"fixed": "1.14.7"
}
]
}
],
"package": {
"name": "github.com/coredns/coredns",
"purl": "pkg:golang/github.com/coredns/coredns",
"ecosystem": "Go"
},
"database_specific": {
"source": "https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/09/GHSA-9gm5-9rfh-m6vx/GHSA-9gm5-9rfh-m6vx.json",
"last_known_affected_version_range": "<= 1.14.6"
}
}
]- Related CVEs
- CVE-2026-86003
Source reference:
/aliases
Publisher severity
high
Source reference: /database_specific/severity
- Event
- #23381 · Revision 1
- Added to Heist Feed
- Publisher date