
Outil de scan et de validation de la vulnérabilité de débordement de tas NGINX CVE-2026-42945
NGINX Rift est un outil open-source de scan et de vérification ciblant CVE-2026-42945 et CVE-2026-9256 (vulnérabilités de débordement de tas dans le module ngx_http_rewrite_module de NGINX). Il prend en charge le scan d'empreintes réseau à distance et l'audit de configuration local approfondi, aidant les équipes de sécurité à identifier rapidement les risques potentiels dans les environnements NGINX.
| Attribut | Détail |
|---|---|
| Numéro CVE | CVE-2026-9256 |
| Type de vulnérabilité | Débordement de tampon tas (Heap-based Buffer Overflow, CWE-122) |
| Composant affecté | NGINX ngx_http_rewrite_module |
| Versions affectées | Version open source NGINX 0.1.17 ~ 1.31.0 (mainline) / 0.1.17 ~ 1.30.1 (stable) |
| Versions corrigées | NGINX 1.31.1 (mainline) / 1.30.2 (stable), publiée le 2026-05-22 |
| Niveau de gravité | Élevé — peut entraîner un déni de service (DoS) et, si ASLR est désactivé, une exécution de code à distance (RCE) |
Condition de déclenchement : La directive rewrite utilise une expression régulière PCRE avec des captures qui se chevauchent, et la chaîne de remplacement référence plusieurs groupes de capture non nommés.
| Attribut | Détail |
|---|---|
| Numéro CVE | CVE-2026-42945 |
| Type de vulnérabilité | Débordement de tas (Heap Overflow) |
| Composant affecté | NGINX ngx_http_rewrite_module |
| Versions affectées | Version open source NGINX 0.6.27 ~ 1.30.0 / NGINX Plus R32 ~ R36 |
| Versions corrigées | NGINX 1.30.1 (stable) / 1.31.0 (mainline) / NGINX Plus R32 P6+ |
| Niveau de gravité | Élevé — peut entraîner un déni de service (DoS) et une exécution de code à distance (RCE) |
Condition de déclenchement : L'URL de remplacement de la directive rewrite contient à la fois ? et une référence à un groupe de capture non nommé (par exemple $1).
# CVE-2026-42945 触发配置: ? + $1
rewrite ^/api/(.*)$ /internal?id=$1 last;
# CVE-2026-9256 触发配置: 多个 $N 捕获引用
rewrite ^/(\w+)/(\d+)$ /$2/$1 last;
# 安全配置 (使用命名捕获组)
rewrite ^/api/(?<myid>.*)$ /internal?id=$myid last;
dpkg/rpm pour vérifier si la distribution a déjà corrigé la vulnérabilité via un backport.rewrite-target dans les ressources Ingress Kubernetes.Téléchargez le binaire correspondant à votre plateforme depuis la page Releases.
git clone https://github.com/nu0l/NGINX-Rift.git
cd NGINX-Rift
# 单平台编译
go build -o nginx_rift_scanner nginx_rift_scanner.go
# 全平台交叉编译
chmod +x build.sh && ./build.sh
./nginx_rift_scanner -h
# 扫描单个目标
./nginx_rift_scanner scan -u http://example.com
# 批量扫描(从文件读取 URL 列表)
./nginx_rift_scanner scan -f url.txt
Chaque ligne de url.txt contient une URL, par exemple :
http://target1.com
https://target2.com
target3.com
# 自动查找默认 NGINX 配置路径
./nginx_rift_scanner verify
# 指定配置文件路径
./nginx_rift_scanner verify -p /etc/nginx/nginx.conf
Le mode Verify effectue un audit en trois étapes :
nginx -v pour obtenir la version et vérifie les correctifs backportés du gestionnaire de paquets du système.include), identifie les règles rewrite dangereuses.kubectl est détecté, scanne automatiquement toutes les ressources Ingress du cluster.| Priorité | Solution | Description |
|---|---|---|
| P0 | Mettre à niveau NGINX | Mettez à niveau vers 1.30.2+ (stable) / 1.31.1+ (mainline) / la dernière version sécurisée de NGINX Plus. |
| P0 | Mise à jour du gestionnaire de paquets OS | apt-get upgrade nginx ou yum update nginx |
| P1 | Atténuation urgente par configuration | Remplacez les $1, $2, etc. dans les directives rewrite par des groupes de capture nommés $name, sans nécessiter d'arrêt. |
| P2 | Correction Ingress K8s | Mettez à niveau le contrôleur Ingress et modifiez l'annotation rewrite-target. |
| P3 | Défense en profondeur | Configurez server_tokens off; pour masquer l'empreinte de version. |
NGINX-Rift/
├── nginx_rift_scanner.go # 主程序源码
├── build.sh # 全平台交叉编译脚本
├── go.mod # Go 模块定义
└── README.md
net/http pour envoyer des requêtes HTTP et analyser l'en-tête de réponse Server.nginx/X.Y.Z) et commerciale (NGINX Plus RXX) par correspondance regex.include, utilise une map visited pour éviter les références circulaires.? + $N (CVE-2026-42945) et plusieurs références $N (CVE-2026-9256).kubectl get ingress --all-namespaces -o yaml.dpkg-query/rpm --changelog pour détecter les correctifs backportés au niveau OS (recherche simultanée des deux numéros CVE).CGO_ENABLED=0), génération d'un binaire autonome sans dépendance C.MIT License
Contribué par la communauté de la sécurité.