Full research report

n8n Token Exchange Flaw Could Let Attackers Log In as Users From Another Issuer

Original reporting β†—
β˜… Threat intelligence assessment high confidence

Executive assessment

CVE-2026-59208 is a well-defined identity-binding error in n8n's Enterprise token exchange feature: the implementation treats JWT sub as globally unique rather than issuer-scoped, contrary to RFC 7519, allowing cross-issuer account impersonation without credential knowledge. The attack surface is deliberately narrowβ€”only Enterprise OEM deployments running a preview feature with multiple issuer configurations are exposedβ€”but within that scope the impact is full account takeover. The companion CVE-2026-54305 is an independent authorisation failure in a different Enterprise feature, patched two weeks earlier; its proximity in the reporting cycle suggests sustained security research attention on n8n's Enterprise tier rather than a coordinated exploit campaign. Both CVEs lack public exploit code as of 16 July 2026, EPSS and CISA data consistently reflect very low exploitation probability, and the patch cadence is fast. Defenders on affected Enterprise versions should treat both patches as standard urgent updates, with the specific caveat that n8n's release changelogs do not document these fixesβ€”security advisory monitoring is the only reliable detection path.

What happened

On 24 June 2026 n8n shipped a silent fix for CVE-2026-59208, a flaw in the Enterprise token exchange feature (an RFC 8693 implementation used by OEM partners) where JWT identity resolution keyed on the sub claim alone and ignored the iss claim. Because RFC 7519 guarantees subject uniqueness only within the minting issuer, two trusted issuers emitting the same sub value would both resolve to a single n8n account, allowing a token from one issuer to authenticate as a user registered under another. The CVE record was not published until 9 July 2026, fifteen days after patching. A companion vulnerability, CVE-2026-54305, was patched around 10 June 2026 in a different Enterprise featureβ€”Dynamic Credentialsβ€”where three endpoints lacked ownership and scope authorisation checks, permitting any authenticated user to enumerate, overwrite, or revoke other users' stored OAuth tokens.

Affected scope

CVE-2026-59208: n8n Enterprise instances on versions below 2.27.4 or on exactly 2.28.0, where the token exchange preview feature is active and N8N_TOKEN_EXCHANGE_TRUSTED_KEYS contains keys from two or more distinct issuers. CVE-2026-54305: n8n Enterprise instances below 1.123.55, 2.25.7, or 2.26.2 with Dynamic Credentials enabled. Both issues are Enterprise-only; self-hosted community instances are unaffected.

Technical assessment

CVE-2026-59208 is a violation of the identity-binding requirement in RFC 7519, which defines sub as unique only within the context of its issuer, making (iss, sub) the correct identity key. The token exchange flow correctly verified the incoming JWT's signature against a configured public key but then matched the resulting claims to a local n8n account using sub in isolation. The attack requires the adversary to hold a valid token from a configured trusted issuer; the advisory does not specify whether ordinary users at a trusted issuer can influence which sub value their identity provider assigns, leaving the practical exploitation path partially unclear. CVE-2026-54305 is a distinct authorisation control failure: the Dynamic Credentials endpoints accepted any authenticated n8n session without per-resource ownership checks, exposing credential enumeration and OAuth token hijack to any session holder. Workflows running under a hijacked credential would subsequently execute under the attacker's OAuth identity.

Recommended defensive actions

  1. Upgrade n8n to 2.27.4 or 2.28.1 (or any later stable release) to remediate CVE-2026-59208; upgrade to 1.123.55, 2.25.7, or 2.26.2 minimum to remediate CVE-2026-54305.
  2. If immediate patching is not possible for CVE-2026-59208, reduce N8N_TOKEN_EXCHANGE_TRUSTED_KEYS to a single issuer entry or disable the token exchange preview feature entirely.
  3. For CVE-2026-54305, if patching must wait, disable Dynamic Credentials by unsetting N8N_ENV_FEAT_DYNAMIC_CREDENTIALS and restrict instance access to fully trusted users only.
  4. Do not rely on n8n release changelogs for security patch awareness: neither the 2.27.4 nor 2.28.1 changelog mentions CVE-2026-59208. Monitor the n8n GitHub security advisories page directly.
  5. Audit all Enterprise deployments to identify instances running multi-issuer token exchange configurations, as these represent the entire exposure surface for CVE-2026-59208.

