
Proof-of-concept exploit per CVE-2026-42945, un overflow critico del buffer heap nel modulo rewrite di NGINX che abilita l'esecuzione remota di codice non autenticata. Include script di configurazione e exploit Python per shell popping.
Prova di concetto RCE per CVE-2026-42945, un overflow critico del buffer heap nel ngx_http_rewrite_module di NGINX introdotto nel 2008. Il bug consente esecuzione di codice remoto non autenticato contro server che utilizzano le direttive rewrite e set.
Questa vulnerabilità — insieme ad altri tre problemi di corruzione della memoria (CVE-2026-42946, CVE-2026-40701, CVE-2026-42934) — è stata scoperta autonomamente dal sistema di analisi della sicurezza di depthfirst dopo un singolo click di onboarding del codice sorgente di NGINX.
Il motore di script di NGINX utilizza un processo a due passate: prima calcola la dimensione del buffer necessaria, poi copia i dati. Il flag is_args viene impostato sul motore principale quando una sostituzione di rewrite contiene ?, ma la passata di calcolo della lunghezza viene eseguita su un sotto-motore appena azzerato. Quindi:
is_args = 0 → restituisce la lunghezza grezza della cattura.is_args = 1 → chiama ngx_escape_uri con NGX_ESCAPE_ARGS, espandendo ogni byte escapabile in 3 byte.La copia provoca un overflow del buffer heap sottodimensionato con dati URI controllati dall'attaccante. Lo sfruttamento utilizza il heap feng shui tra richieste per corrompere il puntatore cleanup di un ngx_pool_t adiacente (spruzzato tramite corpi POST, poiché i byte URI non possono contenere byte null), reindirizzandolo verso un falso ngx_pool_cleanup_s che invoca system() alla distruzione del pool.
Leggi di più su questo bug nel nostro https://t.me/p3Nt3st3rsTAr
| Prodotto | Versione affetta | Risolta in |
|---|---|---|
| NGINX Open Source | 0.6.27 – 1.30.0 | 1.31.0, 1.30.1 |
| NGINX Plus | R32 – R36 | R36 P4, R35 P2, R32 P6 |
Avviso completo del fornitore: https://my.f5.com/manage/s/article/K000160932
Testato su Ubuntu 24.04.3 LTS.
./setup.sh — costruisci il container.docker compose -f env/docker-compose.yml up — avvia il server NGINX vulnerabile.python3 poc.py --shell — ottieni una shell.