È stato rilasciato il principale ramo di nginx 1.31.0, all'interno del quale continuano lo sviluppo di nuove funzionalità e il rilascio del ramo stabile supportato contemporaneamente, nginx 1.30.1, al quale vengono apportate solo modifiche relative alla correzione di gravi errori e vulnerabilità. Sono state risolte 6 vulnerabilità nei nostri aggiornamenti, la più pericolosa delle quali consente l'esecuzione remota di codice tramite l'invio di una richiesta HTTP appositamente formattata. Al momento della scrittura della notizia, le correzioni non sono state pubblicate per angie e freenginx.
La vulnerabilità (CVE-2026-42945), classificata come critica, è causata da un overflow del buffer nel modulo ngx_http_rewrite_module, che può essere sfruttato per eseguire codice con i privilegi del processo nginx inviando una richiesta HTTP con un URI appositamente strutturato. Il problema si manifesta nelle configurazioni con la direttiva «rewrite», in cui vengono utilizzate sostituzioni di maschera nelle espressioni regolari tramite variabili non nominate (ad esempio, $1 e $2), a condizione che nella stringa di sostituzione sia presente il carattere «?». Ecco un esempio di costruzione vulnerabile: rewrite ^/users/([0-9]+)/profile/(.*)$ /profile.php?id=$1&tab=$2 last;
Le espressioni con sostituzioni nominate non sono vulnerabili. Ad esempio, la vulnerabilità non colpisce le seguenti costruzioni: rewrite ^/users/(?[0-9]+)/profile/(?
La vulnerabilità è presente a partire dalla versione 0.6.27, rilasciata a marzo 2008. La causa della vulnerabilità è stata che il buffer era allocato sulla base della presunzione che vi sarebbero stati scritti dati non corretti, mentre in realtà venivano copiati dati dopo l'esecuzione dell'escaping dei caratteri speciali, la cui dimensione era maggiore, poiché ogni simbolo «+», «%» e «&» veniva codificato non da un byte, ma da tre. Questa discrepanza si verificava perché, quando nella regola rewrite era presente il simbolo «?», il flag «e->is_args» veniva attivato, il che comportava l'escaping, ma l'allocazione del buffer avveniva con il flag disattivato, per cui l'escaping non veniva applicato.
Altre vulnerabilità:
- CVE-2026-42926 — possibilità di iniezione dei dati dell'attaccante nella richiesta proxy quando si utilizza la direttiva «proxy_set_body» nelle impostazioni e si comunica con il backend tramite HTTP/2 (proxy_http_version=2).
- CVE-2026-40701 — access to freed memory (use-after-free) in the ngx_http_ssl_module module, occurring when processing responses from the DNS server in configurations with the 'ssl_ocsp' directive.
- CVE-2026-42946 — reading from beyond the buffer in the ngx_http_uwsgi_module and ngx_http_scgi_module modules, occurring when processing a specially crafted response. This issue may lead to memory content leakage from the worker process or its crash.
- CVE-2026-42934 — reading from beyond the buffer in the worker process, occurring when processing responses decoded from UTF-8 encoding while using the 'charset_map' directive. This issue may lead to memory content leakage from the worker process or its crash.
- CVE-2026-40460 — vulnerability in the implementation of the HTTP/3 protocol allowing spoofing Indirizzi IP to bypass authorization or restrictions.
Improvements added in the nginx 1.31.0 release:
- Il modulo ngx_http_tunnel_module è stato incluso, consentendo la funzionalità di proxy («forward proxy»), che reindirizza le richieste a un altro server quando un client invia una richiesta utilizzando il metodo HTTP/1.1 CONNECT. È possibile configurare l'autenticazione per l'accesso al proxy utilizzando le direttive «auth_basic», «satisfy» e «auth_delay».
- Nella sezione «upstream» è stata aggiunta la direttiva «least_time», che include un metodo di bilanciamento del carico che trasmette la richiesta server con il minor tempo medio di risposta e il minor numero di connessioni attive.
- Nel modulo «stream_proxy» è stata aggiunta la direttiva «proxy_ssl_alpn» per specificare l'elenco dei protocolli consentiti nell'estensione ALPN durante la connessione al server proxy. Ad esempio: «proxy_ssl_alpn h2 http/1.1».
- È stato garantito il rifiuto delle richieste sui protocolli HTTP/2 e HTTP/3, inclusi gli header «Connection», «Proxy-Connection», «Keep-Alive», «Transfer-Encoding», «Upgrade».
- Nel modulo ngx_http_dav_module è stato garantito il rifiuto delle richieste COPY e MOVE con risorse sorgente e di destinazione duplicate o collezioni annidate.
- Livello di registrazione degli errori SSL «invalid alert», «record layer failure» e «SSL alert number N» sono stati abbassati da «crit» a «info».
- Nello script configure è stato aggiunto il parametro «—without-http_upstream_sticky_module» per disabilitare la costruzione del modulo http_upstream_sticky_module (il parametro «—without-http_upstream_sticky» è stato dichiarato obsoleto).
Aggiornamento: È disponibile un exploit per la vulnerabilità RCE nel ngx_http_rewrite_module.
Fonte: opennet.ru
