PoC - Ingress-NGINX Admission Controller File Descriptor Injection to RCE (Varios CVE asociados)
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
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.
Last updated