È stata presentata la prima release del nuovo ramo principale nginx 1.27.0, che continuerà a sviluppare nuove funzionalità. Allo stesso tempo, è stata rilasciata la versione nginx 1.26.1, relativa al ramo stabile supportato parallelamente, in cui vengono effettuate solo modifiche relative alla correzione di errori gravi e vulnerabilità. L'anno prossimo, sulla base del ramo principale 1.27.x, sarà creato un ramo stabile 1.28. Il codice del progetto è scritto in linguaggio C e distribuito sotto licenza BSD.
Nelle nuove versioni sono state corrette 4 vulnerabilità che riguardano il modulo sperimentale ngx_http_v3 (disattivato per impostazione predefinita), che fornisce supporto per il protocollo HTTP/3, che utilizza il protocollo QUIC come trasporto per HTTP/2. I problemi si manifestano solo quando il modulo ngx_http_v3_module è attivato e l'opzione «quic» è impostata nella direttiva «listen». Non ci sono attualmente informazioni sulla vulnerabilità delle versioni forked di Angie e FreeNginx.
La vulnerabilità CVE-2024-34161 provoca una perdita di contenuto della memoria del processo su sistemi con MTU impostato a un valore superiore a 4096 byte. La perdita di contenuto della memoria si verifica quando vengono inviati pacchetti CRYPTO utilizzati per la negoziazione della connessione, nella fase successiva all'invio da parte del client del messaggio di finalizzazione.
Le vulnerabilità CVE-2024-31079, CVE-2024-32760 e CVE-2024-35200 sono causate da una corruzione della memoria e consentono a un attaccante remoto di provocare un crash del processo nginx tramite l'instaurazione di una sessione appositamente formattata basata sul protocollo QUIC. Per le vulnerabilità CVE-2024-31079 e CVE-2024-32760 non si escludono anche altre conseguenze dell'attacco (possibilità potenziale di esecuzione di codice dell'attaccante?). I dettagli non sono forniti, ma a giudicare dalle patch nel codice, le vulnerabilità sembrano essere causate da un accesso alla memoria già liberata (use-after-free), allocazione errata della memoria per l'array, dereferenziazione di un puntatore nullo e mancanza di adeguati controlli sulla dimensione dei dati inseriti nel buffer.
Tra le modifiche non relative alla correzione delle vulnerabilità in nginx 1.27.0:
- Nelle direttive «proxy_limit_rate», «fastcgi_limit_rate», «scgi_limit_rate» e «uwsgi_limit_rate» è stata aggiunta la supporto per la specifica di variabili.
- Ridotto il consumo di memoria durante l'elaborazione di richieste a lungo termine nelle configurazioni che utilizzano le direttive «gzip», «gunzip», «ssi», «sub_filter» o «grpc_pass».
- Risolti problemi di crash in GCC 14 quando si utilizza l'opzione «—with-atomic».
- Correzioni di errori nell'implementazione di HTTP/3.
Inoltre, si segnala la pubblicazione di un nuovo ramo principale di FreeNginx 1.27.0, un fork di Nginx sviluppato da Maxim Dunin, uno dei principali sviluppatori di Nginx. FreeNginx si propone come un progetto non commerciale, garantendo lo sviluppo della base di codice Nginx senza interferenze aziendali. Nella nuova versione è stata migliorata la gestione degli errori durante la lettura del corpo della richiesta, è stata ottimizzata la compilazione in NetBSD 10.0 e migliorata la registrazione dei file PID (nella direttiva «pid» è stato aggiunto il parametro «off»).
Fonte: opennet.ru