Uncertainties and evidence gaps

  • How an attacker obtains a valid token from a trusted issuer carrying the specific sub value needed to impersonate a target is unspecified in the advisory; whether an ordinary user at a trusted issuer can control or predict their assigned sub remains publicly unanswered.
  • CVSS scoring diverges between sources for both CVEs: NVD rates CVE-2026-54305 at 9.9 CRITICAL (3.1) while GitHub rates it 8.9 HIGH (4.0), and CVE-2026-59208 is 7.6 HIGH (4.0) versus 6.8 MEDIUM (3.1)β€”the basis for these differences is not explained in any source.
  • n8n had not provided a statement to The Hacker News confirming full scope or impact details as of 16 July 2026.
  • The number of live Enterprise instances running multi-issuer token exchange configurations is unknown; the feature's preview status suggests limited but non-zero deployment.

Vulnerability flow

Defender-oriented path reconstructed only from sourced report findings. Unknown stages are omitted.

AccessAuthenticated user holding a valid token issued by any of the external signing keys registered in N8N_TOKEN_EXCHANGE_TRUSTED_KEYS on the target Enterprise instance.
ComponentToken exchange authentication layer (Enterprise OEM embedding feature, RFC 8693 implementation); configuration key N8N_TOKEN_EXCHANGE_TRUSTED_KEYS.
MechanismJWT identity resolution uses only the sub claim to match incoming tokens to local n8n accounts, omitting the iss claim in violation of RFC 7519's requirement that subject uniqueness is scoped to the issuing party.
ImpactUnauthorised access to another user's n8n account and all workflows, credentials, and integrations accessible under that account without knowledge of the victim's password.
DetectionReview n8n authentication logs for token exchange sessions where the same sub value appears against different issuer origins, or for successful logins at unusual times that correlate with token exchange rather than direct authentication.
MitigationUpgrade to n8n 2.27.4 or 2.28.1; if patching is deferred, reduce trusted issuers to one or disable the token exchange feature flag.
Exploitation status

No confirmed active exploitation or public proof-of-concept; CISA SSVC assessment dated 13 July 2026 records exploitation status as none for CVE-2026-59208, consistent with an EPSS score of 0.00343 (26th percentile).

