
Preuve de concept (RCE) pour CVE-2026-42945, un débordement critique de tampon de tas dans le ngx_http_rewrite_module de NGINX introduit en 2008. Cette faille permet l'exécution de code à distance non authentifiée contre les serveurs utilisant les directives rewrite et set.
Cette vulnérabilité — ainsi que trois autres problèmes de corruption mémoire (CVE-2026-42946, CVE-2026-40701, CVE-2026-42934) — a été découverte de manière autonome par le système d'analyse de sécurité de depthfirst après un seul clic lors de l'intégration du code source de NGINX.
Le moteur de scripts de NGINX utilise un processus en deux passes : d'abord calculer la taille de tampon requise, puis copier les données. Le drapeau is_args est défini sur le moteur principal lorsqu'un remplacement rewrite contient ?, mais la passe de calcul de longueur s'exécute sur un sous-moteur fraîchement remis à zéro. Donc :
is_args = 0 → renvoie la longueur brute de capture.is_args = 1 → appelle ngx_escape_uri avec NGX_ESCAPE_ARGS, développant chaque octet échappable en 3 octets.La copie fait déborder le tampon de tas sous-dimensionné avec des données d'URI contrôlées par l'attaquant. L'exploitation utilise le feng shui de tas entre requêtes pour corrompre le pointeur cleanup d'un ngx_pool_t adjacent (injecté via les corps des requêtes POST, car les octets d'URI ne peuvent pas contenir d'octets nuls), le redirigeant vers un faux ngx_pool_cleanup_s invoquant system() à la destruction du pool.
En savoir plus sur ce bug dans notre https://t.me/p3Nt3st3rsTAr
| Produit | Versions affectées | Corrigé dans |
|---|---|---|
| NGINX Open Source | 0.6.27 – 1.30.0 | 1.31.0, 1.30.1 |
| NGINX Plus | R32 – R36 | R36 P4, R35 P2, R32 P6 |
Avis complet du fournisseur : https://my.f5.com/manage/s/article/K000160932
Testé sur Ubuntu 24.04.3 LTS.
./setup.sh — construire le conteneur.docker compose -f env/docker-compose.yml up — démarrer le serveur NGINX vulnérable.python3 poc.py --shell — obtenir un shell.