VYPR
Moderate severityNVD Advisory· Published Jan 22, 2025· Updated Feb 18, 2025

DoS in Cilium agent DNS proxy from crafted DNS responses

CVE-2025-23028

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.

PackageAffected versionsPatched versions
github.com/cilium/ciliumGo
>= 1.14.0, < 1.14.181.14.18
github.com/cilium/ciliumGo
>= 1.15.0, < 1.15.121.15.12
github.com/cilium/ciliumGo
>= 1.16.0, < 1.16.51.16.5

Affected products

1

Patches

2
1971bc684b6b

dnsproxy: bail when extracting info from DNS fails

https://github.com/cilium/ciliumDavid BimmlerDec 5, 2024via ghsa
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
    
b1948e217a42

fqdn/dnsproxy: validate DNS response IPs

https://github.com/cilium/ciliumDavid BimmlerDec 4, 2024via ghsa
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

News mentions

0

No linked articles in our index yet.