
Guía detallada: Inyección de configuración en ingress-nginx mediante la anotación rewrite-target
Palabras clave: CVE-2026-3288, vulnerabilidad ingress-nginx, seguridad en Kubernetes, inyección de configuración nginx, anotación rewrite-target, RCE, divulgación de Secretos, CWE-20, CAPEC-176, ingress-nginx CVE 2026, compromiso de clúster Kubernetes
Se descubrió un problema de seguridad en ingress-nginx donde la anotación de Ingress nginx.ingress.kubernetes.io/rewrite-target puede usarse para inyectar configuración en nginx. Esto puede llevar a la ejecución de código arbitrario en el contexto del controlador ingress-nginx y a la divulgación de Secretos accesibles para el controlador. (Nótese que en la instalación predeterminada, el controlador puede acceder a todos los Secretos de todo el clúster.)
Descubierto por: Kai Aizen
Publicado: 9 de marzo de 2026
Puntuación CVSS: 8.8 (Alta)
CWE: CWE-20 — Validación de entrada inadecuada
CAPEC: CAPEC-176 — Manipulación de configuración/entorno
Componente: ingress-nginx
Tipo de ataque: Inyección de configuración nginx mediante anotación de Ingress
Privilegios requeridos: Bajos (PR:L)
La anotación de Ingress nginx.ingress.kubernetes.io/rewrite-target está destinada a modificar la ruta de la solicitud antes de que se reenvíe a los servicios upstream. Sin embargo, la implementación permite inyectar directivas de configuración arbitrarias directamente en la configuración subyacente de nginx.
Un atacante con la capacidad de crear o modificar recursos de Ingress puede aprovechar esto para:
| Área de Impacto | Gravedad |
|---|---|
| Confidencialidad | Alta — Divulgación completa de Secretos (en todo el clúster en la config. predeterminada) |
| Integridad | Alta — Ejecución de código arbitrario en el contexto del controlador |
| Disponibilidad | Alta — Compromiso total del controlador ingress-nginx |
El problema central es que ingress-nginx procesa el valor de la anotación rewrite-target sin una validación de entrada suficiente, permitiendo que contenido controlado por el atacante se escriba directamente en la configuración de nginx. Se trata de una vulnerabilidad de inyección de configuración: el valor de la anotación se confía como una ruta de reescritura simple, pero puede contener directivas arbitrarias de nginx.
La vulnerabilidad es alcanzable por cualquier usuario con permisos para crear o modificar recursos de Ingress en un clúster que ejecute ingress-nginx. El ataque requiere:
Esta vulnerabilidad pertenece a una clase bien establecida de bugs de inyección en anotaciones de ingress-nginx:
El patrón recurrente: los valores de las anotaciones fluyen a la configuración de nginx sin una saneamiento adecuado. Diferentes anotaciones, misma causa raíz.
| Rama | Vulnerable | Corregida |
|---|---|---|
| 1.13.x | < 1.13.8 | 1.13.8 |
| 1.14.x | < 1.14.4 |
# Verifica si ingress-nginx está instalado
kubectl get pods --all-namespaces --selector app.kubernetes.io/name=ingress-nginx
# Verifica la versión de ingress-nginx
kubectl exec -n ingress-nginx \
$(kubectl get pods -n ingress-nginx -l app.kubernetes.io/name=ingress-nginx -o jsonpath='{.items[0].metadata.name}') \
-- /nginx-ingress-controller --version
Si no tienes ingress-nginx instalado en tu clúster, no estás afectado.
Actualiza ingress-nginx a la versión corregida para tu rama:
# Usando Helm
helm upgrade ingress-nginx ingress-nginx/ingress-nginx \
--namespace ingress-nginx \
--version <patched-chart-version>
Consulta la documentación oficial de actualización: Actualizando Ingress-nginx
Utiliza control de admisión para bloquear el uso de la anotación rewrite-target hasta que puedas actualizar:
apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingWebhookConfiguration
metadata:
name: block-rewrite-target
webhooks:
- name: block-rewrite-target.security.local
rules:
- apiGroups: ["networking.k8s.io"]
apiVersions: ["v1"]
operations: ["CREATE", "UPDATE"]
resources: ["ingresses"]
clientConfig:
# Apunta a un servicio webhook que rechace los recursos Ingress
# que contengan la anotación rewrite-target
Los datos sospechosos dentro del campo rules.http.paths.path de un recurso Ingress podrían indicar un intento de explotar esta vulnerabilidad.
# Verifica anotaciones sospechosas en Ingress
kubectl get ingress --all-namespaces -o json | \
jq '.items[] | select(.metadata.annotations["nginx.ingress.kubernetes.io/rewrite-target"] != null) | {namespace: .metadata.namespace, name: .metadata.name, rewrite: .metadata.annotations["nginx.ingress.kubernetes.io/rewrite-target"]}'
Si encuentras evidencia de que esta vulnerabilidad ha sido explotada, contacta a [email protected].
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
| Fecha | Evento |
|---|---|
| — | Vulnerabilidad descubierta y reportada al Comité de Respuesta de Seguridad de Kubernetes |
| 9 de marzo de 2026 | Aviso de seguridad publicado |
| 9 de marzo de 2026 | Versiones corregidas publicadas (1.13.8, 1.14.4, 1.15.0) |
| 9 de marzo de 2026 | Asignado CVE-2026-3288 |
Investigador: Kai Aizen — SnailSploit
Agradecimiento: Tabitha Sable en nombre del Comité de Respuesta de Seguridad de Kubernetes
Esta información se proporciona únicamente con fines de investigación de seguridad y defensa. Cualquier explotación de esta vulnerabilidad con fines maliciosos es ilegal y poco ética. Siempre obtén la autorización adecuada antes de probar sistemas que no te pertenecen.
Para preguntas o información adicional sobre esta vulnerabilidad:
Última actualización: 10 de marzo de 2026
El artículo completo, la metodología y la investigación relacionada de este proyecto se encuentran en:
https://snailsploit.com/security-research/cves/cve-2026-3288/
Creado por Kai Aizen — investigador independiente de seguridad ofensiva.
snailsploit.com · Investigación · Frameworks · GitHub · LinkedIn · ResearchGate · X/Twitter
Mismo ataque. Sustrato diferente.
| CVE | Año | Anotación | Impacto |
|---|
| CVE-2021-25746 | 2022 | Varias anotaciones | Inyección de directivas |
| CVE-2023-5044 | 2023 | permanent-redirect | Inyección de código |
| CVE-2024-7646 | 2024 | Bypass de validación de anotaciones | Bypass de validación |
| CVE-2026-3288 | 2026 | rewrite-target | RCE + divulgación de Secretos |
| 1.15.x | < 1.15.0 | 1.15.0 |
| Métrica | Valor |
|---|
| Vector de Ataque | Red (AV:N) |
| Complejidad de Ataque | Baja (AC:L) |
| Privilegios Requeridos | Bajos (PR:L) |
| Interacción del Usuario | Ninguna (UI:N) |
| Alcance | Sin cambio (S:U) |
| Confidencialidad | Alta (C:H) |
| Integridad | Alta (I:H) |
| Disponibilidad | Alta (A:H) |