// threat brief
Langflow MCP stdio command injection: whatever command the server config names, the host runs
- CVSS
- 9.9 CRITICAL
- CISA KEV
- Not listed
- Weakness
- CWE-78
- Topics
- AI security
AI review 2026-10-13 (not human-reviewed)Command tests: none yetReproduced: not yetVerification record ↓
Langflow before 1.10.3 runs any command in MCP stdio configs, letting users, or anyone reaching an exposed default auto-login instance, run code on the host.
| Who is affected | Deployments running langflow 1.1.2 up to (not including) 1.10.3, langflow-base 0.1.2 up to 0.10.3, or lfx before 1.10.3. Versions 1.9.0 to 1.10.2 are only partly fixed and remain affected. |
|---|---|
| What happens | An attacker can run arbitrary commands on the Langflow host as the user the Langflow process runs as (remote code execution). |
| What to do now | Upgrade to Langflow 1.10.3 or later (langflow-base 0.10.3, lfx 1.10.3). If you can't upgrade yet, set LANGFLOW_AUTO_LOGIN=false, keep Langflow off untrusted networks, and give accounts only to trusted users. PlainCVE's advice, because an IBM bulletin lists Langflow OSS 1.0.0–1.10.3 as still affected by other MCP-related flaws, is to go straight to 1.11.0 or later (the official fix for this flaw remains 1.10.3). |
| Affected versions | langflow >= 1.1.2, < 1.10.3; langflow-base >= 0.1.2, < 0.10.3; lfx < 1.10.3 (1.9.0–1.10.2 are only partly fixed and still affected) |
| Fixed versions | langflow 1.10.3 or later (including 1.11.0+), langflow-base 0.10.3, lfx 1.10.3 |
| CVSS vector | Show full vectorCVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H |
| Timeline |
|
Blue team playbook
Check, fix / mitigate, respond, harden. Matching the affected versions does not mean you were compromised, and a check that finds nothing does not prove you are safe; each item says what it can and cannot show. Tagged steps point to where the attack flow below can be stopped.
- 01Check your package versions
You are affected if langflow is below 1.10.3, langflow-base below 0.10.3, or lfx below 1.10.3. Note that 1.9.0–1.10.2 are only partly fixed and still need upgrading. Run the read-only command below in the Python environment Langflow actually uses (for example, activate its virtual environment first; for Docker deployments, run it inside the Langflow container). The command hides error messages, so no output only means these packages are not installed in that environment; it does not mean you are safe, and you may simply be in the wrong environment (PlainCVE's note).
Read-only checkpip show langflow langflow-base lfx 2>/dev/null | grep -iE '^(name|version)' - 02Check whether auto-login is still on
LANGFLOW_AUTO_LOGIN defaults to true; if Langflow is also reachable from outside, the flaw can be used without an account. The vendor documents this setting as development-only. Check the configuration Langflow is actually started with: its .env file, Docker (the docker compose file or environment variables passed to docker run), or the systemd service settings, and confirm LANGFLOW_AUTO_LOGIN is explicitly set to false. If the setting is not there, the default true is in effect (PlainCVE's note).
- 03Watch for unexpected child processes from Langflow
This is TheHackerWire's suggestion; the vendor gives no detection guidance. Remember the command runs as soon as Langflow tries to connect, even if the UI reports a failed start.
- 01Upgrade to Langflow 1.10.3 or later (changes your environment)
The vendor says the issue is fully fixed only in 1.10.3 (and 1.11.0+): the allowlist is enforced where the command runs, and bash -c is gone. The command below changes your environment (it upgrades installed packages); run it in the Python environment Langflow actually uses (for example its virtual environment).
Changes your environmentpip install -U "langflow>=1.10.3" - 02PlainCVE's advice: go straight to 1.11.0 or later
An IBM security bulletin (https://www.ibm.com/support/pages/security-bulletin-langflow-affected-security-vulnerabilities-model-context-protocol-features) lists Langflow OSS 1.0.0–1.10.3 as affected by other MCP-related flaws and recommends upgrading to 1.11.0 or newer. PlainCVE therefore suggests going straight to 1.11.0 or later. This is PlainCVE's advice; the official fix for this flaw remains 1.10.3.
- 03Can't upgrade yet: turn off auto-login and stay off untrusted networks
The vendor advises setting LANGFLOW_AUTO_LOGIN=false and not exposing Langflow directly to untrusted networks.
- 04Give accounts only to trusted users
Vendor advice. On unpatched versions, any logged-in non-admin user can exploit this flaw.
- 01Treat the host as possibly compromised
PlainCVE's suggestion (our sources show no vendor incident-response guidance): if you find suspicious child processes, assume the attacker had everything the Langflow process user can reach, and investigate and clean up on that basis.
- 02Review MCP server configs and flows
PlainCVE's suggestion: review MCP server settings and MCP Tools components embedded in flows for commands you don't recognise. Users of 1.9.0–1.10.2 should pay special attention to flow-embedded configs, since those skip the API check.
- 01Mind the remaining npx / uvx risk
The vendor notes that even on 1.10.3+, the allowlist still lets npx and uvx run any package by default; multi-tenant deployments should apply the extra hardening settings the vendor recommends.
- 02Don't put Langflow directly on the internet
The reporter found several internet-facing Langflow servers that were vulnerable.
Full remediation steps and notes
- Upgrade all three packages (changes your environment). In the Python environment Langflow actually uses, run
pip install -U "langflow>=1.10.3"; if you uselangflow-baseorlfxdirectly, move them to 0.10.3 and 1.10.3 or later. If you’re on 1.9.0–1.10.2, you still need to upgrade: that range is only half fixed. - After upgrading. The vendor notes the allowlist still lets
npxanduvxrun any package by default; shared (multi-tenant) deployments should apply the extra hardening settings the vendor recommends. - Auto-login. The vendor documents
AUTO_LOGINas development-only. PlainCVE suggests setting it tofalsein production whether or not you’ve upgraded. - PlainCVE’s advice: go straight to 1.11.0 or later. An IBM security bulletin lists Langflow OSS 1.0.0–1.10.3 as still affected by other MCP-related flaws and recommends upgrading to 1.11.0 or newer, so PlainCVE suggests going straight to 1.11.0 or later. The official fix for this flaw remains 1.10.3.
Attack flow
Read left to right: this is the order the attack happens in. A blue shield means the step can be stopped; the earlier, the better. Click an icon for details.
Read top to bottom: this is the order the attack happens in. A blue shield means the step can be stopped; the earlier, the better. Tap an icon for details.
- Attacker
Reaches Langflow and gets a user session
The attacker must be able to reach Langflow over the network. With the default LANGFLOW_AUTO_LOGIN=true, an auto-login endpoint hands out a token (a login credential) without a password, so no account is needed; with auto-login off, any logged-in non-admin user can exploit it.
Defense: Set LANGFLOW_AUTO_LOGIN=false, keep Langflow off untrusted networks, and give accounts only to trusted users.
- Attacker
Adds an MCP stdio server config that names an arbitrary command
This can go through the MCP server settings, an MCP Tools component inside a flow, or a tweak (a run-time parameter override). In 1.9.0–1.10.2 only the REST API checks it, so configs embedded in flows or passed as tweaks skip the check.
Defense: Upgrade to 1.10.3+, where the command allowlist is enforced at the point the command is actually run, covering flows and tweaks.
- Your system
When Langflow tries to connect, it launches the command via bash -c
The command runs as soon as Langflow tries to connect to the server (listing servers, loading tools, running the flow), even if the UI says the server failed to start. Older versions had no allowlist and wrapped it in a shell.
Defense: 1.10.3 removes the bash -c wrapper, starts the process directly, and checks again right before launch.
- Your system
The command runs on the host as the Langflow process user
The result is remote code execution with the privileges of the user the Langflow process runs as, not necessarily root.
Defense: TheHackerWire suggests watching for unexpected child processes started by the Langflow user.
Who is affected
| Package (PyPI) | Affected versions | Fixed version |
|---|---|---|
langflow | >= 1.1.2, < 1.10.3 | 1.10.3 (and 1.11.0+) |
langflow-base | >= 0.1.2, < 0.10.3 | 0.10.3 |
lfx | < 1.10.3 | 1.10.3 |
| Situation | Affected? |
|---|---|
| 1.1.2–1.8.x | Affected, with no command checks at all |
| 1.9.0–1.10.2 | Still affected: the API rejects disallowed commands, but configs embedded in flows or passed as tweaks skip that check |
| 1.10.3 or later | Fully fixed, per the vendor |
Default LANGFLOW_AUTO_LOGIN=true and reachable from outside | The vendor advisory GHSA-w794-rj3p-xv45 (the page contains exploit code, so we don’t link it) says it can be exploited without an account |
| Auto-login turned off | Any logged-in non-admin user can still exploit it |
The attacker must be able to reach Langflow over the network and either open the MCP server settings or build a flow with the MCP Tools component.
How it works
Langflow can connect to MCP servers (MCP is a protocol that lets AI call external tools). One connection type is stdio: Langflow starts a program on its own host and talks to it through standard input and output. Which program to start, and with which arguments, is filled in by the user in the configuration.
The problem is that before 1.10.3 Langflow took those fields at face value: there was no allowlist, and the command was wrapped in bash -c and handed to a shell. So “configuring an MCP server” really meant “running any command on the host.” The command runs as soon as Langflow tries to connect to the server (listing servers, loading tools, running the flow), even if the UI says the server failed to start. This is CWE-78 (OS command injection).
The flaw goes back to the MCP Stdio component added in PR #5148 (around 1.1.2–1.4.x). The vendor fixed it in two steps:
- 1.9.0 (PR #12290): added a command allowlist plus argument and environment-variable checks to the REST API’s config model. But the place that actually runs the command had no check and still used
bash -c. - 1.10.3 (PR #14036, commit eba285e): applied the same policy where the command is actually run, covering configs embedded in flows and tweaks, and removed
bash -c, so the process now starts directly without a shell.
The flawed approach (conceptual illustration, not the original source code):
Show code example(python)
# The user's command is handed to a shell unchanged
run(["bash", "-c", f"exec {config.command} {' '.join(config.args)}"])The fixed approach:
Show code example(python)
# Check the allowlist right before launching, and don't use a shell
validate_against_allowlist(config.command, config.args, config.env)
spawn_directly(config.command, config.args)Timeline
| Date | Event |
|---|---|
| 2026-01-11 | OX Security says it reported the issue to Langflow (per OX Security’s own account in its blog post “Mother of all AI supply chains”; that post contains an attack demonstration, so we don’t link it) |
| 2026-03-18 | OX Security says Langflow acknowledged it inside the GHSA report |
| 2026-03-23 | First-step fix PR #12290 opened in the public repo (later shipped in 1.9.0); it describes this MCP stdio command injection and cites GHSA-w794-rj3p-xv45, so under our rules this is the first disclosure |
| 2026-07-13 | Complete fix PR #14036 opened |
| 23 July | 1.10.3 released (GitHub shows no year; 2026 is PlainCVE’s inference) |
| 2026-09-28 | Maintainers publish the vendor advisory GHSA-w794-rj3p-xv45 (per the publication date shown on that advisory page; the page contains exploit code, so we don’t link it. The CVE record’s source.advisory field gives this ID) |
| 2026-10-05 | CVE record published |
| 2026-10-06 | CISA SSVC assessment: exploitation none, automatable no, technical impact total |
| 2026-10-07 | Not in CISA KEV; NVD status “Undergoing Analysis” |
Further reading
- Scoring: the CNA (GitHub) gives CVSS 3.1 9.9, and the vendor advisory GHSA-w794-rj3p-xv45 (the page contains exploit code, so we don’t link it) rates it critical. As of 2026-10-07 NVD is still analysing it, and we found no NVD score.
- Is login needed? The vendor’s own sources differ: PR #12290 says “unauthenticated attackers” could exploit it, with no conditions; the advisory GHSA-w794-rj3p-xv45 (the page contains exploit code, so we don’t link it) says no account is needed only when the default
AUTO_LOGINis on, and the CVSS vector lists low privileges (PR:L). - Exploitation: no source confirms exploitation in the wild or as a zero-day. The reporter found several vulnerable internet-facing servers, but that is not evidence they were attacked.
- Public PoC: the vendor advisory itself includes a proof of concept for 1.5.0–1.8.x (the page contains exploit code, so we don’t link it or reproduce it); TheHackerWire said that, at the time of writing, no standalone exploit had been published in open research repositories.
- Related flaws: an IBM security bulletin covers other Langflow MCP CVEs (such as CVE-2026-17623) but does not mention this one; it lists Langflow OSS 1.0.0–1.10.3 as affected by those flaws and recommends upgrading to 1.11.0 or later. PlainCVE could not establish whether they overlap with this CVE; based on that bulletin, PlainCVE suggests going straight to 1.11.0 or later (see “How to fix”).
- For detection, the vendor gives no guidance; TheHackerWire suggests watching for unexpected child processes started by the Langflow user.
Verification Checked item by item against sources by AI under our review rules, all passed; not human-reviewed and not yet reproduced in our lab
| AI review | 2026-10-13 · review rules |
|---|
Verification records describe the environment and the result only, never reproduction steps or code that could attack other people’s systems. See our policy.
Sources
- CVE / NVD / OSVCVE-2026-105697 record (CVE Services API) · CVE Program, 2026-10-05 · accessed 2026-10-07
- CVE / NVD / OSVNVD API - CVE-2026-105697 · NIST · accessed 2026-10-07
- Patch / releasefix(security): harden MCP stdio configuration (#14036) — commit eba285e · Langflow (GitHub) · accessed 2026-10-07
- Patch / releaseLangflow v1.10.3 release · Langflow (GitHub) · accessed 2026-10-07
- Patch / releasePR #12290 — MCP command allowlist and validation (REST model) · Langflow (GitHub), 2026-03-23 · accessed 2026-10-07First public disclosure of this flaw
- Patch / releasePR #14036 — harden MCP stdio configuration · Langflow (GitHub), 2026-07-13 · accessed 2026-10-07
- NewsCVE-2026-105697: Langflow OS command injection enables unauthenticated remote code execution · TheHackerWire · accessed 2026-10-07
- AdvisorySecurity Bulletin: Langflow affected by security vulnerabilities in Model Context Protocol features · IBM · accessed 2026-10-07
Press brief
In one sentence
Langflow is an open-source tool for building and deploying AI agents and workflows. Versions before 1.10.3 run any command a user writes into an MCP server configuration, letting an attacker execute code on the server; if the instance is reachable from untrusted networks and still uses the default auto-login setting, no account is needed. The CNA scored it CVSS 9.9 (Critical), and the vendor fully fixed it in 1.10.3. As of October 7, 2026, it is not on the US CISA Known Exploited Vulnerabilities list.
Key facts
- Severity
- CVSS 3.1 9.9 (CNA score; NVD still analysing) cveawg.mitre.org
- Fully fixed version
- Langflow 1.10.3 (langflow-base 0.10.3, lfx 1.10.3) cveawg.mitre.org
- First disclosed (project's public PR #12290)
- 2026-03-23 github.com
- CVE published
- 2026-10-05 cveawg.mitre.org
- Vendor advisory
- GHSA-w794-rj3p-xv45 cveawg.mitre.org
Confirmed
- Langflow before 1.10.3 runs any command in an MCP stdio server config with no allowlist, leading to remote code execution.
- The vendor says 1.10.3 (and 1.11.0+) is fully fixed; 1.9.0–1.10.2 are only partly fixed.
- Not in CISA KEV as of 2026-10-07; CISA's SSVC assessment rates exploitation as "none".
Unconfirmed / disputed
- Whether login is needed: the vendor's PR #12290 says unauthenticated attackers could exploit it; the vendor advisory GHSA-w794-rj3p-xv45 (the page contains exploit code, so we don't link it) says that is only true under the default AUTO_LOGIN, and CVSS lists low privileges.
- No source confirms exploitation in the wild, or exploitation before a patch existed (zero-day).
- Public PoC: the vendor advisory itself includes a proof of concept for 1.5.0–1.8.x (the page contains exploit code, so we don't link it), while TheHackerWire said that, at the time of writing, no standalone exploit had been published in open research repositories; the two differ.
- The 1.10.3 release year: GitHub shows only "23 Jul"; 2026 is PlainCVE's inference.
Quotable line
Letting a user "configure a tool" here was really letting them type commands on your server.
Images
Download the share image (PNG) · Attack flow diagram (downloadable)
Please credit "PlainCVE" and link to this page. Full citation format is under "How to cite" below. Found a factual error? Report it.
Langflow MCP stdio command injection: whatever command the server config names, the host runs Langflow is an open-source tool for building and deploying AI agents and workflows. Versions before 1.10.3 run any command a user writes into an MCP server configuration, letting an attacker execute code on the server; if the instance is reachable from untrusted networks and still uses the default auto-login setting, no account is needed. The CNA scored it CVSS 9.9 (Critical), and the vendor fully fixed it in 1.10.3. As of October 7, 2026, it is not on the US CISA Known Exploited Vulnerabilities list. Key facts: - Severity:CVSS 3.1 9.9 (CNA score; NVD still analysing)(https://cveawg.mitre.org/api/cve/CVE-2026-105697) - Fully fixed version:Langflow 1.10.3 (langflow-base 0.10.3, lfx 1.10.3)(https://cveawg.mitre.org/api/cve/CVE-2026-105697) - First disclosed (project's public PR #12290):2026-03-23(https://github.com/langflow-ai/langflow/pull/12290) - CVE published:2026-10-05(https://cveawg.mitre.org/api/cve/CVE-2026-105697) - Vendor advisory:GHSA-w794-rj3p-xv45(https://cveawg.mitre.org/api/cve/CVE-2026-105697) Confirmed: - Langflow before 1.10.3 runs any command in an MCP stdio server config with no allowlist, leading to remote code execution. - The vendor says 1.10.3 (and 1.11.0+) is fully fixed; 1.9.0–1.10.2 are only partly fixed. - Not in CISA KEV as of 2026-10-07; CISA's SSVC assessment rates exploitation as "none". Unconfirmed / disputed: - Whether login is needed: the vendor's PR #12290 says unauthenticated attackers could exploit it; the vendor advisory GHSA-w794-rj3p-xv45 (the page contains exploit code, so we don't link it) says that is only true under the default AUTO_LOGIN, and CVSS lists low privileges. - No source confirms exploitation in the wild, or exploitation before a patch existed (zero-day). - Public PoC: the vendor advisory itself includes a proof of concept for 1.5.0–1.8.x (the page contains exploit code, so we don't link it), while TheHackerWire said that, at the time of writing, no standalone exploit had been published in open research repositories; the two differ. - The 1.10.3 release year: GitHub shows only "23 Jul"; 2026 is PlainCVE's inference. 「Letting a user "configure a tool" here was really letting them type commands on your server.」— PlainCVE https://plaincve.date/en/vulns/cve-2026-105697-langflow-mcp-stdio-command-injection
How to cite this page
This article is CC BY 4.0. Please keep the attribution and link when republishing.
PlainCVE Team (2026). "Langflow MCP stdio command injection: whatever command the server config names, the host runs". PlainCVE. https://plaincve.date/en/vulns/cve-2026-105697-langflow-mcp-stdio-command-injection (accessed YYYY-MM-DD)BibTeX
@misc{cve2026105697langflowmcpstdiocommandinjection2026,
title = {Langflow MCP stdio command injection: whatever command the server config names, the host runs},
author = {PlainCVE Team},
year = {2026},
howpublished = {PlainCVE},
url = {https://plaincve.date/en/vulns/cve-2026-105697-langflow-mcp-stdio-command-injection},
note = {Updated 2026-10-13}
}