CVE-2025-23028

5.3 MEDIUM

📋 TL;DR

A denial of service vulnerability in Cilium allows attackers to crash Cilium agents by sending crafted DNS responses to workloads from outside the cluster. This affects Kubernetes clusters running vulnerable Cilium versions with DNS proxy enabled. The vulnerability disrupts DNS resolution for new connections when DNS-based policies are configured.

💻 Affected Systems

Products:
  • Cilium
Versions: 1.14.0-1.14.7, 1.15.0-1.15.11, 1.16.0-1.16.4
Operating Systems: Linux
Default Config Vulnerable: ✅ No
Notes: Only vulnerable when Cilium is configured to proxy DNS traffic in Kubernetes clusters.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete disruption of DNS resolution for workloads with DNS-based policies, preventing new connections that rely on DNS, while existing connections may continue. Configuration changes cannot be applied until agents restart.

🟠

Likely Case

Partial service disruption where new connections requiring DNS resolution fail, while existing traffic continues. This creates inconsistent application behavior and potential service degradation.

🟢

If Mitigated

If DNS proxy is disabled or clusters are not internet-facing, risk is significantly reduced as attackers cannot send crafted DNS responses.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: UNKNOWN
Unauthenticated Exploit: ⚠️ Yes
Complexity: LOW

Attack requires sending crafted DNS responses from outside the cluster to workloads. No authentication needed if network access exists.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: v1.14.18, v1.15.12, v1.16.5

Vendor Advisory: https://github.com/cilium/cilium/security/advisories/GHSA-9m5p-c77c-f9j7

Restart Required: Yes

Instructions:

1. Identify affected Cilium versions. 2. Upgrade to patched versions: v1.14.18, v1.15.12, or v1.16.5. 3. Restart Cilium agents after upgrade. 4. Verify agents are running and DNS functionality is restored.

🔧 Temporary Workarounds

Disable DNS Proxy

linux

Disable Cilium's DNS proxy feature if not required, preventing exploitation.

kubectl edit configmap cilium-config -n kube-system
Set 'enableDNSProxy: false'

🧯 If You Can't Patch

  • Implement network policies to restrict DNS traffic to trusted sources only
  • Monitor Cilium agent health and restart crashed agents automatically

🔍 How to Verify

Check if Vulnerable:

Check Cilium version and DNS proxy configuration: kubectl get configmap cilium-config -n kube-system -o yaml | grep -E 'version|enableDNSProxy'

Check Version:

kubectl get pods -n kube-system -l k8s-app=cilium -o jsonpath='{.items[*].spec.containers[*].image}' | grep -o 'cilium:[^ ]*'

Verify Fix Applied:

Verify Cilium version is patched: kubectl get pods -n kube-system -l k8s-app=cilium -o jsonpath='{.items[*].spec.containers[*].image}'

📡 Detection & Monitoring

Log Indicators:

  • Cilium agent crashes or restarts
  • DNS resolution failures in application logs
  • Cilium agent panic logs

Network Indicators:

  • Unexpected DNS responses from external sources to cluster workloads
  • DNS query timeouts

SIEM Query:

source="cilium" AND ("panic" OR "crash" OR "restart")

🔗 References

📤 Share & Export