Research began with parallel searches for the two stated CVEs and a direct fetch of the source THN article to establish a baseline of claims requiring corroboration. Vendor advisories on GitHub were fetched for both CVEs to obtain authoritative scoring, affected versions, and reporter attribution. NVD records were fetched independently to check for scoring divergence and CISA exploitation status. A targeted search for proof-of-concept code and actor interest found no PoC for CVE-2026-59208, consistent with the low EPSS score and CISA's none exploitation rating. The investigation concludes that both vulnerabilities are credibly documented, patched, and currently unexploited in the wild.

  1. What are the confirmed details of CVE-2026-59208 and which GitHub advisory covers it?
    Searched for 'CVE-2026-59208 n8n token exchange vulnerability advisory' and 'n8n CVE-2026-59208 GitHub advisory GHSA token exchange issuer'

    Identified GHSA-mq3m-f8x3-579w as the primary advisory; confirmed CVSS 4.0 7.6 HIGH and reporter bearsyankees (Strix). Also found GHSA-2j5h-858j-5mpf for CVE-2026-54305.

    why Locating the advisory GHSA ID before fetching provides a ground truth to verify against other sources.

  2. What does the THN source article actually assert and does it cite primary sources I can verify?
    Fetched The Hacker News article
    thehackernews.com β†—

    Confirmed affected versions (below 2.27.4 and 2.28.0; fixed in 2.27.4 and 2.28.1), patch date 24 June 2026, CVE publication date 9 July 2026, CISA exploitation=none as of 13 July 2026, and no public PoC found as of 16 July 2026.

    why The article is untrusted source material; fetching it directly confirms its actual claims before using them as leads.

  3. Does the GitHub advisory GHSA-mq3m-f8x3-579w confirm all CVE-2026-59208 technical parameters?
    Fetched GitHub security advisory for CVE-2026-59208
    github.com β†—

    Confirmed CVSS:4.0 AV:N/AC:L/AT:P/PR:L/UI:N/VC:H/VI:H/VA:N giving 7.6 HIGH; affected versions confirmed; reporter listed as bearsyankees; no PoC referenced.

    why GitHub is the CNA for this CVE; this advisory is the highest-authority source for its technical parameters.

  4. What does NVD record for CVE-2026-59208 and does it confirm CISA exploitation status?
    Fetched NVD record for CVE-2026-59208
    nvd.nist.gov β†—

    NVD assigns CVSS 3.1 6.8 MEDIUM (versus GitHub 4.0 7.6 HIGH); CWE-287 and CWE-346; CISA exploitation status confirmed none as of 13 July 2026.

    why Corroborates absence of active exploitation and surfaces the scoring discrepancy between CVSS versions, which is relevant for defenders triaging urgency.

  5. What does the GitHub advisory confirm for CVE-2026-54305 and who reported it?
    Fetched GitHub security advisory GHSA-2j5h-858j-5mpf for CVE-2026-54305
    github.com β†—

    CVE-2026-54305 is a distinct missing-authorisation flaw in Enterprise Dynamic Credentials endpoints; reporters are Solidscripting and Har1sh-k; fixed in 1.123.55, 2.25.7, 2.26.2; CVSS 4.0 8.9 HIGH.

    why Confirms the companion vulnerability has a different mechanism and distinct researcher attribution, ruling out a single coordinated disclosure.

  6. Does an independent registry advisory corroborate CVE-2026-54305 scope?
    Fetched GitLab npm advisory for CVE-2026-54305
    advisories.gitlab.com β†—

    Confirmed affected versions, fixed versions, CVSS 9.9 CRITICAL (3.1), CWE-200 and CWE-284; description consistent with GitHub advisory.

    why Provides an independent corroboration source outside the vendor's own advisory system.

  7. Is there any public proof-of-concept or threat actor interest in CVE-2026-59208?
    Searched for 'n8n CVE-2026-59208 proof of concept exploit PoC bearsyankees strix'

    No PoC found for CVE-2026-59208; search results surface a PoC for an older unrelated n8n CVE (CVE-2025-68613) only. No actor chatter identified.

    why Absence of PoC corroborates CISA exploitation=none and the low EPSS score, supporting a standard-urgency patch recommendation rather than emergency response.

Targetsn8n Enterprise OEM deployments with token exchange enabled and multiple trusted issuers configuredn8n Enterprise deployments with the Dynamic Credentials feature enabled

Research coverage

All 68 registered source leaves were evaluated for this run: 61 completed, 0 were unavailable, 0 failed and 7 were disabled. For this story, 5 registered sources supplied useful evidence (2 primary, 2 corroborating, 1 contextual and 0 PoC/exploit references). 56 completed sources contained no matched information for this story.

