Source : Cyera Research Labs (blog de recherche, 7 janvier 2026). L’article détaille une faille critique dans n8n entraînant une exécution de code à distance non authentifiée et explique la chaîne d’exploitation, l’impact et la correction disponible.
🚨 Problème et impact
- Vulnérabilité : CVE-2026-21858 (score CVSS 10.0) dans n8n.
- Type : exécution de code à distance (RCE) non authentifiée via confusion du Content-Type.
- Impact : prise de contrôle de serveurs n8n localement déployés, estimée à ~100 000 instances affectées.
- Correctif : mettre à jour en 1.121.0 ou ultérieur; aucun contournement officiel disponible.
🧩 Détails techniques (résumé fidèle)
- La chaîne de traitement des webhooks appelle un middleware
parseRequestBody()qui choisit entre un parseur « fichiers » (Formidable, pourmultipart/form-data) et un parseur « corps régulier » (pour p.ex.application/json). - En l’absence de vérification explicite du Content-Type par certaines fonctions manipulant des fichiers, un attaquant peut forcer le parseur « régulier » et surcharger
req.body.files(qui aurait dû être renseigné par le parseur fichiers), créant une confusion du Content-Type. - Le Form node (via
formWebhook→prepareFormReturnItem()→copyBinaryFile()) utilisereq.body.filessans vérifiermultipart/form-data, permettant de contrôlerfilepathet de lire des fichiers locaux arbitraires (ex. démontré avec/etc/passwd). Le contenu est ensuite injecté en sortie de nœud, p.ex. dans un cas d’usage RAG via une interface de chat.
🧨 De la lecture arbitraire à la compromission complète
- n8n stocke une session d’authentification dans le cookie
n8n-auth: un payload (ID utilisateur + 10 premiers caractères d’un SHA256 de « email+mot de passe ») est signé avec une clé secrète d’instance. - La lecture arbitraire de fichiers permet d’exfiltrer :
- la base utilisateurs locale (p.ex. Docker :
/home/node/.n8n/database.sqlite), pour récupérer ID/email/hash, - la clé de signature dans la configuration locale (p.ex.
/home/node/.n8n/config).
- la base utilisateurs locale (p.ex. Docker :
- Avec ces éléments, un attaquant forge une session valide (cookie
n8n-auth) et se connecte en admin, puis ajoute un nœud « Execute Command » pour obtenir une RCE.
🛠️ Mesures et chronologie
- Recommandations de l’éditeur (relai dans l’article) : mettre à jour en 1.121.0+, ne pas exposer n8n à Internet si inutile, exiger l’authentification sur tous les Form nodes.
- Calendrier de divulgation responsable :
- 9 nov. 2025 : vulnérabilité signalée à n8n.
- 10 nov. 2025 : accusé de réception par n8n.
- 18 nov. 2025 : version corrigée publiée.
- 29 déc. 2025 : relance du statut de publication.
- 6 janv. 2026 : attribution CVE-2026-21858.
- 7 janv. 2026 : publication du billet par Cyera.
TTPs observés
- Confusion de Content-Type et surcharge de
req.body.files. - Lecture arbitraire de fichiers via un nœud Form mal protégé.
- Falsification de session (cookie
n8n-auth) après lecture de la base locale et de la clé de signature. - Exécution de commande via le nœud « Execute Command ».
IOCs
- Aucun IOC (adresses IP, domaines, hash) n’est fourni dans l’article.
Conclusion
- Type d’article : publication de recherche détaillant une vulnérabilité critique, sa chaîne d’exploitation et le correctif.
🧠 TTPs et IOCs détectés
TTP
Confusion de Content-Type et surcharge de req.body.files, Lecture arbitraire de fichiers via un nœud Form mal protégé, Falsification de session (cookie n8n-auth) après lecture de la base locale et de la clé de signature, Exécution de commande via le nœud « Execute Command »
IOC
Aucun IOC (adresses IP, domaines, hash) n’est fourni dans l’article.
🔗 Source originale : https://www.cyera.com/research-labs/ni8mare-unauthenticated-remote-code-execution-in-n8n-cve-2026-21858