
🛡️ Script per testare NGINX CVE-2026-42945
Le organizzazioni che eseguono NGINX Open Source, NGINX Plus o ingress/controller basati su NGINX dovrebbero verificare se sono interessate da CVE-2026-42945 e applicare la patch o riconfigurare prima che i tentativi di sfruttamento raggiungano i frontend di produzione.
Questo repository fornisce uno scanner sola lettura, non exploit per un uso difensivo autorizzato su sistemi di tua proprietà o su cui sei autorizzato a effettuare test.
| Voce | Dettaglio |
|---|
| CVE | CVE-2026-42945 |
| Nome | NGINX Rift |
| Componente | ngx_http_rewrite_module (heap buffer overflow) |
| Versioni interessate | NGINX Open Source dalla 0.6.27 alla 1.30.0 |
| Versioni corrette | 1.30.1, 1.31.0 (+ backport dei vendor) |
| CVSS | 9.2 (Critico) |
Lo sfruttamento richiede una specifica configurazione rewrite:
rewrite che utilizza una cattura PCRE senza nome ($1, $2, …) nella sostituzione?rewrite, if o set nello stesso scope server/location utilizza quella catturaImpatto:
| Controllo | Metodo |
|---|---|
| Versione | nginx -v locale o header Server passivo |
| Trigger di configurazione | Parsing euristico di nginx -T o di un file di configurazione |
| ASLR (Linux) | /proc/sys/kernel/randomize_va_space |
| Indicazioni | Passaggi di remediation in ordine di priorità |
Non invia richieste exploit appositamente realizzate né tenta di mandare in crash i worker.
cd nginx-cve-2026-42945
chmod +x scan_nginx_rift.py
# Best: run on each NGINX host with sudo
sudo python3 scan_nginx_rift.py --local
# Or scan a full config dump
sudo nginx -T 2>&1 | tee /tmp/nginx-full.txt
python3 scan_nginx_rift.py --local --config /tmp/nginx-full.txt
# Passive remote banner check (version only)
python3 scan_nginx_rift.py --url https://your-site.example/
# JSON for automation
python3 scan_nginx_rift.py --local --json --fail-on high
Codice di uscita 1 quando il rischio è CRITICO o ALTO (usa --fail-on per regolare le soglie CI).
| Rischio | Significato |
|---|---|
| CRITICO | Versione vulnerabile + pattern rewrite corrispondente al trigger noto |
| ALTO | Versione vulnerabile e rewrite sospette, oppure versione sconosciuta con trigger probabile |
| MEDIO | Versione vulnerabile, nessun trigger trovato nella configurazione scansionata (applicare comunque la patch) |
| BASSO | Versione con patch ma restano pattern rewrite rischiosi |
| INFO | Patch applicata e nessun pattern di trigger nella configurazione scansionata |
Aggiorna a NGINX 1.30.1 / 1.31.0+ o al pacchetto di sicurezza del tuo OS/vendor.
Riavvia i worker dopo l'aggiornamento (systemctl restart nginx), non solo reload.
Esegui un audit dell'intera configurazione: sudo nginx -T e cerca regole rewrite con $1/$2 e ?.
Mitigazione temporanea: usa catture con nome invece di $1, $2:
# Vulnerable pattern (simplified)
rewrite ^/api/(.*)$ /internal?migrated=true;
set $original_path $1;
# Safer pattern
rewrite ^/api/(?<path>.*)$ /internal?migrated=true;
set $original_path $path;
Conferma che ASLR resti abilitato su Linux (randomize_va_space=2).
Controlla anche Kubernetes ingress, i chart Helm e le configurazioni generate — non solo /etc/nginx/nginx.conf.
Utilizza solo su infrastrutture che sei autorizzato a valutare. La scansione non autorizzata può violare policy o leggi.