
🛡️ Script para probar NGINX CVE-2026-42945
Las organizaciones que ejecutan NGINX Open Source, NGINX Plus o ingress/controladores basados en NGINX deberían verificar si están afectadas por CVE-2026-42945 y aplicar el parche o reconfigurar antes de que los intentos de explotación lleguen a los bordes de producción.
Este repositorio proporciona un escáner de solo lectura, no explotable, para uso defensivo autorizado en sistemas que usted posee o tiene permiso de probar.
| Elemento | Detalle |
|---|
| CVE | CVE-2026-42945 |
| Nombre | NGINX Rift |
| Componente | ngx_http_rewrite_module (desbordamiento de búfer en el heap) |
| Versiones afectadas | NGINX Open Source 0.6.27 hasta 1.30.0 |
| Versiones corregidas | 1.30.1, 1.31.0 (+ backports del proveedor) |
| CVSS | 9.2 (Crítico) |
La explotación requiere una configuración de rewrite específica:
rewrite que utilice una captura PCRE sin nombre ($1, $2, …) en el reemplazo?rewrite, if, o set en el mismo ámbito server/location utiliza esa capturaImpacto:
| Comprobación | Método |
|---|---|
| Versión | nginx -v local o cabecera Server pasiva |
| Desencadenante de configuración | Análisis heurístico de nginx -T o de un archivo de configuración |
| ASLR (Linux) | /proc/sys/kernel/randomize_va_space |
| Orientación | Pasos de remediación priorizados |
No envía solicitudes de explotación elaboradas ni intenta provocar la caída de los workers.
cd nginx-cve-2026-42945
chmod +x scan_nginx_rift.py
# Mejor: ejecutar en cada host NGINX con sudo
sudo python3 scan_nginx_rift.py --local
# O escanear un volcado de configuración completo
sudo nginx -T 2>&1 | tee /tmp/nginx-full.txt
python3 scan_nginx_rift.py --local --config /tmp/nginx-full.txt
# Comprobación pasiva de banner remoto (solo versión)
python3 scan_nginx_rift.py --url https://your-site.example/
# JSON para automatización
python3 scan_nginx_rift.py --local --json --fail-on high
Código de salida 1 cuando el riesgo es ALTO o CRÍTICO (use --fail-on para ajustar los umbrales de CI).
| Riesgo | Significado |
|---|---|
| CRÍTICO | Versión vulnerable + patrón de rewrite que coincide con el desencadenante conocido |
| ALTO | Versión vulnerable y rewrites sospechosos, o versión desconocida con posible desencadenante |
| MEDIO | Versión vulnerable, sin desencadenante encontrado en la configuración escaneada (aun así, aplicar parche) |
| BAJO | Versión parcheada pero persisten patrones de rewrite de riesgo |
| INFO | Parcheado y sin patrones de desencadenante en la configuración escaneada |
Actualice a NGINX 1.30.1 / 1.31.0+ o al paquete de seguridad de su OS/proveedor.
Reinicie los workers después de la actualización (systemctl restart nginx), no solo reload.
Audite la configuración completa: sudo nginx -T y busque reglas de rewrite con $1/$2 y ?.
Mitigación temporal: use capturas con nombre en lugar de $1, $2:
# Patrón vulnerable (simplificado)
rewrite ^/api/(.*)$ /internal?migrated=true;
set $original_path $1;
# Patrón más seguro
rewrite ^/api/(?<path>.*)$ /internal?migrated=true;
set $original_path $path;
Confirme que ASLR permanece habilitado en Linux (randomize_va_space=2).
Revise los ingress de Kubernetes, los Helm charts y las configuraciones generadas — no solo /etc/nginx/nginx.conf.
Utilícelo únicamente en infraestructura que esté autorizado a evaluar. El escaneo no autorizado puede violar políticas o leyes.