Primary evidence Independent corroboration Operational context PoC reference Checked β€” no match Unavailable Failed Disabled
Complete source-by-source audit 68 sources
SourceRun resultValueWhy it was useful β€” or not
NVDcve ok900 records Primary evidence2 matched items Supplied a vendor or government advisory opened and verified during focused research.
The Hacker Newsnews ok8 records Primary evidence1 matched items Published the source report used to frame and date the event.
CISA Alertsnews ok empty0 records Corroborating1 matched items A page from this source was opened and verified during focused research.
CISA KEVkev ok1647 records Corroborating1 matched items A page from this source was opened and verified during focused research.
FIRST EPSSepss ok Context1 matched items Added exploitation-probability context; EPSS does not itself prove exploitation.
AlienVault OTXdark_web ok10 records Checked β€” no match The source completed, but none of its retained records matched this story.
BleepingComputernews ok9 records Checked β€” no match The source completed, but none of its retained records matched this story.
CIRCL CVEcve ok30 records Checked β€” no match The source completed, but none of its retained records matched this story.
Cisco PSIRTvendor_advisory ok5307 records Checked β€” no match The source completed, but none of its retained records matched this story.
Cisco Talosnews ok1 records Checked β€” no match The source completed, but none of its retained records matched this story.
deepdarkCTI CVE most exploiteddeepdarkcti ok94 records Checked β€” no match The source completed, but none of its retained records matched this story.
deepdarkCTI Discorddeepdarkcti ok7 records Checked β€” no match The source completed, but none of its retained records matched this story.
deepdarkCTI exploitsdeepdarkcti ok24 records Checked β€” no match The source completed, but none of its retained records matched this story.
deepdarkCTI forumsdeepdarkcti ok256 records Checked β€” no match The source completed, but none of its retained records matched this story.
deepdarkCTI malware as a servicedeepdarkcti ok7 records Checked β€” no match The source completed, but none of its retained records matched this story.
deepdarkCTI malware samplesdeepdarkcti ok3 records Checked β€” no match The source completed, but none of its retained records matched this story.
deepdarkCTI marketsdeepdarkcti ok127 records Checked β€” no match The source completed, but none of its retained records matched this story.
deepdarkCTI phishingdeepdarkcti ok19 records Checked β€” no match The source completed, but none of its retained records matched this story.
deepdarkCTI ransomware gangsdeepdarkcti ok661 records Checked β€” no match The source completed, but none of its retained records matched this story.
deepdarkCTI RATsdeepdarkcti ok1 records Checked β€” no match The source completed, but none of its retained records matched this story.
deepdarkCTI Telegram infostealerdeepdarkcti ok130 records Checked β€” no match The source completed, but none of its retained records matched this story.
deepdarkCTI Telegram threat actorsdeepdarkcti ok1005 records Checked β€” no match The source completed, but none of its retained records matched this story.
deepdarkCTI Twitter threat actorsdeepdarkcti ok39 records Checked β€” no match The source completed, but none of its retained records matched this story.
DNSDumpster domain IOC enrichmentresearch ok1 records Checked β€” no match The source completed, but none of its retained records matched this story.
Exploit-DBexploit_reference ok empty0 records Checked β€” no match The source completed but returned no records in the collection scope.
Fortinet PSIRTvendor_advisory disabled Disabled Disabled in the source registry; no check was attempted.
GitHub topic: cveresearch ok empty0 records Checked β€” no match The source completed but returned no records in the collection scope.
GitHub topic: exploitresearch ok empty0 records Checked β€” no match The source completed but returned no records in the collection scope.
GitHub topic: penetration-testingresearch ok empty0 records Checked β€” no match The source completed but returned no records in the collection scope.
GitHub topic: pocresearch ok empty0 records Checked β€” no match The source completed but returned no records in the collection scope.
GitHub topic: vulnerabilityresearch ok empty0 records Checked β€” no match The source completed but returned no records in the collection scope.
GreyNoiseexploit_reference ok empty0 records Checked β€” no match The source completed but returned no records in the collection scope.
KrebsOnSecuritynews ok empty0 records Checked β€” no match The source completed but returned no records in the collection scope.
LinkedIn RSS proxy feeds (disabled)research disabled Disabled Disabled in the source registry; no check was attempted.
MalwareBazaardark_web ok2 records Checked β€” no match The source completed, but none of its retained records matched this story.
Mastodon #cveresearch ok20 records Checked β€” no match The source completed, but none of its retained records matched this story.
Mastodon #cybersecurityresearch ok10 records Checked β€” no match The source completed, but none of its retained records matched this story.
Mastodon #exploitresearch ok11 records Checked β€” no match The source completed, but none of its retained records matched this story.
Mastodon #infosecresearch ok20 records Checked β€” no match The source completed, but none of its retained records matched this story.
Mastodon #malwareresearch ok20 records Checked β€” no match The source completed, but none of its retained records matched this story.
Mastodon #ransomwareresearch ok20 records Checked β€” no match The source completed, but none of its retained records matched this story.
Mastodon #threatintelresearch ok4 records Checked β€” no match The source completed, but none of its retained records matched this story.
Mastodon #vulnerabilityresearch ok20 records Checked β€” no match The source completed, but none of its retained records matched this story.
Metasploit module metadataexploit_reference ok empty0 records Checked β€” no match The source completed but returned no records in the collection scope.
Microsoft MSRCvendor_advisory ok1583 records Checked β€” no match The source completed, but none of its retained records matched this story.
Microsoft Securitynews ok2 records Checked β€” no match The source completed, but none of its retained records matched this story.
MISP Galaxyresearch ok empty0 records Checked β€” no match The source completed but returned no records in the collection scope.
MISP threat actor galaxyactor ok0 records Checked β€” no match The source completed, but none of its retained records matched this story.
Palo Alto Networks PSIRTvendor_advisory ok25 records Checked β€” no match The source completed, but none of its retained records matched this story.
ProjectDiscovery nuclei templatesexploit_reference ok empty0 records Checked β€” no match The source completed but returned no records in the collection scope.
Rapid7news ok1 records Checked β€” no match The source completed, but none of its retained records matched this story.
Reddit r/AskNetsec (pending API approval)research disabled Disabled Disabled in the source registry; no check was attempted.
Reddit r/cybersecurity (pending API approval)research disabled Disabled Disabled in the source registry; no check was attempted.
Reddit r/malware (pending API approval)research disabled Disabled Disabled in the source registry; no check was attempted.
Reddit r/netsec (pending API approval)research disabled Disabled Disabled in the source registry; no check was attempted.
Reddit r/ReverseEngineering (pending API approval)research disabled Disabled Disabled in the source registry; no check was attempted.
SANS ISCnews ok1 records Checked β€” no match The source completed, but none of its retained records matched this story.
Shadowserver public aggregate honeypot observationsexploit_reference ok empty0 records Checked β€” no match The source completed but returned no records in the collection scope.
Shodanresearch ok empty0 records Checked β€” no match The source completed but returned no records in the collection scope.
Sigma Rulesresearch ok empty0 records Checked β€” no match The source completed but returned no records in the collection scope.
Sophos IOCsresearch ok empty0 records Checked β€” no match The source completed but returned no records in the collection scope.
ThreatFoxthreat_intelligence ok100 records Checked β€” no match The source completed, but none of its retained records matched this story.
UK NCSCnews ok empty0 records Checked β€” no match The source completed but returned no records in the collection scope.
Unit42 IOCsresearch ok empty0 records Checked β€” no match The source completed but returned no records in the collection scope.
URLhausdark_web ok10 records Checked β€” no match The source completed, but none of its retained records matched this story.
VirusTotal Community IOC enrichmentresearch ok3 records Checked β€” no match The source completed, but none of its retained records matched this story.
VulnCheck KEVkev ok500 records Checked β€” no match The source completed, but none of its retained records matched this story.
Vulnerability Lookupcve ok30 records Checked β€” no match The source completed, but none of its retained records matched this story.
Additional verified pages 7 opened outside the registered collection
Vulnerability & exploitation1
CVE-2026-54305 EPSS 0.3% 26th percentile exploitation probability
Vendor & gov advisories5
Cross-Issuer Token Exchange Account Binding via Subject-Only Identity Resolution β€” GHSA-mq3m-f8x3-579w github.com β†—

