È stata rilasciata la versione principale di nginx 1.27.4, durante la quale continua lo sviluppo di nuove funzionalità, e viene rilasciata parallelamente la versione stabile di nginx 1.26.3, che riceve solo aggiornamenti legati alla correzione di gravi bug e vulnerabilità. Nelle aggiornamenti è stata corretta una vulnerabilità (CVE-2025-23419) che consentiva di eludere il controllo dei certificati TLS client.
La vulnerabilità è causata dalla mancanza di controlli adeguati durante l'elaborazione degli host virtuali legati a un unico indirizzo IP e numero di porta, selezionati durante l'accesso tramite HTTPS in base al nome di dominio specificato tramite l'estensione SNI di TLS. In tali configurazioni, un attaccante poteva riutilizzare la sessione TLS nel contesto di un altro host virtuale per eludere l'autenticazione tramite il certificato TLS del client. Il problema si manifesta in configurazioni che supportano il ripristino delle sessioni TLS tramite "TLS session ticket" o utilizzano la cache delle sessioni TLS nelle impostazioni. server di default, che utilizza l'autenticazione tramite certificati TLS del client. La vulnerabilità è presente a partire dal rilascio di nginx 1.11.4 quando compilato con OpenSSL e con il protocollo TLSv1.3 abilitato.
Modifiche non relative alla sicurezza:
- Sono state aggiunte funzionalità per ridurre il consumo di risorse e diminuire il carico sulla CPU durante l'uso di TLS in configurazioni con un numero elevato di blocchi server e location. Le modifiche introdotte permettono di utilizzare un contesto SSL esistente dal blocco padre, invece di creare un contesto SSL separato per ciascun blocco di configurazione (SSL_CTX in OpenSSL).
- Risolti i problemi di lungo caricamento dei file di configurazione a causa della riconfigurazione dello stesso insieme certificati TLS., di chiavi e di elenchi di autorità di certificazione. Accelera il riavvio della configurazione riutilizzando oggetti TLS invariati, come certificati, chiavi e CRL. Per disabilitare l'ereditarietà degli oggetti durante l'aggiornamento della configurazione è stata aggiunta la direttiva «ssl_object_cache_inheritable».
- È stata aggiunta la cache per i certificati e le chiavi caricati utilizzando variabili nelle direttive (ad esempio, «ssl_certificate /etc/ssl/$ssl_server_name.crt»). Sono state aggiunte le direttive «ssl_certificate_cache», «proxy_ssl_certificate_cache», «grpc_ssl_certificate_cache» e «uwsgi_ssl_certificate_cache» per gestire la cache. Attraverso queste direttive è possibile configurare la dimensione massima della cache, il tempo di validità delle voci e il tempo di pulizia delle voci non utilizzate. Ad esempio: «ssl_certificate_cache max=1000 inactive=20s valid=1m;».
- È stata aggiunta la direttiva «keepalive_min_timeout», che definisce il timeout durante il quale nginx non chiuderà la connessione keep-alive con il client.
- Risolto il problema della comparsa nei log del messaggio «gzip filter failed to use preallocated memory» quando compilato con la libreria zlib-ng.
- Risolto il problema con la compilazione della libreria libatomic, utilizzando l'opzione di compilazione «—with-libatomic=DIR»
- Corretto un errore che impediva l'instaurazione di una connessione tramite protocollo QUIC utilizzando 0-RTT.
- Garantito il disinteresse per le richieste di negoziazione delle versioni QUIC provenienti dai client.
- Risolti i problemi di compilazione in Solaris 10 con il modulo ngx_http_v3_module.
- Correzioni di errori nell'implementazione di HTTP/3.
Fonte: opennet.ru
