
Exploit proof-of-concept per CVE-2026-42945, un heap buffer overflow nelle direttive rewrite/set di NGINX, che consente DoS e potenziale RCE tramite richieste appositamente create.
CVE-2026-42945 è una grave vulnerabilità di overflow del buffer heap nel server NGINX, conosciuta come "NGINX Rift". La vulnerabilità risiede nella logica di elaborazione delle direttive rewrite e set di NGINX; quando vengono soddisfatte specifiche condizioni di configurazione, un attaccante può innescare un overflow dell'heap inviando una richiesta malintenzionata, causando denial of service (DoS) e potenzialmente esecuzione remota di codice (RCE).
Tipo di vulnerabilità: Overflow del buffer heap
Livello di rischio: Alto
ID CVE: CVE-2026-42945
Si consiglia di aggiornare immediatamente a una delle seguenti versioni:
Per attivare la vulnerabilità devono essere soddisfatte contemporaneamente le seguenti due condizioni:
Condizione di configurazione: nella configurazione di NGINX vengono utilizzate contemporaneamente:
rewrite (la stringa di sostituzione contiene il carattere ?)set (riferita ai gruppi di cattura regex di rewrite, come $1, $2)Condizione della richiesta: l'URI della richiesta contiene caratteri che possono essere escaped (ad esempio +, &, %, ecc.)
Spiegazione del principio:
rewrite imposta e->is_args = 1 (mai resettato)set utilizza un sotto-motore tutto zero (le.is_args = 0)%25 in %, ma ngx_escape_uri lo ri-codifica in %25 (3 byte)%25 viene espanso da 1 byte a 3 byte, causando una scrittura oltre i limiti del bufferpython3 CVE-2026-42945/CVE-2026-42945-test.py --host cve.test.com --port 80
%25 per un test su piccola scala%25 (ad esempio 2000) per innescare l'overflow del bufferIn una configurazione NGINX a singolo livello il test innesca la vulnerabilità:
Analisi del log di crash:
ngx_http_script_flush_no_cacheable_variablesngx_http_core_rewrite_phaseIn una configurazione NGINX a doppio livello (layer1 di forwarding + layer2 di servizio) i risultati del test sono i seguenti:
Questo progetto è destinato esclusivamente a scopi di ricerca sulla sicurezza e didattici. Gli utenti devono rispettare le leggi e i regolamenti del proprio paese o regione. L'autore non si assume alcuna responsabilità per eventuali abusi non autorizzati.
Vietato l'uso per attacchi illegali!
Ultimo aggiornamento: 2026-05-19
| Scenario di configurazione | Risultato layer1 | Risultato layer2 | Analisi della causa |
|---|
rewrite senza break + proxy_pass | ❌ Vulnerabilità attivata (404) | ❌ Nessuna richiesta raggiunge | Dopo rewrite, set viene eseguito, innescando overflow heap, il worker crasha |
rewrite con break + proxy_pass | ✅ Normale (200) | ⚠️ Possibile attivazione vulnerabilità | break termina l'esecuzione di set, la richiesta viene inoltrata normalmente al backend |
| File | Descrizione |
|---|
CVE-2026-42945/CVE-2026-42945-test.py | Script PoC di test della vulnerabilità, utilizzato per verificare se il target è vulnerabile |
single_layer_test/single_layer_nginx.conf | Esempio di configurazione NGINX vulnerabile per architettura a singolo livello |
single_layer_test/image.png | Diagramma del principio della vulnerabilità |
single_layer_test/test.log | File di log del test |
double_layer_test/layer1_nginx.conf | Configurazione NGINX del primo livello (livello di forwarding) per architettura a doppio livello |
double_layer_test/layer2_nginx.conf | Configurazione NGINX del secondo livello (livello di servizio) per architettura a doppio livello |