Présentation de la faille
Une vulnérabilité critique a été découverte dans NGINX, l’un des serveurs web et reverse proxies les plus utilisés au monde. Baptisée NGINX Rift et référencée CVE-2026-42945, cette faille obtient un score CVSS de 9.2/10, ce qui la classe dans la catégorie critique.
Découverte le 18 avril 2026 par l’équipe de recherche depthfirst security, cette vulnérabilité est particulièrement préoccupante car elle est présente dans NGINX depuis 2008 — soit près de 18 ans sans être détectée.
Détails techniques
Nature de la faille
Il s’agit d’un heap buffer overflow (débordement de tampon sur le tas) localisé dans le module ngx_http_rewrite_module, qui gère la réécriture d’URL.
La cause racine est un défaut de propagation du flag is_args lors de séquences de directives rewrite et set. Ce comportement erroné entraîne une allocation de buffer mémoire sous-dimensionnée, conduisant à des écritures hors-limites (out-of-bounds writes) lors des opérations de copie d’URI contrôlées par un attaquant.
Impact
- Exécution de code à distance (RCE) non authentifiée sur les systèmes où l’ASLR est désactivé
- Déni de service (DoS) affectant tous les sites hébergés sur le serveur
- Aucune authentification requise : un simple accès HTTP suffit pour déclencher l’exploitation
Proof of Concept — Reproduire la faille en laboratoire
Cette section décrit comment reproduire le comportement vulnérable dans un environnement de test isolé. Ne jamais tester sur un serveur de production.
1. La configuration vulnérable
Pour déclencher CVE-2026-42945, il faut une configuration utilisant des captures PCRE non nommées ($1) combinées à un point d’interrogation dans la réécriture. C’est cette combinaison qui provoque le mauvais calcul d’offset dans ngx_http_rewrite_module.
Ajoutez ce bloc à votre nginx.conf de test :
server {
listen 8080;
server_name localhost;
# Configuration déclenchant la corruption du tas (heap overflow)
location ~ ^/rift/(.*)$ {
# L'utilisation de $1 (capture non nommée) combinée
# au '?' dans la destination provoque l'erreur de calcul d'offset
rewrite ^/rift/(.*)$ /test?data=$1 break;
}
}
2. Le vecteur de test (Trigger)
Une fois NGINX redémarré avec cette configuration, envoyez une requête avec une URI extrêmement longue pour saturer le buffer sous-dimensionné :
# Génération d'une longue chaîne pour saturer le buffer de réécriture
export PAYLOAD=$(python3 -c "print('A' * 4096)")
curl -i "http://localhost:8080/rift/$PAYLOAD"
3. Comment interpréter le résultat
Pour confirmer la vulnérabilité sans exploit RCE complet, deux méthodes :
- Logs d’erreur : consultez
/var/log/nginx/error.log. Un message de typeworker process XXX exited on signal 11 (core dumped)confirme que la corruption mémoire a eu lieu et que le processus worker a crashé. - GDB : si vous compilez NGINX depuis les sources, lancez-le via
gdbpour identifier précisément où l’overflow se produit dans le tas.
Versions affectées
| Produit | Versions vulnérables |
|---|---|
| NGINX Open Source | 1.0.0 – 1.30.0 et versions legacy 0.6.27 – 0.9.7 |
| NGINX Plus | R32 – R36 |
En résumé : quasiment toutes les installations NGINX actives sont potentiellement vulnérables sans mise à jour.
Correctifs disponibles
F5 / NGINX a publié des correctifs en urgence. Voici les versions à cibler :
- NGINX Open Source : mettre à jour vers
1.31.0ou1.30.1 - NGINX Plus : mettre à jour vers
R37.0.0,R36 P4ouR32 P6
Contournement temporaire
Si une mise à jour immédiate n’est pas possible, remplacez les captures regex anonymes par des captures nommées — celles-ci empruntent un chemin de code différent dans NGINX, non affecté par Rift.
Configuration vulnérable (à éviter) :
location ~ ^/rift/(.*)$ {
rewrite ^/rift/(.*)$ /test?data=$1 break;
}
Version sécurisée (workaround) :
location ~ ^/rift/(?<id>.*)$ {
rewrite ^/rift/.*$ /test?data=$id break;
}
CVE associées corrigées simultanément
Trois autres vulnérabilités ont été corrigées en même temps :
- CVE-2026-42946 — CVSS 8.3
- CVE-2026-40701 — CVSS 6.3
- CVE-2026-42934 — CVSS 6.3
Que faire maintenant ?
- Vérifier la version de NGINX installée sur tous vos serveurs :
nginx -v - Appliquer les mises à jour dès que possible via votre gestionnaire de paquets (
apt upgrade nginx,yum update nginx, etc.) - Appliquer le contournement sur les systèmes qui ne peuvent pas être mis à jour immédiatement
- Vérifier si l’ASLR est actif sur vos serveurs Linux :
cat /proc/sys/kernel/randomize_va_space(doit retourner2) - Surveiller les logs NGINX pour détecter d’éventuelles tentatives d’exploitation
Conclusion
NGINX Rift illustre parfaitement qu’une faille peut rester dormante pendant des décennies avant d’être découverte — et qu’elle peut impacter des millions de serveurs en production au moment de sa divulgation. Avec un score CVSS de 9.2 et une exploitation possible sans authentification, cette vulnérabilité doit être traitée en priorité absolue.
Si vous gérez des serveurs NGINX, mettez à jour aujourd’hui.
Source : IT-Connect.fr
