La version principale de nginx 1.27.4 a été publiée, dans laquelle de nouvelles fonctionnalités continuent d'être développées, ainsi que la version stable parallèle nginx 1.26.3, qui ne reçoit que des modifications liées à la correction de bogues critiques et de vulnérabilités. La mise à jour corrige une vulnérabilité (CVE-2025-23419) permettant de contourner la vérification des certificats TLS clients.
La vulnérabilité est due à un manque de vérifications appropriées lors du traitement des hôtes virtuels liés à une seule adresse IP et à un numéro de port, choisis lors de l'accès via HTTPS en fonction du nom de domaine spécifié à l'aide de l'extension TLS SNI. Dans de telles configurations, un attaquant pouvait réutiliser une session TLS dans le contexte d'un autre hôte virtuel pour contourner l'authentification par certificat TLS client. Le problème se manifeste dans les configurations prenant en charge la reprise des sessions TLS à l'aide de « TLS session ticket » ou utilisant un cache des sessions TLS dans les paramètres par défaut, dans lequel l'authentification par certificats TLS clients est utilisée. La vulnérabilité est présente depuis la version nginx 1.11.4 lors de la compilation avec OpenSSL et l'activation du protocole TLSv1.3. de serveurs Des capacités ont été ajoutées pour réduire la consommation de ressources et diminuer la charge sur le processeur lors de l'utilisation de TLS dans des configurations comportant un grand nombre de blocs server et location. Les modifications ajoutées permettent de ne pas créer un contexte SSL distinct (SSL_CTX dans OpenSSL) pour chaque bloc de configuration, mais d'utiliser le contexte SSL existant du bloc parent.
Modifications non liées à la sécurité :
- Des problèmes liés au long chargement des fichiers de configuration à cause du réexamen de la même série de clés et de listes d'autorités de certification ont été résolus. Le redémarrage de la configuration a été accéléré grâce à la réutilisation des objets TLS non modifiés, tels que les certificats, les clés et les CRL. Pour désactiver l'héritage des objets lors de la mise à jour de la configuration, une nouvelle directive « ssl_object_cache_inheritable » a été ajoutée.
- La gestion des objets TLS est désormais davantage optimisée, permettant une utilisation plus efficace de la mémoire et une réduction des temps de réponse. des certificats TLSCette amélioration est particulièrement bénéfique dans des environnements à fort trafic où chaque milliseconde compte.
- Un cache a été ajouté pour les certificats et clés chargés à l'aide de variables dans les directives (par exemple, «ssl_certificate /etc/ssl/$ssl_server_name.crt»). Des directives telles que «ssl_certificate_cache», «proxy_ssl_certificate_cache», «grpc_ssl_certificate_cache» et «uwsgi_ssl_certificate_cache» ont été ajoutées pour gérer le cache. Ces directives permettent de configurer la taille maximale du cache, la durée de vie des entrées et le temps de nettoyage des entrées inutilisées. Par exemple : «ssl_certificate_cache max=1000 inactive=20s valid=1m;».
- La directive «keepalive_min_timeout» a été ajoutée, définissant le délai d'attente pendant lequel nginx ne fermera pas la connexion keep-alive avec le client.
- Le problème d'apparition des messages de journal «gzip filter failed to use preallocated memory» lors de la compilation avec la bibliothèque zlib-ng a été résolu.
- Le problème de compilation de la bibliothèque libatomic, lors de l'utilisation de l'option de compilation «—with-libatomic=DIR», a été résolu.
- Une erreur empêchant l'établissement d'une connexion via le protocole QUIC en utilisant 0-RTT a été corrigée.
- Les requêtes de négociation de version QUIC provenant des clients sont maintenant ignorées.
- Des problèmes de compilation sous Solaris 10 avec le module ngx_http_v3_module ont été résolus.
- Des erreurs dans l'implémentation de HTTP/3 ont été corrigées.
Source : opennet.ru
