
Preuve de concept d'exploit pour CVE-2026-42945, un débordement de tampon tas dans les directives rewrite/set de NGINX, permettant un DoS et une éventuelle RCE via des requêtes conçues.
CVE-2026-42945 est une vulnérabilité grave de débordement de tas dans le serveur NGINX, connue sous le nom de « NGINX Rift ». Cette vulnérabilité existe dans la logique de traitement des directives rewrite et set de NGINX. Lorsque certaines conditions de configuration sont remplies, un attaquant peut déclencher un débordement de tas en construisant une requête malveillante, entraînant un déni de service (DoS) voire une exécution de code à distance (RCE) potentielle.
Type de vulnérabilité:Débordement de tas Niveau de risque:Élevé CVE ID:CVE-2026-42945
Il est recommandé de mettre à niveau immédiatement vers l'une des versions suivantes :
Le déclenchement de la vulnérabilité nécessite les deux conditions suivantes :
Condition de configuration:Utilisation simultanée dans la configuration NGINX :
rewrite (la chaîne de remplacement contient le caractère ?)set (référence aux groupes de capture regex de rewrite, comme $1, $2)Condition de requête:L'URI de la requête contient des caractères pouvant être échappés (par exemple +, &, %, etc.)
Explication du principe:
rewrite définit e->is_args = 1 (jamais réinitialisé)set utilise un sous-moteur entièrement nul (le.is_args = 0)%25 en %, mais ngx_escape_uri le ré-encode en %25 (3 octets)%25 passe de 1 octet à 3 octets, entraînant une écriture au-delà de la limite du tampon# 使用项目中的测试脚本
python3 CVE-2026-42945/CVE-2026-42945-test.py --host cve.test.com --port 80
%25 pour un test à petite échelle%25 (par exemple 2000) pour déclencher le débordement de tamponDans une configuration NGINX monocouche, le test déclenche la vulnérabilité :
Analyse du journal de crash:
ngx_http_script_flush_no_cacheable_variablesngx_http_core_rewrite_phaseDans une configuration NGINX double couche (layer1 proxy + layer2 applicatif), les résultats des tests sont les suivants :
| Scénario de configuration | Résultat layer1 | Résultat layer2 | Analyse des causes |
|---|---|---|---|
rewrite sans break + proxy_pass | ❌ Déclenche vulnérabilité (404) | ❌ Aucune requête reçue | Après rewrite, exécution continue de set déclenche un débordement de tas, le worker plante |
rewrite avec break + proxy_pass | ✅ Normal (200) | ⚠️ Peut déclencher la vulnérabilité | break arrête l'exécution de set, la requête est correctement transmise au backend |
| Fichier | Description |
|---|---|
CVE-2026-42945/CVE-2026-42945-test.py | Script PoC de test de vulnérabilité, utilisé pour vérifier si la cible est vulnérable |
single_layer_test/single_layer_nginx.conf | Exemple de configuration NGINX vulnérable en architecture monocouche |
single_layer_test/image.png | Schéma du principe de la vulnérabilité |
single_layer_test/test.log | Fichier journal de test |
double_layer_test/layer1_nginx.conf | Configuration NGINX de la première couche (couche de proxy) en architecture double couche |
double_layer_test/layer2_nginx.conf | Configuration NGINX de la deuxième couche (couche applicative) en architecture double couche |
Ce projet est destiné uniquement à des fins de recherche en sécurité et d'éducation. Les utilisateurs doivent respecter les lois et réglementations de leur pays ou région. Les auteurs ne sont pas responsables de toute utilisation abusive non autorisée.
Interdiction d'utilisation pour des attaques illégales !
Last Updated: 2026-05-19