IngressNightmare Flaws Enable Unauthenticated RCE in Kubernetes Ingress NGINX

· Original article ↗

Summary

Wiz researchers detailed four Ingress NGINX flaws that can enable unauthenticated RCE and access to Kubernetes secrets. They reported more than 6,500 publicly exposed clusters; fixes are available in versions 1.12.1 and 1.11.5.

Key points

  • The four flaws are CVE-2025-1097, CVE-2025-1098, CVE-2025-24514, and CVE-2025-1974; the article says CVE-2025-24513 is separate and does not lead to RCE.
  • The attack targets Ingress NGINX’s unauthenticated admission controller, which processes AdmissionReview requests and generates NGINX configuration.
  • Researchers showed how crafted ingress data can inject NGINX directives; they used the `ssl_engine` directive and a shared library staged through NGINX client-body buffering to achieve code execution.
  • The controller’s permissions can expose secrets across Kubernetes namespaces, creating a potential path to cluster takeover.
  • Wiz reported that about 43% of cloud environments were vulnerable and that its research found over 6,500 clusters with publicly exposed vulnerable admission controllers.
  • The article recommends upgrading to Ingress NGINX Controller 1.12.1 or 1.11.5, restricting external access to the admission webhook, or using network policies or temporary webhook disablement if upgrading is not immediate.
  • A later article update says ingress-nginx was declared EOL on November 12, 2025, and advises migrating to Gateway API or another ingress controller.

Article Details

Attack Vectors
  • An attacker with network access to the unauthenticated Ingress NGINX admission controller can send a crafted AdmissionReview request containing an Ingress object.
  • CVE-2025-24514 and CVE-2025-1097 allow unsanitized auth-url or auth-tls-match-cn annotation values to inject NGINX directives into the temporary configuration.
  • CVE-2025-1098 allows arbitrary NGINX directive injection through the Ingress object's UID field.
  • The injected ssl_engine directive can load a shared library from a file descriptor in ProcFS while nginx -t validates the configuration. The article describes placing the library in a temporary file using NGINX client-body buffering.
  • Code execution in the controller pod can expose Kubernetes secrets across namespaces through the pod's highly privileged role, potentially enabling cluster takeover.
Defensive Notes
  • Upgrade Ingress NGINX Controller to version 1.12.1 or 1.11.5, which the article identifies as fixed versions.
  • Do not expose the admission webhook endpoint externally; use strict network policies so only the Kubernetes API Server can access it.
  • If an immediate upgrade is not possible, temporarily disable the admission controller, then re-enable it after upgrading.
  • Use the article's Nuclei template to check for exposed admission controllers and monitor ingress traffic for malicious AdmissionReview requests and anomalous library loads.
  • The article recommends migrating to the Gateway API or another Ingress Controller as Ingress NGINX approaches retirement.

MITRE ATT&CK

CVE

People

Vendors

Products

Tools

Related Articles