Primary vendor advisory for CVE-2026-59208; CVSS 4.0 7.6 HIGH, CNA is GitHub, no PoC referenced

Cross-Tenant Credential Takeover via Dynamic Credentials EE Endpoints β€” GHSA-2j5h-858j-5mpf github.com β†—

Primary vendor advisory for CVE-2026-54305; CVSS 4.0 8.9 HIGH, distinct missing-authorisation flaw on Enterprise Dynamic Credentials endpoints

CVE-2026-54305 β€” GitLab npm Advisory Database advisories.gitlab.com β†—

Independent registry advisory corroborating affected and fixed versions for CVE-2026-54305

CVE-2026-59208 β€” NVD nvd.nist.gov β†—

NVD record: CVSS 3.1 6.8 MEDIUM, CWE-287 and CWE-346; CISA exploitation status none as of 13 July 2026

CVE-2026-54305 β€” NVD nvd.nist.gov β†—

NVD record: CVSS 3.1 9.9 CRITICAL, CWE-200 and CWE-284; no exploitation noted

Analysis & research2
n8n Token Exchange Flaw Could Let Attackers Log In as Users From Another Issuer β€” The Hacker News thehackernews.com β†—

Source article covering both CVEs; confirms no public PoC found by THN as of 16 July 2026 and notes CISA exploitation=none

CVE-2026-59208 β€” THREATINT cve.threatint.com β†—

Confirms CVE timeline: reserved 2 July 2026, published 9 July 2026, updated 14 July 2026