NGINX, propriété de F5, est un serveur proxy inverse très utilisé dans le monde. NGINX est également une infrastructure critique de l’Internet mondial. Une société de recherche en sécurité a maintenant révélé une vulnérabilité de sécurité à haut risque dans le logiciel. La vulnérabilité est numérotée CVE-2026-42945. Il existe un problème de dépassement de tampon de tas dans le moteur de script NGINX qui existe depuis 18 ans.

Un attaquant n’a qu’à envoyer une requête HTTP soigneusement construite à un serveur NGINX exposé pour prendre le contrôle du serveur à distance. NGINX représente près de 30 % des principaux serveurs de sites Web mondiaux et des champs de proxy inverse, cette vulnérabilité peut donc affecter un grand nombre de services Internet.
Affecte l'ontologie NGINX et plusieurs dérivés :
Cette vulnérabilité a été initialement introduite dans la version 0.6.27 de NGINX publiée en 2008. Après cela, la vulnérabilité n'a pas été découverte depuis longtemps et se cache jusqu'à présent. Cette vulnérabilité affecte les versions 0.6.27 à 1.30.0 de NGINX, ainsi que divers dérivés de NGINX fournis par F5 aux clients commerciaux. Les produits dérivés concernés incluent, sans s'y limiter, NGINX WAF, F5 WAF, NGINX Gateway Fabric, NGINX Ingress Controller, etc.
Les conditions déclenchant la vulnérabilité sont très cachées. Lorsque les deux instructions suivantes apparaissent simultanément dans le fichier de configuration NGINX, la vulnérabilité sera activée :
rewrite ^/api/(.*)$ /internal?migrated=true; # 重写规则末尾带 “?” set $original_endpoint $1; # 使用正则捕获组
L'équipe de recherche qui a découvert la vulnérabilité a souligné que la cause première de la vulnérabilité réside dans le moteur de script (ngx_http_script.c) de ngx_http_rewrite_module. Lorsque l'instruction de réécriture contient un point d'interrogation, l'indicateur is_args persistant est défini, mais dans la phase suivante de calcul de la longueur de l'instruction définie, le moteur utilise un nouveau sous-moteur effacé, ce qui fait que la logique d'échappement de l'URL est ignorée lors du calcul de la longueur.
Dans l'étape de copie proprement dite, le moteur principal est utilisé pour déclencher la fonction ngx_escape_uri afin d'échapper aux caractères tels que + et &. Le tampon est alloué en fonction de la longueur non échappée, mais le contenu développé est écrit, provoquant finalement un débordement de tampon de tas contrôlable.
F5 a publié NGINX version 1.31.0/1.30.1 pour corriger :
Après avoir reçu la notification de vulnérabilité, F5 a rapidement confirmé la vulnérabilité. Après que F5 ait préparé le correctif, les chercheurs ont rendu publique la vulnérabilité. Par conséquent, les utilisateurs utilisant actuellement NGINX et ses dérivés doivent effectuer une mise à niveau vers la dernière version qui n'est pas affectée. La version open source de NGINX doit être mise à niveau vers la version 1.30.1 ou 1.31.0. D'autres versions plus anciennes, telles que les versions 0.6.27~1.30.0, sont affectées par cette vulnérabilité.
Pour obtenir des informations sur la version d'autres dérivés, veuillez consulter le bulletin de sécurité F5 : https://my.f5.com/manage/s/article/K000160932.