n8n - CVE-2026-86076

Date de publication :

Il s'agit d'une vulnérabilité dans le compilateur d'expressions de n8n, au niveau du composant PrototypeSanitizer chargé de neutraliser le code potentiellement dangereux saisi par un utilisateur.

n8n est une plateforme open source d'automatisation de workflows. Elle connecte des applications et des services entre eux et orchestre des tâches à travers des scénarios visuels qui combinent des nœuds prédéfinis et des expressions de code personnalisées.

Ce sanitiseur résout le mot-clé this par une portée dynamique plutôt que statique, et ne rejette pas les noms de membres de classe réservés lors de l'analyse des expressions. Un utilisateur disposant des droits d'édition de workflow définit un champ de classe nommé __sanitize dans une expression. Ce nom réservé re-lie la référence du sanitiseur lui-même, contournant ainsi le mécanisme de neutralisation prévu. L'attaquant atteint alors le constructeur Function de JavaScript, qui permet de compiler et d'exécuter du code arbitraire à partir d'une chaîne de caractères.

Elle permet l'exécution de code arbitraire côté serveur dans le processus n8n, ainsi que l'exécution de JavaScript dans la session du navigateur de tout utilisateur consultant l'aperçu de l'éditeur du workflow concerné.

Informations

La faille est activement exploitée : Non

Un correctif existe : Oui

Une mesure de contournement existe : Oui

Risques

Exécution de code arbitraire (à distance)

Exploitation

La vulnérabilité exploitée est du type
CWE-94 : Improper Control of Generation of Code ('Code Injection')

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 : Authentification utilisateur simple
•   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

•   n8n versions antérieures à 1.123.76
•   n8n versions 2.0.0 jusqu'à 2.37.6
•   n8n versions 2.38.0 jusqu'à 2.38.1

Contournement provisoire

•   Restreindre l'accès à l'instance n8n aux seuls utilisateurs pleinement approuvés
•   Ne pas accorder les permissions de création ou d'édition de workflow à des utilisateurs non approuvés
•   Auditer les workflows existants à la recherche d'expressions inhabituelles ou non reconnues dans les paramètres de nœuds
•   Définir la variable d'environnement N8N_EXPRESSION_ENGINE=vm

Solutions ou recommandations

•   Branche 1.x : n8n version 1.123.76 et supérieures
•   Branche 2.x antérieure à 2.38 : n8n version 2.37.7 et supérieures
•   Branche 2.38.x : n8n version 2.38.2 et supérieures