
CVE-2026-42945 Herramienta de escaneo y verificación de la vulnerabilidad de desbordamiento de montón (heap overflow) de NGINX
NGINX Rift es una herramienta de código abierto de escaneo y verificación para CVE-2026-42945 y CVE-2026-9256 (vulnerabilidades de desbordamiento de montón en el módulo ngx_http_rewrite_module de NGINX). Admite escaneo remoto de huellas digitales de red y auditoría local profunda de configuración, lo que ayuda a los equipos de seguridad a localizar rápidamente riesgos potenciales en entornos NGINX.
| Atributo | Detalle |
|---|---|
| ID CVE | CVE-2026-9256 |
| Tipo de vulnerabilidad | Desbordamiento de búfer en el montón (Heap-based Buffer Overflow, CWE-122) |
| Componente afectado | Módulo ngx_http_rewrite_module de NGINX |
| Versiones afectadas | NGINX de código abierto 0.1.17 ~ 1.31.0 (mainline) / 0.1.17 ~ 1.30.1 (stable) |
| Versiones corregidas | NGINX 1.31.1 (mainline) / 1.30.2 (stable), publicadas el 22 de mayo de 2026 |
| Nivel de gravedad | Alto: puede provocar denegación de servicio (DoS) y, con ASLR desactivado, ejecución remota de código (RCE) |
Condiciones de disparo: la directiva rewrite utiliza una expresión regular PCRE con capturas superpuestas y la cadena de reemplazo hace referencia a múltiples grupos de captura sin nombre.
| Atributo | Detalle |
|---|---|
| ID CVE | CVE-2026-42945 |
| Tipo de vulnerabilidad | Desbordamiento de montón (Heap Overflow) |
| Componente afectado | Módulo ngx_http_rewrite_module de NGINX |
| Versiones afectadas | NGINX de código abierto 0.6.27 ~ 1.30.0 / NGINX Plus R32 ~ R36 |
| Versiones corregidas | NGINX 1.30.1 (stable) / 1.31.0 (mainline) / NGINX Plus R32 P6+ |
| Nivel de gravedad | Alto: puede provocar denegación de servicio (DoS) y ejecución remota de código (RCE) |
Condiciones de disparo: la URL de reemplazo de la directiva rewrite contiene tanto ? como referencias a grupos de captura sin nombre (por ejemplo, $1).
# CVE-2026-42945 触发配置: ? + $1
rewrite ^/api/(.*)$ /internal?id=$1 last;
# CVE-2026-9256 触发配置: 多个 $N 捕获引用
rewrite ^/(\w+)/(\d+)$ /$2/$1 last;
# 安全配置 (使用命名捕获组)
rewrite ^/api/(?<myid>.*)$ /internal?id=$myid last;
dpkg/rpm para detectar si la distribución ya ha corregido la vulnerabilidad mediante un backportrewrite-target en recursos Ingress de KubernetesDescargue el binario correspondiente a su plataforma desde la página de Releases.
git clone https://github.com/nu0l/NGINX-Rift.git
cd NGINX-Rift
# 单平台编译
go build -o nginx_rift_scanner nginx_rift_scanner.go
# 全平台交叉编译
chmod +x build.sh && ./build.sh
./nginx_rift_scanner -h
# 扫描单个目标
./nginx_rift_scanner scan -u http://example.com
# 批量扫描(从文件读取 URL 列表)
./nginx_rift_scanner scan -f url.txt
url.txt contiene una URL por línea, por ejemplo:
http://target1.com
https://target2.com
target3.com
# 自动查找默认 NGINX 配置路径
./nginx_rift_scanner verify
# 指定配置文件路径
./nginx_rift_scanner verify -p /etc/nginx/nginx.conf
El modo Verify realiza una auditoría en tres pasos:
nginx -v para obtener la versión y comprueba los parches backport del gestor de paquetes del SOinclude) e identifica reglas rewrite peligrosaskubectl, escanea automáticamente todos los recursos Ingress del clúster| Prioridad | Solución | Descripción |
|---|---|---|
| P0 | Actualizar NGINX | Actualice a 1.30.2+ (stable) / 1.31.1+ (mainline) / la última versión de seguridad de NGINX Plus |
| P0 | Actualización mediante el gestor de paquetes del SO | apt-get upgrade nginx o yum update nginx |
| P1 | Mitigación de emergencia de configuración | Cambie $1, $2, etc. en las reglas rewrite por grupos de captura con nombre $name, sin tiempo de inactividad |
| P2 | Corrección de Ingress de K8s | Actualice el Ingress Controller y modifique la anotación rewrite-target |
| P3 | Defensa en profundidad | Configure server_tokens off; para ocultar la huella de la versión |
NGINX-Rift/
├── nginx_rift_scanner.go # 主程序源码
├── build.sh # 全平台交叉编译脚本
├── go.mod # Go 模块定义
└── README.md
net/http de Go para enviar solicitudes HTTP y analizar el encabezado de respuesta Servernginx/X.Y.Z) y de la edición comercial (NGINX Plus RXX)include y utiliza un mapa visited para evitar referencias circulares? + $N (CVE-2026-42945) y múltiples referencias $N (CVE-2026-9256)kubectl get ingress --all-namespaces -o yamldpkg-query/rpm --changelog para detectar parches backport a nivel de SO (buscando ambos ID CVE)CGO_ENABLED=0) que genera un binario independiente sin dependencias de CMIT License
Contribuido por la comunidad de seguridad.