GitHub Advisoryadvisory · Go

GHSA-h8mm-c463-wjq3 CoreDNS' transfer stanza selection uses lexicographic compare (subzone ACL bypass)

HIGH Published 2026-04-28 Modified 2026-05-08 Official page ↗
Aliases
CVE-2026-33489
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:H/I:N/A:N
Weaknesses
CWE-862, CWE-863
Reviewed
2026-04-28

Affected packages

• Go github.com/coredns/coredns: < 1.14.3 → fixed in 1.14.3

Description

Summary CoreDNS' transfer plugin can select the wrong ACL stanza when both a parent zone and a more-specific subzone are configured. A permissive parent-zone transfer rule can override a restrictive subzone rule (name-dependent), allowing an unauthorized client to perform AXFR/IXFR for the subzone and retrieve its zone contents. Details In plugin/transfer/transfer.go, stanza selection is implemented by longestMatch(), which is documented as "longest zone match wins", but it actually chooses the winner via a lexicographic string comparison: • zone := "" // longest zone match wins (plugin/transfer/transfer.go) • if z > zone { zone = z; x = xfr } (plugin/transfer/transfer.go) So, a parent zone like example.org. can beat a child zone like a.example.org. purely due to lexicographic ordering ("example.org." > "a.example.org."), even though the child zone is the longer/more specific suffix match. The bypass is data-dependent (some child labels will win, some will lose), making it operationally non-intuitive. PoC 1. Adjust COREDNS_BIN in the PoC to point at right path (see the top-level const definitions for tunables as well) 2. Run python3 ./acl-repro.py 3. Expected output: • Baseline (only subzone transfer rule) * axfr a.example.org.: rcode=5 ancount=0 (expected REFUSED=5) • Candidate (add permissive parent transfer rule) * axfr a.example.org.: rcode=0 ancount=5 (expected NOERROR=0 with ancount>0) • OK * Subzone transfer ACL bypass reproduced: adding a permissive parent-zone stanza can override a stricter child-zone stanza due to lexicographic zone selection. Impact Unauthorized zone transfer can expose full zone contents to a remote network client that was intended to be denied by a subzone-specific transfer policy.

Related

Alias · CVE (1)

  • CVE-2026-33489 CoreDNS is a DNS server that chains plugins. vulnerability

Weakness · CWE (2)

  • CWE-862 Missing Authorization weakness
  • CWE-863 Incorrect Authorization weakness

References