Vingt ans de failles Nginx : NGINX Rift, c'est l'heure de patcher !
Deux décennies de failles Nginx : Pourquoi NGINX Rift impose un patch immédiat
Le code ancien cache souvent des risques. Imaginez-le dans un serveur web ultra-populaire comme Nginx depuis 18 ans. F5 vient de publier des correctifs pour quatre vulnérabilités. La plus grave, CVE-2026-42945 dite "NGINX Rift" par ses découvreurs de depthfirst, exige une action rapide de toutes les équipes infra.
Une tempête parfaite : code obsolète, impacts modernes
Voici ce qui rend cette faille explosive :
Le bug : Un débordement de tampon heap dans le module rewrite de Nginx. Il date de la version 0.6.27 sortie en 2008. À l'époque, pas de Docker, smartphones rares, et Apache régnait encore.
L'attaque : Un simple requête HTTP malveillante suffit. Pas d'authentification, pas de chaîne d'exploits complexes. Juste un coup porté à distance.
Les conséquences : Sans ASLR, c'est de l'exécution de code à distance. Fin de partie. Avec ASLR, au minimum un DoS fiable : les workers crashent en boucle.
Le score CVSS : 9.2, niveau critique. Presque le maximum.
Comment un tel bug a-t-il tenu 20 ans ?
Nginx utilise PCRE pour matcher les URLs dans ses rewrite rules. Si vous chainnez des captures anonymes ($1, $2) avec un autre rewrite, if ou set, le code déborde en heap. Un classique qui aurait dû sauter aux yeux en review.
Ça prouve que même les projets open source stars comme Nginx ne sont pas à l'abri. Millions de serveurs concernés. L'ancienneté amplifie le rayon d'action.
Qui doit patcher d'urgence ?
Utilisateurs NGINX Plus : Versions R32 à R36 vulnérables. Passez à R32 P6 ou R36 P4.
NGINX Open Source : De 1.0.0 à 1.30.0 impactées. Montez à 1.30.1 ou 1.31.0 sans tarder.
Versions fossiles : 0.6.27 à 0.9.7 (EOL) ? Pas de patch. Migrez tout.
Pas le temps de patcher ? Une parade temporaire
En freeze change ou avec des dépendances bloquantes, modifiez vos rewrites :
Remplacez les captures anonymes par des nommées. Oubliez $1, adoptez (?<nom>...) et $nom. Ça évite le chemin trigger du bug.
Exemple :
# Risqué
rewrite ^/user/([0-9]+)$ /profile?id=$1 last;
# Moins risqué (provisoirement)
rewrite ^/user/(?<id>[0-9]+)$ /profile?id=$id last;
Pansement seulement. Patch prioritaire dès que possible.
Les trois autres CVE corrigées
NGINX Rift vole la vedette, mais F5 a aussi bouché :
- CVE-2026-42946 (CVSS 8.3 High) : Allocation mémoire excessive en SCGI/uWSGI. DoS possible en proxy spécifique.
- CVE-2026-40701 (CVSS 6.3 Medium) : Use-after-free en SSL, activé par ssl_verify_client ou ssl_ocsp.
- CVE-2026-42934 (CVSS 4.8 Medium) : Lecture hors bornes en charset module.
À traiter en prochaine maintenance.
Leçons pour la sécu infra
Cet épisode rappelle des vérités dures :
- Popularité ne rime pas avec invincible. Nginx partout, bug invisible 18 ans.
- Ancienneté = risques cumulés, pas "testé au feu".
- Sécurité = vitesse de patch. Un Nginx non mis à jour ruine tout.
- Surveillez. DoS immédiat même avec ASLR.
En résumé
Nginx Open Source ou Plus ? Ces patches sont une urgence sécu. Âge extrême + attaque triviale + criticité max = priorité absolue.
Passez à jour cette semaine. Testez en staging, roulez en prod sans traîner. Le danger d'attendre dépasse les risques de mise à jour.
Auditez vos configs Nginx ? Parfait moment pour checker rewrites, versions et posture sécu.
Restez vigilants.