Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:N/VA:N/SC:L/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Authenticated workflow editor required (PR:L); confidentiality limited to env vars in runner process (C:L); no integrity or availability impact; scope unchanged.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
2DescriptionCVE.org
n8n before 2.25.7 and 2.26.x before 2.26.2 contains an abstract syntax tree (AST) security validator bypass in the Python Code node. An authenticated user with permission to create or modify workflows containing a Python Code node can bypass the validator and access the task executor module namespace. The issue only affects self-hosted instances where the Python Task Runner is enabled; where N8N_BLOCK_RUNNER_ENV_ACCESS is configured to allow it, this can disclose environment variables accessible to the task runner process.
AnalysisAI
The Python Code node in n8n allows authenticated workflow editors to bypass the AST security validator by crafting Python code that evades an incomplete blocklist (CWE-184), reaching the task executor module namespace. Affected self-hosted n8n deployments running versions before 2.25.7 or 2.26.x before 2.26.2 with the Python Task Runner enabled are exposed to environment variable disclosure when N8N_BLOCK_RUNNER_ENV_ACCESS is not set to restrict access, potentially leaking API keys, database credentials, or other secrets injected at process startup. No public exploit code exists and no active exploitation has been confirmed at time of analysis.
Technical ContextAI
n8n is an open-source workflow automation platform that supports user-defined logic in Code nodes, including a Python Code node executed by a dedicated Python Task Runner subprocess. To restrict dangerous operations in user-supplied scripts, n8n implements an AST-based security validator that inspects the parsed syntax tree before execution. CWE-184 (Incomplete List of Disallowed Inputs) is the root cause: the validator's blocklist does not enumerate all code paths capable of reaching the task executor's module namespace, so a crafted AST node that is not on the blocklist passes validation and executes with runner-level access. The Python Task Runner operates as a separate process whose environment may contain secrets propagated via environment variables at process startup. The CPE identifier cpe:2.3:a:n8n:n8n:*:*:*:*:*:*:*:* covers all n8n application versions across all platforms.
RemediationAI
Upgrade n8n to version 2.25.7 or later on the 2.25.x track, or to 2.26.2 or later on the 2.26.x track, per the vendor security advisory at https://github.com/n8n-io/n8n/security/advisories/GHSA-jwm3-qcfw-c5pp. If an immediate upgrade is not feasible, set the N8N_BLOCK_RUNNER_ENV_ACCESS environment variable to its restrictive value to prevent the task runner from exposing environment variables to user code - this eliminates the primary sensitive-data disclosure path without disabling the runner entirely, though it may affect workflows that intentionally consume environment variables. Alternatively, disabling the Python Task Runner feature entirely removes all attack surface for this vulnerability but prevents use of Python Code nodes. Restricting workflow-create and workflow-edit permissions to a minimal set of trusted users reduces the attacker pool but does not remediate the underlying validator bypass.
Wazuh SIEM platform versions 4.4.0 through 4.9.0 contain an unsafe deserialization vulnerability in the DistributedAPI t
BentoML version 1.4.2 and earlier contains an unauthenticated remote code execution vulnerability through insecure deser
pgAdmin 4 contains critical remote code execution vulnerabilities in the Query Tool download and Cloud Deployment endpoi
The renderLocalView function in render/views.py in graphite-web in Graphite 0.9.5 through 0.9.10 uses the pickle Python
BentoML is a Python library for building online serving systems optimized for AI apps and model inference. Rated critica
OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph
pyLoad download manager version prior to 0.5.0b3.dev77 exposes the Flask SECRET_KEY through an unauthenticated endpoint.
Langflow (a visual LLM pipeline builder) contains a critical unauthenticated code execution vulnerability (CVE-2026-3301
In Mercurial before 4.1.3, "hg serve --stdio" allows remote authenticated users to launch the Python debugger, and conse
Unauthenticated remote code execution affects Kestra OSS (the open-source event-driven orchestration platform) prior to
Unauthenticated remote code execution in Marimo ≤0.20.4 allows attackers to execute arbitrary system commands via the `/
pyLoad is the free and open-source Download Manager written in pure Python. Rated medium severity (CVSS 5.3), this vulne
Same weakness CWE-184 – Incomplete List of Disallowed Inputs
View allSame technique Information Disclosure
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-40453
GHSA-x2rh-rhm8-cv8v