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, pour multipart/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 formWebhookprepareFormReturnItem()copyBinaryFile()) utilise req.body.files sans vérifier multipart/form-data, permettant de contrôler filepath et 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).
  • 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