
CVE-2026-42945 Strumento di scansione e verifica della vulnerabilità di heap overflow di NGINX
NGINX Rift è uno strumento open source di scansione e verifica per CVE-2026-42945 e CVE-2026-9256 (vulnerabilità di heap overflow nel modulo ngx_http_rewrite_module di NGINX). Supporta la scansione remota tramite fingerprinting di rete e l'audit approfondito della configurazione locale, aiutando i team di sicurezza a identificare rapidamente i rischi potenziali negli ambienti NGINX.
| Attributo | Dettagli |
|---|---|
| ID CVE | CVE-2026-9256 |
| Tipo di vulnerabilità | Heap buffer overflow (CWE-122) |
| Componente interessato | NGINX ngx_http_rewrite_module |
| Versioni interessate | NGINX open source 0.1.17 ~ 1.31.0 (mainline) / 0.1.17 ~ 1.30.1 (stable) |
| Versioni corrette | NGINX 1.31.1 (mainline) / 1.30.2 (stable), pubblicate il 2026-05-22 |
| Livello di gravità | Alto — può causare denial of service (DoS) e, con ASLR disattivato, esecuzione remota di codice (RCE) |
Condizione di attivazione: la direttiva rewrite utilizza espressioni regolari PCRE con catture sovrapposte e la stringa di sostituzione fa riferimento a più gruppi di cattura non nominati.
| Attributo | Dettagli |
|---|---|
| ID CVE | CVE-2026-42945 |
| Tipo di vulnerabilità | Heap overflow |
| Componente interessato | NGINX ngx_http_rewrite_module |
| Versioni interessate | NGINX open source 0.6.27 ~ 1.30.0 / NGINX Plus R32 ~ R36 |
| Versioni corrette | NGINX 1.30.1 (stable) / 1.31.0 (mainline) / NGINX Plus R32 P6+ |
| Livello di gravità | Alto — può causare denial of service (DoS) ed esecuzione remota di codice (RCE) |
Condizione di attivazione: l'URL di sostituzione della direttiva rewrite contiene sia ? sia riferimenti a gruppi di cattura non nominati (ad es. $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 per verificare se la distribuzione ha corretto la vulnerabilità tramite backportrewrite-target nelle risorse Kubernetes IngressScarica il binario per la tua piattaforma dalla pagina 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 un URL per riga, ad esempio:
http://target1.com
https://target2.com
target3.com
# 自动查找默认 NGINX 配置路径
./nginx_rift_scanner verify
# 指定配置文件路径
./nginx_rift_scanner verify -p /etc/nginx/nginx.conf
La modalità Verify esegue un audit in tre fasi:
nginx -v per ottenere la versione e controlla le patch di backport del gestore pacchetti del sistemainclude) e identifica le regole rewrite pericolosekubectl, esegue automaticamente la scansione di tutte le risorse Ingress nel cluster| Priorità | Soluzione | Descrizione |
|---|---|---|
| P0 | Aggiornare NGINX | Aggiornare a 1.30.2+ (stable) / 1.31.1+ (mainline) / ultima versione di sicurezza di NGINX Plus |
| P0 | Aggiornamento tramite gestore pacchetti | apt-get upgrade nginx oppure yum update nginx |
| P1 | Mitigazione urgente tramite configurazione | Sostituire $1, $2, ecc. nelle direttive rewrite con gruppi di cattura nominati $name, senza tempi di fermo |
| P2 | Correzione K8s Ingress | Aggiornare l'Ingress Controller e modificare l'annotazione rewrite-target |
| P3 | Difesa in profondità | Configurare server_tokens off; per nascondere il fingerprint della versione |
NGINX-Rift/
├── nginx_rift_scanner.go # 主程序源码
├── build.sh # 全平台交叉编译脚本
├── go.mod # Go 模块定义
└── README.md
net/http per inviare richieste HTTP e analizzare l'intestazione di risposta Servernginx/X.Y.Z) e di quella commerciale (NGINX Plus RXX)include e usando una mappa visited per prevenire riferimenti ciclici? + $N (CVE-2026-42945) e più riferimenti $N (CVE-2026-9256)kubectl get ingress --all-namespaces -o yamldpkg-query/rpm --changelog per rilevare le patch di backport a livello di sistema (cercando entrambi gli ID CVE)CGO_ENABLED=0) per produrre un binario autonomo senza dipendenze CMIT License
Contributo della community di sicurezza.