---
id: "GHSA-426f-xmcv-g8pg"
page: "https://infrastack.ai/live/GHSA-426f-xmcv-g8pg"
kind: "vulnerability"
aliases: ["GHSA-426f-xmcv-g8pg"]
title: "OAuth Account Hijack in the End-User Credential Connect Flow via Unauthenticated Callback"
severity: "medium"
cvss: 4.8
epss: null
exploited: false
status: "open"
category: "ai-tooling"
products: [{"name": "n8n", "fixed": [">= 2.46.1"], "affected": "< 2.46.1", "ecosystem": "npm"}, {"name": "n8n", "fixed": [">= 2.45.5"], "affected": "< 2.45.5", "ecosystem": "npm"}, {"name": "n8n", "fixed": [">= 3.0.1"], "affected": "< 3.0.1", "ecosystem": "npm"}]
ecosystems: ["npm"]
tags: ["ai-tooling", "enterprise", "n8n", "oauth", "self-hosted"]
not_affected_if: ["default-config", "dynamic-credentials-disabled", "no-resolvable-oauth2-credentials"]
published_at: "2026-10-28T08:48:31+00:00"
first_seen_at: "2026-11-09T22:53:25+00:00"
updated_at: "2026-11-09T22:57:07+00:00"
sources: [{"source": "ghsa-repo", "url": "https://github.com/n8n-io/n8n/security/advisories/GHSA-426f-xmcv-g8pg", "first_seen_at": "2026-11-09T22:53:25+00:00"}]
exploit_sources: []
---

# OAuth Account Hijack in the End-User Credential Connect Flow via Unauthenticated Callback

Link for people: https://infrastack.ai/live/GHSA-426f-xmcv-g8pg (this .md is for agents)

n8n's dynamic OAuth2 credential connect flow did not check that the browser completing consent belonged to the user who started it. An attacker with editor access can send the authorization link to someone else, and that person's OAuth tokens get stored where the attacker's workflows can use them as the victim.

_Summary, check and fix written by a model from the sources; labelled as such._

## Affected

- npm:n8n affected < 2.46.1 fixed >= 2.46.1
- npm:n8n affected < 2.45.5 fixed >= 2.45.5
- npm:n8n affected < 3.0.1 fixed >= 3.0.1

## How to check

- Check the installed n8n version with `n8n --version` or the `npm ls n8n` output.
- Confirm whether Enterprise resolvable OAuth2 credentials are configured in n8n.
- Check whether the `N8N_OAUTH_BROWSER_BINDING` environment variable is set to `true`.

## Fix

- n8n `2.46.1` for the 2.46 line
- n8n `2.45.5` for the 2.45 line
- n8n `3.0.1` for the 3.x line
- Until upgrading, the advisory suggests setting `N8N_OAUTH_BROWSER_BINDING=true`, but it does not fully remediate the risk.

## Timeline

- 2026-11-09T22:53:25+00:00 ghsa-repo https://github.com/n8n-io/n8n/security/advisories/GHSA-426f-xmcv-g8pg

## Documents

- [advisory] Maintainer's advisory: github.com https://github.com/n8n-io/n8n/security/advisories/GHSA-426f-xmcv-g8pg

## From the sources

## Impact

The OAuth2 credential callback did not require the browser completing the dynamic-credential connect flow to be authenticated as the user who started it. A member with access to a resolvable OAuth2 credential could send the provider authorization URL to another person. If that person completed the consent without an active n8n session, their provider tokens were stored under the member's identity, and the member's workflows could then act as the victim at the OAuth provider.

This affects Enterprise instances with resolvable OAuth2 credentials configured.

## Patches

The issue has been fixed in n8n versions 2.46.1, 2.45.5 and 3.0.1. Users should upgrade to one of these versions or later to remediate the vulnerability.

## Workarounds

If upgrading is not immediately possible, administrators should consider the following temporary mitigations:
- Set `N8N_OAUTH_BROWSER_BINDING=true` to enforce browser-session binding on OAuth callbacks.
- Restrict n8n instance access to fully trusted users only.
- Audit team project memberships and remove editor access from any users who are not fully trusted.
- Disable the dynamic credentials feature if it is not required.

These workarounds do not fully remediate the risk and should only be used as short-term mitigation measures.

---

_Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai_
