CVE-2025-24514 Overview
CVE-2025-24514 is a configuration injection vulnerability in the Kubernetes ingress-nginx controller. The auth-url Ingress annotation accepts attacker-controlled input that is injected into the generated nginx configuration. An attacker with permission to create or modify Ingress objects can execute arbitrary code inside the ingress-nginx controller pod. Because the controller reads Secrets cluster-wide in default installations, successful exploitation discloses all cluster Secrets. The flaw is tracked under CWE-20 (Improper Input Validation) and an exploit is publicly available on Exploit-DB.
Critical Impact
Arbitrary code execution in the ingress-nginx controller context and disclosure of cluster-wide Kubernetes Secrets.
Affected Products
- Kubernetes ingress-nginx controller (kubernetes/ingress-nginx)
- NetApp products incorporating ingress-nginx (per NetApp advisory NTAP-20250328-0008)
- Kubernetes clusters deploying ingress-nginx in default configuration
Discovery Timeline
- 2025-03-25 - CVE-2025-24514 published to NVD
- 2026-04-15 - Last updated in NVD database
Technical Details for CVE-2025-24514
Vulnerability Analysis
The ingress-nginx controller translates Kubernetes Ingress objects into nginx configuration directives. The nginx.ingress.kubernetes.io/auth-url annotation specifies an external authentication endpoint. The controller fails to validate and sanitize the value supplied through this annotation before embedding it into the generated nginx configuration template. An attacker injects nginx directives by crafting a malicious auth-url value, which the controller then renders into the runtime configuration.
Once the malicious configuration is loaded, nginx executes attacker-supplied directives inside the controller process. This grants code execution in the controller pod. The controller's ServiceAccount has cluster-wide read access to Secret objects by default, allowing the attacker to exfiltrate every Secret in the cluster, including service account tokens, TLS private keys, and application credentials.
With Exploit-DB entry #52475 published and an EPSS percentile of 97.8, exploitation activity is highly probable. The vulnerability requires only low-privilege Ingress write access over the network.
Root Cause
The root cause is improper input validation [CWE-20] of Ingress annotation values during nginx configuration template rendering. The controller treats auth-url as trusted input rather than untrusted user data requiring strict validation against URL syntax.
Attack Vector
An attacker who can create or update an Ingress resource submits an Ingress manifest containing a crafted nginx.ingress.kubernetes.io/auth-url annotation. The controller parses the Ingress, renders the templated nginx configuration, reloads nginx, and executes the injected directives. Refer to the Kubernetes issue discussion and the NetApp Security Advisory for technical detail. No verified exploitation code is reproduced here.
// No verified exploit code reproduced. See Exploit-DB #52475 for the public proof of concept.
Detection Methods for CVE-2025-24514
Indicators of Compromise
- Ingress objects containing unusual characters, newlines, or nginx directives within the nginx.ingress.kubernetes.io/auth-url annotation
- Unexpected outbound connections from the ingress-nginx-controller pod to attacker-controlled hosts
- Modifications to /etc/nginx/nginx.conf inside the controller pod that do not correlate with Ingress changes from trusted namespaces
- Anomalous reads of Secrets across multiple namespaces by the ingress-nginx ServiceAccount in Kubernetes audit logs
Detection Strategies
- Audit Kubernetes API server logs for create and update operations on ingresses.networking.k8s.io from non-administrative accounts
- Run admission policies (OPA/Gatekeeper, Kyverno) that flag or block Ingress annotations with non-URL characters in auth-url, auth-signin, and related fields
- Inspect the rendered nginx configuration inside controller pods for directives not derived from Ingress fields
Monitoring Recommendations
- Forward Kubernetes audit logs and ingress-nginx controller logs to a centralized SIEM for correlation
- Alert on ServiceAccount token use originating from outside the controller pod IP range
- Track process execution and outbound network telemetry from the ingress-nginx-controller pod for deviations from baseline
How to Mitigate CVE-2025-24514
Immediate Actions Required
- Upgrade ingress-nginx to version 1.11.5, 1.12.1, or later, which sanitizes annotation input
- Restrict create and update permissions on Ingress resources to trusted administrators using Kubernetes RBAC
- Rotate all Kubernetes Secrets if compromise of the ingress-nginx controller is suspected
- Review NetApp advisory NTAP-20250328-0008 for product-specific patches
Patch Information
The Kubernetes maintainers released fixed versions of ingress-nginx (1.11.5 and 1.12.1) that validate annotation input before template rendering. NetApp published a parallel advisory for affected products. Apply vendor patches immediately and verify the controller version with kubectl -n ingress-nginx get deploy ingress-nginx-controller -o jsonpath='{.spec.template.spec.containers[0].image}'.
Workarounds
- Disable the validating webhook bypass by ensuring the ingress-nginx admission webhook is enforced cluster-wide
- Set --enable-annotation-validation=true on the controller to reject malformed annotations
- Limit the controller ServiceAccount to namespace-scoped Secret access where feasible to reduce blast radius
# Verify ingress-nginx version and enforce annotation validation
kubectl -n ingress-nginx get deploy ingress-nginx-controller \
-o jsonpath='{.spec.template.spec.containers[0].image}'
# Patch controller to enable strict annotation validation
kubectl -n ingress-nginx patch deploy ingress-nginx-controller \
--type='json' \
-p='[{"op":"add","path":"/spec/template/spec/containers/0/args/-","value":"--enable-annotation-validation=true"}]'
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

