
Exploit de prueba de concepto para CVE-2026-42945, un desbordamiento de búfer en el montón en las directivas `rewrite`/`set` de NGINX, que permite DoS y posible RCE mediante solicitudes manipuladas.
CVE-2026-42945 es una vulnerabilidad grave de desbordamiento de búfer en el montón en el servidor NGINX, conocida como "NGINX Rift". La vulnerabilidad reside en la lógica de procesamiento de las directivas rewrite y set de NGINX. Cuando se cumplen condiciones de configuración específicas, un atacante puede provocar un desbordamiento del montón mediante una solicitud maliciosa, lo que conduce a una denegación de servicio (DoS) e incluso a una posible ejecución remota de código (RCE).
Tipo de vulnerabilidad: Desbordamiento de búfer en el montón Nivel de riesgo: Alto ID CVE: CVE-2026-42945
Se recomienda actualizar inmediatamente a una de las siguientes versiones:
La vulnerabilidad se activa cuando se cumplen simultáneamente las dos condiciones siguientes:
Condición de configuración: La configuración de NGINX utiliza al mismo tiempo:
rewrite (con la cadena de reemplazo que contiene el carácter ?)set (que referencia grupos de captura de la expresión regular de rewrite, como $1, $2)Condición de solicitud: La URI de la solicitud contiene caracteres escapables (por ejemplo, +, &, %, etc.)
Explicación del principio:
rewrite establece e->is_args = 1 (nunca se reinicia)set utiliza un submotor con todos los valores a cero (le.is_args = 0)%25 como %, pero ngx_escape_uri lo vuelve a codificar como %25 (3 bytes)%25 se expande de 1 byte a 3 bytes, provocando una escritura fuera de los límites del búfer# Usar el script de prueba del proyecto
python3 CVE-2026-42945/CVE-2026-42945-test.py --host cve.test.com --port 80
%25 para una prueba a pequeña escala%25 (por ejemplo, 2000) para provocar el desbordamiento del búferEn una configuración de NGINX de una sola capa, las pruebas desencadenan la vulnerabilidad:
Análisis del registro de bloqueo:
ngx_http_script_flush_no_cacheable_variablesngx_http_core_rewrite_phaseEn una configuración de NGINX de dos capas (capa1 de reenvío + capa2 de negocio), los resultados de la prueba son los siguientes:
| Escenario de configuración | Resultado en capa1 | Resultado en capa2 | Análisis de causa |
|---|---|---|---|
rewrite sin break + proxy_pass | ❌ Vulnerabilidad activada (404) | ❌ No llega ninguna solicitud | Tras rewrite, se ejecuta set y provoca desbordamiento del montón; el worker se bloquea |
rewrite con break + proxy_pass | ✅ Normal (200) | ⚠️ Posible activación de la vulnerabilidad | break detiene la ejecución de set; la solicitud se reenvía normalmente al backend |
| Archivo | Descripción |
|---|---|
CVE-2026-42945/CVE-2026-42945-test.py | Script PoC de prueba de vulnerabilidad, utilizado para verificar si el objetivo es vulnerable |
single_layer_test/single_layer_nginx.conf | Ejemplo de configuración de NGINX vulnerable en arquitectura de una sola capa |
single_layer_test/image.png | Diagrama explicativo del principio de la vulnerabilidad |
single_layer_test/test.log | Archivo de registro de prueba |
double_layer_test/layer1_nginx.conf | Configuración de NGINX de la primera capa (capa de reenvío) en arquitectura de dos capas |
double_layer_test/layer2_nginx.conf | Configuración de NGINX de la segunda capa (capa de negocio) en arquitectura de dos capas |
Este proyecto se proporciona únicamente con fines de investigación y educación en seguridad. Los usuarios deben cumplir con las leyes y regulaciones de su país o región. El autor no se hace responsable de ningún uso no autorizado o malintencionado.
¡Prohibido su uso para ataques ilegales!
Última actualización: 2026-05-19