Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate to Langflow instance
-
DeliveryCraft component input option with malicious __repr__
-
ExploitSave custom component via API
-
ExecutionTrigger ComponentToolkit.get_tools() conversion
-
Persisteval() executes payload
-
ImpactCode execution on server
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Eval input sanitization
MITRE ATT&CK
1 technique across 1 tactic: Execution The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires an authenticated account on the Langflow instance with the ability to create or save custom components through the API. The attacker must supply a Python object with a crafted __repr__ method into a component input options list, and code execution fires only when that component is converted into a LangChain tool via ComponentToolkit.get_tools() (including on custom-component save). Limiting factors: authentication is mandatory (PR:H per vendor), attack complexity is high (AC:H) and a specific attack requirement applies (AT:P) due to the object-crafting and interpolation path; there is no unauthenticated or default-configuration exposure. Note that in Langflow the privilege needed to reach this sink often already permits legitimate Python execution via custom components, narrowing the practical additional risk. |
| Impact | This is a code-injection flaw (CWE-95) via an unsafe eval() sink in Langflow's schema.py, but real-world risk is bounded by steep exploitation prerequisites and a design context that makes marginal impact small. The vendor CVSS 4.0 vector (AV:N/AC:H/AT:P/PR:H/UI:N/VC:L/VI:L/VA:L, score 2.1) signals network reach but with high attack complexity, a specific attack requirement, and high privileges - an authenticated actor who can already save custom components. This is significant because Langflow custom components execute Python by design, so an attacker at that privilege level already has legitimate code-execution paths; the eval() bug adds an alternative sink rather than a new privilege boundary crossing, which explains the vendor's low VC/VI/VA:L ratings despite the 'RCE' tag. No EPSS score, no CISA KEV listing, and no public exploit code were provided, so there is no evidence of active or opportunistic exploitation. My independent view is that the technical impact of eval()-based execution is higher than L (I assess C/I/A:H), but the authentication and complexity gates keep this a low-to-moderate operational priority rather than an urgent patch. Note a tension worth verifying with the vendor: the description says 'authenticated attackers' and the vector uses PR:H, yet saving custom components is a common authenticated-user capability, so PR:L may be more accurate for many deployments. |
| Exploit ScenarioDerived | An authenticated Langflow user crafts a custom component whose input options list contains a Python object with a malicious __repr__ method, then saves it through the API. When the component is converted into a LangChain tool via ComponentToolkit.get_tools(), the option is interpolated into a Literal type string and passed to eval(), executing the attacker's payload on the server. No public exploit code was identified at time of analysis. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 28, 2026
Authenticated users of Langflow instances prior to 1.12.0 can convert crafted component input options into arbitrary Python code execution because schema.py interpolates those options into a Literal type string that is handed directly to eval() without safe-evaluation controls (CWE-95). The sink fires when an affected component is turned into a LangChain tool via ComponentToolkit.get_tools(), which also occurs during custom-component saves through the API, so an attacker must already hold a valid account able to create or save components (PR:L in the assessed CVSS 3.1 vector; PR:H in the vendor's CVSS 4.0 vector) and must satisfy the high-complexity object-crafting and interpolation path (AC:H/AT:P). No public exploit code has been identified at time of analysis and the issue is not in CISA KEV; practical marginal risk is limited because the privileges required to reach the sink typically already allow legitimate Python execution through Langflow's custom-component feature.
RemediationAI
Upgrade to Langflow 1.12.0, the vendor-released fix referenced by GHSA-33p4-w7j3-33mw and the release notes at https://github.com/langflow-ai/langflow/releases#release-v1.12.0; patching is the only remediation that removes the unsafe eval() sink in schema.py. Until upgrading, the most effective compensating control is to restrict custom-component creation and save permissions to fully trusted operators, since the vulnerability only triggers when a component with attacker-influenced input options is saved or converted into a LangChain tool via ComponentToolkit.get_tools() - the trade-off is that this blocks legitimate custom-component development workflows. As a secondary measure, disable or gate the custom-component save endpoint at the reverse proxy so that only known-good callers can reach it, accepting that this breaks API-driven component authoring; blocking or filtering component options lists that contain non-primitive objects reduces the attack surface but degrades dynamic select inputs in the UI. Note that revoking the ability to create custom components also removes a capability that already permits legitimate Python execution by design, so the operational cost is real but the residual risk of leaving the sink unpatched on an authenticated multi-tenant instance is not insignificant.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The root cause is CWE-95 (improper neutralization of directives in dynamically evaluated code, commonly 'eval injection'). Langflow's schema.py builds a Python Literal type annotation from a component's selectable input options; when those options are interpolated into the generated type string and passed to eval() without a safe parser or AST validation, any evaluation side effects inherent to the interpolated objects are executed. A Python object whose __repr__ method carries attacker-supplied logic is therefore sufficient to trigger code execution during string interpolation/formatting. The reachable trigger surface is ComponentToolkit.get_tools(), which serializes and converts a component into a LangChain tool, a code path that also runs when custom components are saved through the Langflow API. Per the CPE cpe:2.3:a:langflow-ai:langflow:*:*:*:*:*:*:*:* the flaw covers the whole Langflow codebase lineage identified by the vendor, with the fix landing in the 1.12.0 release; the vendor's CVSS 4.0 vector (AV:N/AC:H/AT:P/PR:H/UI:N/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N, score 2.1) and our independent CVSS 3.1 assessment (AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H) agree on network reachability, high attack complexity, a specific attack prerequisite, and mandatory authentication, differing mainly on the privilege level assumed for the attacker.
Know when Langflow gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:H/AT:P/PR:H/UI:N/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N
Network-reachable but requires an authenticated user (PR:L) and complex object-crafting into the eval path (AC:H); successful eval() yields full server code execution, so C/I/A:H.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
Langflow 1.0.16 before 1.12.0 and 0.0.94 before 1.12.0 contain an unsafe eval() vulnerability in schema.py that allows authenticated attackers to achieve code execution by placing a Python object with a malicious __repr__ method into component input options lists. The eval() sink is triggered when a component is converted into a LangChain tool via ComponentToolkit.get_tools(), including during custom component saves through the API, by interpolating options into a Literal type string that is passed directly to eval() without safe evaluation controls.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Code injection occurs when an application accepts user input and passes it directly into a language interpreter or evaluator without proper sanitization.
Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.
Langflow before 1.3.0 allows unauthenticated remote code injection through the /api/v1/validate/code endpoint, enabling
Langflow has a third RCE vulnerability via exec_globals (EPSS 10.0%) allowing inclusion of untrusted code that executes
Account takeover and remote code execution in Langflow AI workflow platform versions ≤1.6.9 due to a CORS misconfigurati
Langflow has a code injection vulnerability in the code component (EPSS 2.6%) enabling remote code execution through the
Langflow has an eval injection in eval_custom_component_code (EPSS 2.0%) enabling remote code execution through crafted
Code injection in Langflow CSV Agent node before 1.8.0. The node hardcodes allow_dangerous_code=True, enabling arbitrary
Langflow through 0.6.19 allows remote code execution if untrusted users are able to reach the "POST /api/v1/custom_compo
OS command injection in Langflow's MCP stdio transport allows an attacker who can reach the MCP server configuration end
langflow <=1.0.18 is vulnerable to Remote Code Execution (RCE) as any component provided the code functionality and the
langflow v1.0.12 was discovered to contain a remote code execution (RCE) vulnerability via the PythonCodeTool component.
Langflow before 1.7.0.dev45 exposes multiple API endpoints without authentication, allowing unauthenticated access to us
An unauthenticated shell injection vulnerability exists in Langflow's GitHub Actions CI/CD workflows, allowing attackers
EUVD-2026-88338
NVD
CVE.org
EPSS
Vulnrichment
GitHub
VulDB
Exploit-DB