NGINX - CVE-2026-78689
Date de publication :
Il s'agit d'une vulnérabilité de dépassement de tampon en tas dans le module d'analyse des listes de préfixes de namespace XML de NGINX JavaScript, accessible via la méthode xml.exclusiveC14n().
NGINX JavaScript (njs) est un module d'extension du serveur NGINX qui permet l'exécution de code JavaScript dans le pipeline de traitement des requêtes HTTP et Stream. Il embarque deux moteurs d'exécution distincts, njs et QuickJS (qjs), utilisés notamment pour des logiques personnalisées d'authentification, de routage ou de traitement de messages, y compris des scénarios de fédération d'identité SAML.
Une liste de préfixes forgée provoque une écriture hors limites au-delà d'une allocation en tas. Sur le moteur njs, utilisé par défaut, cette écriture corrompt des objets adjacents et provoque le crash du worker NGINX. Sur le moteur QuickJS, le même appel entraîne aussi une fuite de la liste de préfixes à chaque invocation, à l'origine d'une croissance progressive de la mémoire du worker. L'implémentation de référence nginxinc/nginx-saml est concernée lors de la vérification de signature SAML : elle lit le champ InclusiveNamespaces/@PrefixList d'un message SAML non fiable et le transmet à cette méthode avant vérification de la signature. Une signature SAML valide n'est donc pas requise. Un message SAML Response, Assertion, LogoutRequest ou LogoutResponse forgé suffit. L'exécution de code n'a pas été démontrée mais ne peut être exclue selon la plateforme. L'effet de l'écriture hors limites dépend de conditions hors du contrôle de l'attaquant.
Elle permet à un attaquant distant non authentifié de provoquer un déni de service du worker NGINX et, selon la plateforme, une exécution de code.
Informations
La faille est activement exploitée : Non
Un correctif existe : Oui
Une mesure de contournement existe : Non
Exécution de code arbitraire (à distance)
Exploitation
CWE-122 : Heap-based Buffer Overflow
Détails sur l'exploitation
• Vecteur d'attaque : Réseau
• Complexité de l'attaque : Élevée
• Privilèges nécessaires pour réaliser l'attaque : Aucun
• Interaction d'un utilisateur ayant accès au produit est-elle nécessaire : Non
• L'exploitation de la faille permet d'obtenir des droits privilégiés : Non
Preuve de concept
Actuellement, aucune preuve de concept n'est disponible en sources ouvertes.
Systèmes ou composants affectés
• NGINX JavaScript versions 0.7.10 jusqu'à 0.9.9 (branche 0.x)
• NGINX JavaScript version 1.0.0 (branche 1.x)
Solutions ou recommandations
• Branche 0.x (versions 0.7.10 à 0.9.9) : aucun correctif n'est publié pour cette branche. F5 recommande une mise à niveau vers la branche 1.x corrigée, en version 1.0.1 et supérieures.