# PoC - Ingress-NGINX Admission Controller File Descriptor Injection to RCE (Varios CVE asociados)

{% embed url="<https://www.exploit-db.com/exploits/52475>" %}

### Resumen

Desarrollé una **Proof of Concept (PoC)** que demuestra una vulnerabilidad crítica de **Remote Code Execution (RCE)** en **Ingress-NGINX Admission Controller**, explotable mediante **File Descriptor Injection** a través del webhook de admisión.

La PoC demuestra que es posible abusar del manejo de descriptores de archivo (`/proc/<pid>/fd/`) para forzar la carga de una **biblioteca compartida maliciosa**, logrando la ejecución arbitraria de código en el contexto del controlador ingress-nginx.

El exploit fue verificado en un entorno Kubernetes real y publicado en **Exploit Database (EDB-ID 52475)**.

### Detalle técnico

* **Producto afectado:** Ingress-NGINX Admission Controller
* **Versiones afectadas:** v1.10.0 a v1.11.1 (potencialmente otras)
* **CVEs asociados:**
  * CVE-2025-1097
  * CVE-2025-1098
  * CVE-2025-24514
  * CVE-2025-1974
* **Componente vulnerable:** Admission Webhook
* **Tipo de vulnerabilidad:** File Descriptor Injection → Remote Code Execution
* **Tipo de ataque:** Remoto
* **Impacto:** Ejecución de código arbitrario y acceso a secretos del cluster

### Descripción de la PoC

La PoC demuestra que el Admission Controller de ingress-nginx puede ser forzado a procesar rutas arbitrarias bajo `/proc/<pid>/fd/`, permitiendo a un atacante interactuar con descriptores de archivo abiertos por el proceso.

Mediante una combinación de:

* Carga de una **biblioteca compartida maliciosa (.so)**,
* Manipulación de rutas internas usando `/proc`,
* Envío de peticiones especialmente construidas al webhook de admisión,

es posible provocar la **ejecución automática de código** cuando la biblioteca maliciosa es cargada en memoria.

La PoC incluye la generación dinámica de un `.so` que establece una reverse shell cuando es cargado por el proceso vulnerable.

### Comportamiento demostrado

* Fuerza bruta de descriptores de archivo válidos (`/proc/<pid>/fd/<n>`).
* Carga de una biblioteca compartida controlada por el atacante.
* Ejecución automática de código al cargarse la librería (`constructor`).
* Obtención de ejecución remota de comandos en el contexto del controlador.
* Potencial acceso a **Secrets del cluster Kubernetes**.

### Entorno de pruebas

* **Sistema operativo:** Ubuntu 22.04
* **Plataforma:** Kubernetes (RKE2)
* **Componente:** Ingress-NGINX Admission Controller v1.11.1
* **Herramientas empleadas:**
  * Python
  * requests
  * gcc
  * Kubernetes (cluster local)
* **Escenario:** Entorno de laboratorio / cluster controlado

### Impacto

Un atacante remoto podría explotar esta vulnerabilidad para:

* Ejecutar código arbitrario en el controlador ingress-nginx.
* Acceder a secretos del cluster (tokens, credenciales, certificados).
* Comprometer múltiples servicios expuestos a través del Ingress.
* Escalar el impacto a nivel de cluster Kubernetes completo.

El impacto es **crítico**, especialmente en despliegues donde el controlador tiene acceso amplio a recursos del cluster.

### Mitigaciones recomendadas

* Actualizar ingress-nginx a una versión corregida cuando esté disponible.
* Restringir el acceso de red al Admission Webhook.
* Aplicar políticas de NetworkPolicy estrictas.
* Ejecutar el controlador con permisos mínimos.
* Monitorizar accesos anómalos al webhook de admisión.
* Revisar configuraciones que permitan inyección de rutas internas.

### Referencias

* **Exploit Database:** <https://www.exploit-db.com/exploits/52475>
* **CVE-2025-24514:** <https://nvd.nist.gov/vuln/detail/CVE-2025-24514>
* **CVE-2025-1974:** <https://nvd.nist.gov/vuln/detail/CVE-2025-1974>
* **CVE-2025-1098**: <https://www.cve.org/CVERecord?id=CVE-2025-1098>
* **CVE-2025-1097**: <https://www.cve.org/CVERecord?id=CVE-2025-1097>
* **Ingress-NGINX GitHub:** <https://github.com/kubernetes/ingress-nginx>

{% hint style="danger" %}
Esta PoC ha sido desarrollada únicamente con fines educativos y de investigación. No debe ejecutarse contra sistemas en producción ni sin autorización expresa. Seguir siempre prácticas de *responsible disclosure*.
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://beafn28.gitbook.io/beafn28/cve-and-poc/poc-ingress-nginx-admission-controller-file-descriptor-injection-to-rce-varios-cve-asociados.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
