DoS in Cilium agent DNS proxy from crafted DNS responses
Description
Cilium is a networking, observability, and security solution with an eBPF-based dataplane. A denial of service vulnerability affects versions 1.14.0 through 1.14.7, 1.15.0 through 1.15.11, and 1.16.0 through 1.16.4. In a Kubernetes cluster where Cilium is configured to proxy DNS traffic, an attacker can crash Cilium agents by sending a crafted DNS response to workloads from outside the cluster. For traffic that is allowed but without using DNS-based policy, the dataplane will continue to pass traffic as configured at the time of the DoS. For workloads that have DNS-based policy configured, existing connections may continue to operate, and new connections made without relying on DNS resolution may continue to be established, but new connections which rely on DNS resolution may be disrupted. Any configuration changes that affect the impacted agent may not be applied until the agent is able to restart. This issue is fixed in Cilium v1.14.18, v1.15.12, and v1.16.5. No known workarounds are available.
Affected packages
Versions sourced from the GitHub Security Advisory.
| Package | Affected versions | Patched versions |
|---|---|---|
github.com/cilium/ciliumGo | >= 1.14.0, < 1.14.18 | 1.14.18 |
github.com/cilium/ciliumGo | >= 1.15.0, < 1.15.12 | 1.15.12 |
github.com/cilium/ciliumGo | >= 1.16.0, < 1.16.5 | 1.16.5 |
Affected products
1Patches
21971bc684b6bdnsproxy: bail when extracting info from DNS fails
1 file changed · +2 −2
daemon/cmd/fqdn.go+2 −2 modified@@ -337,8 +337,8 @@ func (d *Daemon) notifyOnDNSMsg(lookupTime time.Time, ep *endpoint.Endpoint, epI qname, responseIPs, TTL, CNAMEs, rcode, recordTypes, qTypes, err := dnsproxy.ExtractMsgDetails(msg) if err != nil { - // This error is ok because all these values are used for reporting, or filling in the cache. - log.WithError(err).Error("cannot extract DNS message details") + log.WithError(err).WithField(logfields.DNSName, qname).Error("cannot extract DNS message details") + return fmt.Errorf("failed to extract DNS message details: %w", err) } var serverPort uint16
b1948e217a42fqdn/dnsproxy: validate DNS response IPs
1 file changed · +6 −0
pkg/fqdn/dnsproxy/proxy.go+6 −0 modified@@ -1196,11 +1196,17 @@ func ExtractMsgDetails(msg *dns.Msg) (qname string, responseIPs []net.IP, TTL ui // Handle A, AAAA and CNAME records by accumulating IPs and lowest TTL switch ans := ans.(type) { case *dns.A: + if len(ans.A) != 4 { + return qname, nil, 0, nil, 0, nil, nil, errors.New("invalid IP in A record") + } responseIPs = append(responseIPs, ans.A) if TTL > ans.Hdr.Ttl { TTL = ans.Hdr.Ttl } case *dns.AAAA: + if len(ans.AAAA) != 16 { + return qname, nil, 0, nil, 0, nil, nil, errors.New("invalid IP in AAAA record") + } responseIPs = append(responseIPs, ans.AAAA) if TTL > ans.Hdr.Ttl { TTL = ans.Hdr.Ttl
Vulnerability mechanics
Generated by null/stub on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.
References
6- github.com/advisories/GHSA-9m5p-c77c-f9j7ghsaADVISORY
- nvd.nist.gov/vuln/detail/CVE-2025-23028ghsaADVISORY
- github.com/cilium/cilium/commit/1971bc684b6b36703ebae0dd7539c623f988a257ghsaWEB
- github.com/cilium/cilium/commit/b1948e217a4212b81175d8bf763d0ef350fcc96cghsaWEB
- github.com/cilium/cilium/pull/36252ghsax_refsource_MISCWEB
- github.com/cilium/cilium/security/advisories/GHSA-9m5p-c77c-f9j7ghsax_refsource_CONFIRMWEB
News mentions
0No linked articles in our index yet.