A public-facing AI workshop where anyone can swap the blueprints and run their own code on the server
Langflow is an open-source visual builder for AI agents and retrieval-augmented generation (RAG) workflows. CVE-2026-110186 affects Langflow OSS versions 1.0.0 through 1.12.8. The flaw allows an unauthenticated remote attacker to abuse the Model Context Protocol (MCP) tool enumeration path, causing the backend to generate and execute attacker-controlled code without proper validation. The result is arbitrary code execution in the context of the Langflow service account.
IBM's 9.8 CVSS score is technically justified: network attack vector, no privileges, no user interaction, full confidentiality/integrity/availability impact. In practice, however, Langflow is typically an internal development or line-of-business service, not an internet-facing asset. The reachable attack surface is much smaller than the CVSS metrics suggest, but this remains a high-priority internal-network RCE.
5 steps from start to impact.
Identify a reachable Langflow instance
- Network route from attacker to Langflow HTTP endpoint
- Langflow is rarely exposed publicly; most instances sit on internal development subnets
Reach the MCP tool enumeration endpoint without authentication
- Default or misconfigured authentication on the Langflow instance
- A reverse proxy or WAF enforcing authentication in front of Langflow can block this step
Inject code through tool parameters or generated code paths
- Langflow instance has vulnerable code-generation or MCP tool execution components enabled
- Some deployments may not load the affected code-generation component if it is disabled or unused
Achieve command execution as the Langflow service account
- Successful injection and execution of attacker-controlled code
- Properly configured container isolation or a low-privileged service account can limit post-exploitation impact
Pivot via connected LLM API keys and internal data sources
- Langflow configured with external services, API keys, or connected data sources
- Least-privilege credentials and network segmentation can reduce the blast radius
- Disabling LANGFLOW_AUTO_LOGIN alone does not mitigate this CVE; the code injection is independent of the auto-login bypass.
- A WAF in front of the UI may not parse or block MCP tool payloads unless custom rules are written.
- Running Langflow in Docker does not prevent host impact if volumes or API credentials are mounted.
The supporting signals.
| In-the-wild status | No active exploitation reported; CISA KEV not listed. |
|---|---|
| PoC availability | No public PoC identified in reviewed sources; CVE is newly published. |
| EPSS | 0.00622 (0.6%) — low predicted immediate exploitation probability. |
| KEV | Not listed in CISA KEV. |
| CVSS | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H = 9.8 Critical. |
| Affected versions | Langflow OSS 1.0.0 through 1.12.8; fixed in 1.13.0. |
| Exposure data | No GreyNoise/Shodan/Censys mass-exploitation data specific to this CVE yet; Langflow is typically internal. |
| Disclosure | 2026-10-29 (NVD); IBM advisory published 2026-10-28. |
| Reporter | IBM PSIRT. |
| CWE | CWE-94: Improper Control of Generation of Code ('Code Injection'). |
Sources.
- IBM Security Bulletin: Langflow OSS affected by multiple vulnerabilities
- CIRCL Vulnerability-Lookup CVE-2026-110186
- Langflow: Kritische Lücken erlauben Auth-Bypass und Codeausführung bis 1.12.8
- Alerta Integrada de Seguridad Digital 110-2026-CNSD
- Langflow Releases (GitHub)
- IBM Security Advisory ADV2026_661
Why this verdict
- Baseline: Unauthenticated RCE with CVSS 9.8 is technically correct; the vulnerable code path requires no privileges or user interaction.
- Friction: Langflow is rarely internet-exposed; most deployments sit on internal AI/ML subnets, so the reachable population is a fraction of the installed base. EPSS 0.00622 and no KEV/no public PoC further indicate no imminent mass exploitation.
- Role multiplier: Typical high-value deployments are internal workflow builders with access to LLM API keys, vector DBs, and document stores. A successful exploit yields host compromise and data egress/pivot, but not domain/fleet/hypervisor-scale impact; that caps the verdict at HIGH rather than CRITICAL.
Why not higher?
Not CRITICAL because Langflow is not a canonical high-value-role component (not an IdP, hypervisor, PAM, edge, or CI/CD control plane), and there is no evidence of internet-scale exposure or active exploitation. The typical compromised instance gives a single app-tier host, not fleet-wide or domain takeover.
Why not lower?
Cannot go below HIGH because an unauthenticated, no-user-interaction RCE in an internal AI workflow server has immediate event escalation potential and access to sensitive API keys/data. Once an attacker has any internal network foothold, this becomes a convenient pivot.
Crowdsourced verification payload.
Run on any host where Langflow is installed via pip or accessible Python environment; requires only local read access to package metadata. Example invocation: python3 check_cve_2026_110186.py. Outputs VULNERABLE, PATCHED, or UNKNOWN.
#!/usr/bin/env python3
"""Check Langflow version for CVE-2026-110186 vulnerability."""
import sys
try:
from importlib.metadata import version
installed = version('langflow')
except Exception:
try:
import pkg_resources
installed = pkg_resources.get_distribution('langflow').version
except Exception:
print('UNKNOWN: langflow not installed or not importable')
sys.exit(2)
def parse(v):
parts = v.split('.')[:3]
return tuple(int(x) for x in parts)
try:
iv = parse(installed)
vuln_min = (1,0,0)
vuln_max = (1,12,8)
patch = (1,13,0)
if vuln_min <= iv <= vuln_max:
print(f'VULNERABLE: langflow {installed} is in affected range')
sys.exit(1)
elif iv >= patch:
print(f'PATCHED: langflow {installed} is >= 1.13.0')
sys.exit(0)
else:
print(f'UNKNOWN: langflow {installed} not classified')
sys.exit(2)
except Exception as e:
print(f'UNKNOWN: cannot parse version {installed}: {e}')
sys.exit(2)