Retour au blog
CVEn8nJWTauthentification

n8n CVE-2026-59208 : une faille JWT token exchange qui vous connecte sous l'identité d'un autre

Publié le 2026-07-167 min de lectureCleanIssue

> En bref : CVE-2026-59208 est une faille de liaison d'identité JWT dans le flux Enterprise de token exchange de n8n. Sur les instances configurées pour faire confiance à plus d'un émetteur externe, un token valide de l'émetteur A portant un sub appartenant à un utilisateur de l'émetteur B vous connectait sous son identité. Aucun mot de passe en jeu. Correctif : n8n 2.27.4 et 2.28.1 (livrés le 24 juin 2026).

Pourquoi ça vous concerne

n8n est la plateforme d'automatisation de workflows open-source que beaucoup d'équipes SaaS embarquent pour l'automatisation interne, les intégrations clients ou des fonctionnalités OEM. Nous avons déjà écrit sur la sécurité des webhooks n8n — cette CVE est sur une autre surface, mais le même produit, et elle vise la chose la plus sensible que n8n détient : sous quelle identité vous êtes connecté.

Plus largement, c'est un bug JWT, et les bugs JWT voyagent. L'erreur de liaison d'identité exacte se retrouve dans les implémentations SSO maison, les produits embarqués OEM, et tout flux de token exchange fait main. Si vous construisez de l'identité fédérée, lisez la suite.

La faille en deux phrases

Le token exchange (RFC 8693) est la voie Enterprise de n8n pour les partenaires OEM qui embarquent le produit. Le partenaire signe un JWT court terme avec sa propre clé, n8n le vérifie contre une clé publique configurée (N8N_TOKEN_EXCHANGE_TRUSTED_KEYS), rapproche les claims d'un compte local, et l'utilisateur est connecté.

Le token lui-même était valide. Le rapprochement était le bug. n8n indexait uniquement sur sub et ignorait iss. Une valeur de sub n'est garantie unique qu'au sein de l'émetteur qui l'a émise — selon la RFC 7519, l'identité, c'est la *paire* iss + sub. n8n n'en gardait que la moitié. Rien n'empêche deux émetteurs d'émettre le même sujet, et quand c'est le cas, les deux atterrissent sur un seul compte n8n.

La leçon : l'identité est une paire, pas un claim

C'est la partie à mémoriser, parce qu'elle n'est pas spécifique à n8n. Chaque fois que votre backend résout un JWT vers un utilisateur local, la clé de recherche doit être (iss, sub), jamais sub seul. Dès que vous faites confiance à deux émetteurs — deux IdP, un partenaire OEM et votre propre IdP, un tenant de staging et un tenant de prod — les collisions de sub deviennent possibles, et le premier à enregistrer un nom d'utilisateur gagne toutes les collisions.

Variantes classiques de ce bug :

  • Un SSO fédéré qui rapproche sur l'email, quand deux tenants peuvent émettre le même email.
  • Une API multi-tenant qui mappe un sub vers une ligne utilisateur sans scoper la recherche au tenant.
  • Un embarqué OEM qui fait confiance aux tokens du produit parent mais les résout contre sa propre table d'utilisateurs.
  • Toujours le même bug, habillé différemment.

    Quelle est l'exposition

    Le périmètre de n8n est étroit et ils le disent. Le token exchange est réservé à l'Enterprise, toujours marqué preview, et la faille ne se déclenche que sur les instances qui font confiance à au moins deux émetteurs externes. C'est un ensemble petit et spécifique — essentiellement des déploiements OEM. Le CVSS tombe à 7.6 en 4.0 (high) et 6.8 en 3.1 (medium), CWE-287 (authentification impropre) et CWE-346 (erreur de validation d'origine).

    Ce que l'advisory ne précise pas, c'est comment l'attaquant obtient le token. À la mi-juillet, l'évaluation SSVC de la CISA ne recense aucune exploitation et il n'y a pas de proof-of-concept publique. La question réaliste — un utilisateur ordinaire d'un émetteur de confiance peut-il influencer le sub qu'il reçoit ? — n'est pas tranchée dans le dossier public.

    Ce qu'il faut faire

  • Mettre à niveau au moins en 2.27.4 ou 2.28.1. Note : les notes de version des deux releases *ne mentionnent pas* le correctif. Si vous pilotez vos décisions de mise à niveau par les release notes, ce genre de CVE passe inaperçue — suivez directement les advisories de sécurité.
  • Si vous ne pouvez pas patcher dans l'immédiat, réduisez N8N_TOKEN_EXCHANGE_TRUSTED_KEYS à un seul émetteur de confiance, ou désactivez complètement le token exchange. L'advisory qualifie les deux de mesures provisoires mais précise qu'aucune ne remédie totalement.
  • Si vous construisez votre propre token exchange ou SSO fédéré, auditez le rapprochement : chaque résolution d'identité doit être scopée par iss. Ajoutez un test qui émet deux tokens avec le même sub depuis deux émetteurs et vérifie qu'ils ne résolvent jamais vers le même compte.
  • Vérifiez la CVE associée CVE-2026-54305 (corrigée le 10 juin), autre faille Enterprise n8n qui permettait à tout utilisateur authentifié d'écraser ou de révoquer les tokens OAuth stockés d'un autre utilisateur — même surface, bug différent.
  • Pour un éditeur SaaS, la leçon tient à la paire, pas à la plateforme : à chaque fois que l'identité traverse une frontière de confiance, iss + sub ensemble, jamais l'un sans l'autre.

    Vous éditez un logiciel RH, paie ou recrutement ? CleanIssue réalise des audits de sécurité pour SaaS RH en conditions réelles, sans accès au code. Pour une première lecture de votre exposition, commencez par une revue externe de votre application.

    Besoin d'une revue externe de votre SaaS RH ?

    Expliquez votre produit, votre stack et votre contexte client. Nous revenons vers vous avec le bon niveau de revue.

    Parler de votre audit