La version principale de nginx 1.31.0 a été publiée, dans le cadre de laquelle le développement de nouvelles fonctionnalités se poursuit, ainsi que la publication de la version stable 1.30.1, qui reçoit uniquement des modifications liées à la correction de bogues critiques et de vulnérabilités. Dans les mises à jour, 6 vulnérabilités ont été corrigées, dont la plus dangereuse permet l'exécution de code à distance via l'envoi d'une requête HTTP spécialement formée. Pour angie et freenginx, à la date de rédaction de cet article, les correctifs n'ont pas encore été publiés.
La vulnérabilité (CVE-2026-42945), qui a été classée comme critique, est causée par un dépassement de tampon dans le module ngx_http_rewrite_module, qui peut être exploitée pour exécuter du code avec les droits du processus nginx en envoyant une requête HTTP avec un URI spécialement formé. Le problème se manifeste dans les configurations avec la directive « rewrite », où des substitutions de motifs sont utilisées dans les expressions régulières avec des variables non nommées (par exemple, $1 et $2), à condition qu'il y ait un caractère « ? » dans la chaîne de remplacement. Exemple de construction vulnérable : rewrite ^\/users\/([0-9]+)\/profile\/(.*)$ \/profile.php?id=$1&tab=$2 last;
Les expressions avec des substitutions nommées ne sont pas vulnérables. Par exemple, la vulnérabilité n'affecte pas les constructions : rewrite ^\/users\/(?[0-9]+)\/profile\/(?
La vulnérabilité est présente depuis la version 0.6.27, publiée en mars 2008. La cause de l'apparition de la vulnérabilité était que le tampon était alloué en supposant qu'il contiendrait des données non échappées, alors qu'en réalité, les données après l'échappement des caractères spéciaux, qui étaient plus volumineuses, étaient copiées, chaque caractère « + », « % » et « & » étant codé en trois octets au lieu d'un. Un tel désaccord est survenu parce que la présence du caractère « ? » dans la règle rewrite activait le drapeau « e->is_args », qui activait l'échappement, mais l'allocation de tampon se faisait lorsque le drapeau était réinitialisé, permettant ainsi que l'échappement ne soit pas appliqué.
Autres vulnérabilités :
- CVE-2026-42926 — possibilité d'injection de données de l'attaquant dans la requête proxifiée lors de l'utilisation de la directive « proxy_set_body » et de l'appel au backend via HTTP/2 (proxy_http_version=2).
- CVE-2026-40701 — accès mémoire après libération (use-after-free) dans le module ngx_http_ssl_module, survenant lors du traitement des réponses du serveur DNS dans les configurations avec la directive «ssl_ocsp».
- CVE-2026-42946 — lecture hors des limites du tampon dans les modules ngx_http_uwsgi_module et ngx_http_scgi_module, survenant lors du traitement d'une réponse spécialement formée. Ce problème peut entraîner une fuite de contenu mémoire du processus de travail ou son arrêt anormal.
- CVE-2026-42934 — lecture hors des limites du tampon dans le processus de travail, survenant lors du traitement des réponses avec décodage UTF-8 en utilisant la directive «charset_map». Ce problème peut entraîner une fuite de contenu mémoire du processus de travail ou son arrêt anormal.
- CVE-2026-40460 — vulnérabilité dans l'implémentation du protocole HTTP/3, permettant le spoofing adresses IP pour contourner l'authentification ou les restrictions.
Améliorations ajoutées dans la version nginx 1.31.0 :
- Le module ngx_http_tunnel_module a été inclus, permettant de fonctionner comme un proxy («forward proxy»), redirigeant les requêtes vers un autre serveur lors d'une demande client via la méthode HTTP/1.1 CONNECT. Il est possible de configurer l'authentification des demandes au proxy en utilisant les directives «auth_basic», «satisfy» et «auth_delay».
- Dans le bloc «upstream», la directive «least_time» a été ajoutée, incluant une méthode d'équilibrage de charge basée sur le temps de réponse moyen le plus bas et le nombre le plus faible de connexions actives. serveur Dans le module «stream_proxy», la directive «proxy_ssl_alpn» a été ajoutée pour définir la liste des protocoles autorisés dans l'extension ALPN lors de la connexion au serveur proxy. Par exemple : «proxy_ssl_alpn h2 http/1.1».
- Le rejet des demandes utilisant les protocoles HTTP/2 et HTTP/3 incluant les en-têtes «Connection», «Proxy-Connection», «Keep-Alive», «Transfer-Encoding», «Upgrade» a été assuré.
- Dans le module ngx_http_dav_module, le rejet des demandes COPY et MOVE avec des ressources source et cible répétées ou des collections imbriquées a été assuré.
- Niveau de journalisation des erreurs
- «invalid alert», «record layer failure» et «SSL alert number N» abaissé de «crit» à «info». SSL Le script configure a ajouté le paramètre «—without-http_upstream_sticky_module» pour désactiver la compilation du module http_upstream_sticky_module (le paramètre «—without-http_upstream_sticky» a été déclaré obsolète).
- Ajout : Un exploit pour la vulnérabilité RCE dans le ngx_http_rewrite_module est disponible.
Une nouvelle vulnérabilité critique a été signalée dans le module ngx_http_rewrite_module, nécessitant une attention immédiate.
Source : opennet.ru
