Langflow flaw: 4,619 honeypot attempts by 25 Oct, and Langflow says 1.9.0 was only the first of two fixes
Previdian's honeypot logged 4,619 attempts against Langflow's MCP command flaw by 25 October 2026, on one sensor. Langflow's own later advisory says the 1.9.0 fix was only the first of two, and that default auto login blurs what authenticated means.
By Parminder Kumar Sharma · · 30 min read
4,619 attempts on one sensor, and a fix that came in two steps
Previdian's page for CVE-2026-105740 counted 4,619 exploitation attempts against a Langflow flaw, from 33 source addresses, recorded by one sensor, when it was read at about 17:46 GMT on Sunday 25 October 2026. The Hacker News had reported 1,423 on 15 October. That is not growth between two different counts. The page's own daily bars add up to 4,619, and to exactly 1,423 at the moment The Hacker News wrote (derived). It is one series, read twice. Previdian defines an attempt as an attempt to exploit "whether or not the target was actually vulnerable or the attempt succeeded", so the figure measures how often something knocked, not how often anything opened.
What the number does not establish: a single compromise, how many Langflow servers are online, which version or login the sensor presented, or who is sending the traffic. It also does not decide what the headline's two adjectives mean. "Authenticated" sounds like a locked door, but Langflow's own advisory says that with the default auto login setting an exposed server hands out a token without credentials. "Fixed in 1.9.0" sounds like a finished repair, but Langflow's own later advisory says the issue "was fixed in two steps" and that 1.10.3 is the full fix. Ten releases, 1.9.0 to 1.10.2, carried only the first step (derived from Langflow's table and the GitHub releases list).
This briefing reads the sources behind the headline rather than the headline. Between 17:46 and 18:13 GMT on 25 October 2026 it read Previdian's CVE page and methodology page, Langflow's two GitHub advisories and their API records, the CVE records and NVD entries, the CISA catalogue file, Langflow's release notes, four pull requests and four documentation pages, VulnCheck's blog and Previdian's July post, and four UK government pages. The Hacker News report of 15 October and a later article are used only for what they report and for what Previdian's founder told The Hacker News. Nothing was filled in or submitted, no account was needed, and the advisories' proof of concept is neither reproduced nor saved.
Stated and not stated: the record, line by line
The table sets what each source states against what it does not. "Does not say" means the source is silent on it, not that it is false.
What the sources state and what they leave out, read on 25 October 2026. Sources: Previdian's CVE page, the CVE.org and NVD records, Langflow's GitHub advisories, the CISA catalogue file (version 2026.10.23) and The Hacker News (secondary).
| The record says | Source | It does not say |
|---|---|---|
| 4,619 attempts, 33 source addresses in 17 countries, 1 sensor, first seen 19 Sep, last seen 25 Oct | Previdian CVE page, 25 Oct | The count per address, the Langflow version the sensor ran, or that any attempt worked. Request targets, User Agents and payloads sit behind paid plans. |
| 1,423 attempts from 27 addresses since 19 Sep, then 1,706 from 28 addresses in an update | The Hacker News, 15 Oct, quoting Previdian | That the figures are snapshots of one running total. It says "honeypot sensors"; Previdian's page says one. |
| Affected before 1.9.0. "This vulnerability is fixed in 1.9.0." | CVE record and NVD entry, 5 Oct | That 1.9.0 closes every route. Langflow's later advisory says it closed the Add MCP Server request only. |
| Affected 1.8.3, patched 1.9.0 | Langflow advisory GHSA-7w94-79vh-5mr2, published 10 Sep | The earlier releases. The CVE record has no lower bound; the later advisory dates the route to 1.5.0. |
| Any authenticated user, including non admin accounts, can run commands as the Langflow process | Same advisory | That an account is hard to get. The later advisory says default auto login reaches the flaw with no account. |
| Fully fixed in 1.10.3. Releases 1.9.0 to 1.10.2 still run commands from configs embedded in flows or passed as tweaks | Langflow advisory GHSA-w794-rj3p-xv45, published 28 Sep (CVE-2026-105697) | Whether anyone has used the flow route in the wild. No source read says so. |
| Critical, CVSS 9.9. CISA's coordinator entry lists exploitation "poc" and automatable "no", dated 6 Oct | CVE record (GitHub as the CNA) and NVD, 5 to 6 Oct | An NVD assessment (status "Awaiting Analysis") or any update after the jump of 11 Oct. |
| Not in CISA's Known Exploited Vulnerabilities catalogue | CISA file, version 2026.10.23, released 23 Oct | A reason, or a threshold. This briefing found no published count that triggers a listing. |
| Attackers checked the version, tried auto login (403, disabled on the honeypot), then signed in with a common username and password | Previdian's founder to The Hacker News (secondary) | Which credentials, how many sessions, or what ran. Previdian's page does not print it. |
Two things follow. Every figure in the headline is a sensor count and every severity word is a label from the vendor or its CNA; neither measures harm. And the CVE record that says "fixed in 1.9.0" lists, in its own references, the Langflow advisory that says 1.10.3 is the full fix. The record points at its own correction.
What the count shows: a switch on 11 October, then a steady rate
Previdian's page draws one bar per day, 18 September to 25 October. Adding the bars gives 4,619, the page's headline figure (derived). Adding every day to 14 October (1,357) and the 66 attempts The Hacker News said had been seen so far on 15 October gives 1,423, its first figure. The later totals fit the same series: 1,706 is all of 15 October (316) plus 33 attempts from 16 October, and a later article's 2,023 is all of 16 October (303) plus 47 from 17 October (both part day amounts are inferred, not read). The series is the record. The totals are readings of it.
Previdian's daily bars for CVE-2026-105740, read 25 Oct 2026 at about 17:46 GMT, grouped by this briefing (derived).
| Window | Attempts | What the bars show |
|---|---|---|
| 19 Sep to 10 Oct (22 days) | 115 (2.5 per cent) | 13 of the 22 days logged none. The largest day was 43, on 10 Oct. |
| 11 Oct to 24 Oct (14 full days) | 4,267 (92.4 per cent) | Between 182 and 333 a day, median 323. Five days sit at exactly 323. |
| 25 Oct, part day to about 17:46 GMT | 237 (5.1 per cent) | About what 323 a day gives by that time (239, derived). |
The step from 43 on 10 October to 333 on 11 October is 7.7 times (derived). After it the daily figure barely moves: in the last seven full days it runs 280, 330, 323, 323, 323, 323 and 322. At 323 a day that is one attempt about every 4.5 minutes (derived), and a re read at 18:13 GMT showed 4,625, six more in 27 minutes, where 323 a day gives 6.1 (derived). A rate that flat looks like a schedule more than a crowd. That is inference: the page withholds the split by address, so 33 addresses could share the work in any proportion, and The Hacker News says a "significant chunk" came from one address. What can be said is that an automated process has been hitting one sensor at a near constant rate for two weeks. A honeypot is built to be found. The figure says nothing about how many real servers were tried or how many gave way.
Two comparisons put the number in proportion. In July, Previdian (then trading as KEVIntel) reported 137 attempts from 46 addresses on seven sensors for a different Langflow flaw, CVE-2026-0770, before CISA added it to its catalogue on 21 July. This flaw has 33.7 times as many attempts (derived), from fewer addresses, on one sensor, and is not listed. That does not explain CISA's choices. It shows that volume and listing do not move together. And the EPSS model, which Previdian prints on its page, puts the chance of exploitation in the next 30 days at 0.6 per cent, beside 4,619 observed attempts. Previdian says its warning "comes from evidence, not this score". They measure different things.
Fixed in 1.9.0, or fixed in two steps?
The CVE record for CVE-2026-105740 describes the flaw as present "Prior to 1.9.0" and says it "is fixed in 1.9.0". Previdian's page says "affected before 1.9.0" and The Hacker News says "prior to 1.9.0". Langflow's second advisory, published on 28 September and listed in that CVE record's references, tells a longer story. It says the issue "was fixed in two steps and is fully fixed in Langflow 1.10.3". The table follows Langflow's own account, release range by release range.
Langflow's account of the MCP stdio command flaw by release range (advisory GHSA-w794-rj3p-xv45, read 25 Oct 2026, condensed), with release counts derived from the GitHub releases list (release candidates excluded).
| Releases | State, in Langflow's account | Releases in range |
|---|---|---|
| 1.1.2 to 1.4.x | The MCP Stdio component runs the command field it is given, with no validation. | 13 |
| 1.5.0 to 1.8.x | The Add MCP Server page and API arrive. Stored configs launch through a shell with no validation. | 23 |
| 1.9.0 to 1.10.2 | REST requests reject commands outside an allowlist. The launch point still has no validation and still uses a shell, so a config inside a flow or passed as a tweak can still run arbitrary commands. | 10 |
| 1.10.3 and later | One shared policy at the API, at flow execution and just before launch. No shell. Marked fixed. | 17 later releases to 1.13.0 |
The first step is visible in the public record. Pull request 12290, merged on 27 March 2026, is titled "prevent MCP command injection via allowlist validation (CWE-78)", and the 1.9.0 release notes of 14 April list it by that title, with no severity word. The second step, pull request 14036 ("harden MCP stdio configuration"), merged on 14 July and shipped in 1.10.3 on 23 July, again with no severity word in the release notes. The severity, the CVE numbers and the advisories all came later, in September and October.
The Hacker News describes CVE-2026-105697 as "another" flaw patched in 1.10.3. Langflow's advisory presents it as the second step of the same issue. The two CVE records share one CVSS vector, one weakness (CWE-78) and each other's advisory in their references, and CISA's coordinator entries differ only in exploitation: "none" for CVE-2026-105697 and "poc" for CVE-2026-105740, both dated 6 October, before the jump in attempts. Whether that is one flaw or two is a labelling choice. For a defender the useful fact is the version: below 1.10.3 some route is open.
The honeypot traffic, as The Hacker News describes it, uses the MCP server configuration endpoint, which is the REST route the first fix closed. A server on 1.9.0 to 1.10.2 should therefore turn that request away, on Langflow's own description. It should not be read as safe on that evidence: quiet logs on the REST route say nothing about the flow route, and no source read says attackers have tried the flow route or have not. (Inference from Langflow's table and The Hacker News's description.)
"Fixed" also means an allowlist, not the removal of a feature. The message a fixed build returns lists the commands still allowed, and Langflow's advisory adds that the list "still lets npx / uvx run any package by default". That is how MCP servers are normally distributed, so the fix stops arbitrary commands, not arbitrary packages. Langflow's advisory names settings for multi tenant servers; they are printed in the Technical details section below.
The gap between a fix and its advisory is a pattern this site has met twice. The PoeLLM and LiteLLM briefing found a fixed release 177 days before the report that named the flaw, and the MCP Python SDK briefing found a fix 21 days before its advisory. Here the first fix was released 149 days before the first advisory page (derived: 14 April to 10 September). A team that waits for an advisory to start patching is waiting for the wrong signal.
The order of events
Read as dates. The first fix was merged on 27 March and released on 14 April. The advisory page appeared on 10 September, 149 days after the release. The sensor logged its first attempt on 19 September, 9 days after the advisory and 158 days after the release (all derived). The CVE numbers were published on 5 October, 16 days after that first attempt. A sensor cannot record a CVE number that does not exist yet, so the label was applied after 5 October (inference). Previdian's page does not show what the single attempt on 19 September was.
The jump to 333 a day came on 11 October: 6 days after the CVE numbers and 31 days after the first advisory (derived). That ordering fits attackers acting on the public CVE. It does not show it. The sensor sees timing, not motive.
"Authenticated": who can log in to a Langflow server
The advisory's wording is any authenticated Langflow user, including accounts that are not administrators. On a server where signing in means a person chose a password, that is a real barrier. Langflow's own pages describe other cases.
Who reaches the flaw under different Langflow settings, from Langflow's advisory, pull request and documentation (25 Oct 2026) and Previdian's founder via The Hacker News.
| Server setting | Who reaches the flaw | Source |
|---|---|---|
| Auto login on, the default before 1.13.0 on Langflow's account | Anyone who can reach the server: the auto login route hands out a token without credentials | Advisory GHSA-w794 and pull request 13699 |
| Auto login off, public registration on, new accounts inactive (1.13.x documented defaults) | A person a superuser has activated, or whoever holds a working login | Langflow documentation |
| Auto login off, a common username and password in use | Whoever guesses it, as in the honeypot sequence | Previdian's founder, via The Hacker News |
| Custom code restricted (settings in 1.11.1 and later) | Superusers only, on Langflow's account | Advisory GHSA-w794 |
Langflow's own pull request 13699, merged on 18 June, said that "AUTO_LOGIN defaults to True" and that the default configuration handed a year long superuser token to anyone who could reach the auto login route. It shortened the token (release 1.10.1, 23 June) and left the default alone, calling a change of default a breaking change "staged for v2.0". The default was changed for official release artefacts by pull request 14993, merged on 29 September, and shipped in 1.13.0 on 22 October: 23 days later, and three days before this reading (derived).
Upgrading does not clear it. The 1.13.x documentation says "Official release packages, tagged source archives, and Docker images disable automatic login by default", and also that an explicit setting in an existing environment or .env file takes precedence over the new default, and that turning auto login off stops new anonymous sessions but does not revoke sessions or API keys already issued. An operator who patches and does nothing else may keep auto login on, and keep every token it issued.
There is a further layer. Langflow's security page says the interface "is an IDE and code execution platform", inherently capable of executing arbitrary code that developers write, and that user access controls are "designed for usability, not security enforcement". The documentation lists custom components as allowed by default, so a user who can build flows can probably already run code by design (inference from the documentation). The MCP flaw matters most where an operator has blocked custom code, and for what the advisory calls its stealth: unlike component code, "MCP server configs are stored in project settings and are not visible during normal flow review". A reviewer who reads every flow will not see it.
The scoring tells the same story. The vector is CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H, and PR:L is "privileges required: low", meaning an account. With privileges required set to none and everything else unchanged the vector scores 10.0, so the login is worth 0.1 of a point (derived). Scope "changed" is what holds the score near the top: with scope unchanged the same vector would score 8.8 (derived). The label 9.9 already prices an account at almost nothing.
A pattern, and the catalogue shows only part of it
Langflow is a repeat target. CISA's catalogue lists six Langflow entries, five of them added in 2026, and none of them is either of the MCP command flaws.
CISA Known Exploited Vulnerabilities catalogue, file version 2026.10.23 (released 23 Oct 2026, 1,756 entries), read 25 Oct 2026. Entries whose product is Langflow (CVE-2026-9198 lists the vendor as IBM). CISA's names are shown with hyphens written as spaces. Neither CVE-2026-105740 nor CVE-2026-105697 is listed.
| CVE | Added to the catalogue | CISA's name for it |
|---|---|---|
| CVE-2025-3248 | 5 May 2025 | Langflow Missing Authentication Vulnerability |
| CVE-2026-33017 | 25 Mar 2026 | Langflow Code Injection Vulnerability |
| CVE-2025-34291 | 21 May 2026 | Langflow Origin Validation Error Vulnerability |
| CVE-2026-55255 | 7 Jul 2026 | Langflow Authorization Bypass Through User Controlled Key Vulnerability |
| CVE-2026-0770 | 21 Jul 2026 | Langflow Inclusion of Functionality from Untrusted Control Sphere Vulnerability |
| CVE-2026-9198 | 4 Aug 2026 | IBM Langflow Code Injection Vulnerability |
VulnCheck, a vendor that sells exploit intelligence, counted twelve Langflow vulnerabilities reported as exploited in the wild in a post of 28 August: one before 2026 and eleven in 2026. Its own deliberately vulnerable canary servers saw what follows code execution on a Langflow host. One attacker dropped a credential harvester, proxy agents and a remote access tool, and installed a scheduled job for persistence. Another installed a cryptocurrency miner and switched off the audit daemon. Those were other flaws, not this one. The point carries over (inference): once an attacker has commands on a Langflow host, what happens next does not depend on which CVE opened the door.
It matters here because of what a Langflow process holds. The documentation says LANGFLOW_SECRET_KEY encrypts stored credentials such as API keys and, with the HS256 algorithm, signs session tokens. The Hacker News reports that captured payloads tried to read LANGFLOW_SECRET_KEY and LANGFLOW_SUPERUSER_PASSWORD from the environment and send them to an address outside the honeypot. Whether or not any of that worked on a real server, those are the two values to treat as lost if a server was exposed.
Friendly names, and whose interest they serve
A label is not a measurement. Six appear in this story.
Labels in the story, where each appears and what the record shows (25 Oct 2026).
| The label | Where it appears | What the record shows |
|---|---|---|
| "Authenticated" | Advisory title, CVE text, The Hacker News headline | On default auto login, no account is needed. A login is worth 0.1 of a CVSS point. A logged in builder can already run code by design. |
| "Fixed in 1.9.0" | CVE description, Previdian page | The first of two steps. Ten releases carry only that step, on Langflow's account. |
| "Critical", 9.9 | CVE record, NVD, headline | A score from GitHub as the CNA. NVD has not analysed it. The sibling CVE carries the same vector. |
| "Honeypot sensors" | The Hacker News | One sensor, 4,619 attempts, 33 addresses. Attempts, not compromises. |
| "Exploited", confidence "Confirmed" | Previdian page | Previdian's method says Confirmed can rest on a retained sensor observation with high confidence. It is not in the CISA catalogue. |
| "AI workflow builder" | News coverage, CVE text | Langflow's own security page calls it an IDE and code execution platform. |
Whose interest? Previdian sells early warning data on paid plans and a free trial, and its page is the product's shop window. A high count helps sell it. That is no reason to doubt the count, which reconciles with the daily bars. It is a reason to note who prints it and what is withheld. VulnCheck sells exploit intelligence and has the same incentive. Langflow's maintainers wrote both advisories, and the second corrects the first, so the vendor is on record against its own CVE text. This briefing follows the vendor's later account over the CVE record where they differ, and says so.
Technical details
This section prints what the sources publish: the two requests, the configuration model, the launch code before and after, the version strings, the settings, and what Previdian's page shows. Every block names its source and the day it was read, 25 October 2026. Text is copied from saved pages and not retyped. Anything this site worked out is marked derived. The attacker side items come from The Hacker News, a secondary source, because Previdian's public page withholds request targets, User Agents, callback hosts and payloads (it counts 4,595, 28 and 1) behind paid plans. No exploit or proof of concept is reproduced. Langflow's advisories print one, and this briefing leaves it out.
First, the two requests. The first stores a server definition for the signed in account. The second lists the servers, and with the action count option Langflow connects to each stored stdio server, which starts the stored command. The advisory says this happens when someone opens the MCP settings page, and that it repeats every time the list is loaded, including for other users and administrators. A defender watches both requests in access logs.
POST /api/v2/mcp/servers/{server_name}
GET /api/v2/mcp/servers?action_count=true
Next, the body of that first request. The advisory's own comments call three of the fields attacker controlled: command, args and env. A defender reviewing stored MCP servers looks at exactly those three on every stdio entry, because the advisory says such entries are not visible in normal flow review.
class MCPServerConfig(BaseModel):
command: str | None = None # Attacker-controlled OS command
args: list[str] | None = None # Attacker-controlled arguments
env: dict[str, str] | None = None # Attacker-controlled environment variables
url: str | None = None
headers: dict[str, str] | None = None
Then the launch itself, before and after. Before 1.10.3 the stored command was placed inside a shell. From 1.10.3 it is split into an executable and arguments, checked against one policy, and started without a shell. On a vulnerable build the process the Langflow server starts is therefore a shell whose command line begins bash -c exec (derived from the code). Stored servers that are legitimate, such as npx or uvx launchers, will start the same way, so baseline them first.
server_params = StdioServerParameters(
command="bash",
args=["-c", f"exec {command_str} || echo 'Command failed with exit code $?' >&2"],
env=env_data,
)
command_parts = shlex.split(command_str)
command, args = command_parts[0], command_parts[1:]
validate_mcp_stdio_config(command, args, env) # final pre-spawn enforcement
server_params = StdioServerParameters(command=command, args=final_args, env=env_data)
A fixed build refuses a command outside its allowlist with a message that names the allowed commands. That message is also a check an administrator can look for in logs on a patched server: it shows the policy is live. Langflow says wrappers such as shell and interpreter one liners are also rejected.
Command 'touch' is not allowed for security reasons. Allowed commands: bash, cmd, docker, node, npx, python, python3, uvx
What each fix step checks, in Langflow's words. The first step validates the request model. The second moves the policy to the point of launch and drops the shell. The env var blocklist in the first step is the useful hint for defenders: variables that change how a launched process loads code are on it.
1.9.0 (pull request 12290): `MCPServerConfig` validators: command allowlist (`node`, `python`, `python3`, `npx`, `uvx`, `docker`, and `cmd`/`sh`/`bash` only to wrap one of those), shell-metacharacter and dangerous-keyword checks on arguments, env var blocklist (`LD_PRELOAD`, `NODE_OPTIONS`, `PYTHONPATH`, `BASH_ENV`, ...), and Docker isolation checks
1.10.3 (pull request 14036): moves the policy into `lfx.base.mcp.security.validate_mcp_stdio_config` and enforces it at every entry point (API, embedded flow / tweak configs, the deprecated MCP Stdio component and just before spawn); it also launches the process without a shell
The affected and fixed versions as the CVE.org records print them, followed by the scores and CISA's coordinator entries. The first record says before 1.9.0. The second gives three PyPI packages and a threshold of 1.10.3. Both packages langflow and lfx matter: the launch code lives in the lfx package.
{
"CVE-2026-105740 (record published 2026-10-05T20:46:18.854Z, CNA GitHub_M), containers.cna.affected": [
{
"vendor": "langflow-ai",
"product": "langflow",
"versions": [
{
"version": "< 1.9.0",
"status": "affected"
}
]
}
],
"CVE-2026-105697 (record published 2026-10-05T20:16:58.291Z, CNA GitHub_M), containers.cna.affected": [
{
"vendor": "langflow-ai",
"product": "langflow",
"versions": [
{
"version": ">= 1.1.2, < 1.10.3",
"status": "affected"
}
]
},
{
"vendor": "langflow-ai",
"product": "langflow-base",
"versions": [
{
"version": ">= 0.1.2, < 0.10.3",
"status": "affected"
}
]
},
{
"vendor": "langflow-ai",
"product": "lfx",
"versions": [
{
"version": "< 1.10.3",
"status": "affected"
}
]
}
]
}
{
"CVE-2026-105740 containers.cna.metrics": [
{
"cvssV3_1": {
"attackComplexity": "LOW",
"attackVector": "NETWORK",
"availabilityImpact": "HIGH",
"baseScore": 9.9,
"baseSeverity": "CRITICAL",
"confidentialityImpact": "HIGH",
"integrityImpact": "HIGH",
"privilegesRequired": "LOW",
"scope": "CHANGED",
"userInteraction": "NONE",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H",
"version": "3.1"
}
}
],
"CVE-2026-105740 containers.adp (CISA ADP Vulnrichment) metrics": [
{
"other": {
"type": "ssvc",
"content": {
"timestamp": "2026-10-06T18:20:20.481095Z",
"id": "CVE-2026-105740",
"options": [
{
"Exploitation": "poc"
},
{
"Automatable": "no"
},
{
"Technical Impact": "total"
}
],
"role": "CISA Coordinator",
"version": "2.0.3"
}
}
}
],
"CVE-2026-105697 containers.adp (CISA ADP Vulnrichment) metrics": [
{
"other": {
"type": "ssvc",
"content": {
"timestamp": "2026-10-06T14:36:02.678305Z",
"id": "CVE-2026-105697",
"options": [
{
"Exploitation": "none"
},
{
"Automatable": "no"
},
{
"Technical Impact": "total"
}
],
"role": "CISA Coordinator",
"version": "2.0.3"
}
}
}
]
}
Langflow's account of which release does what, as printed in the later advisory's table (the markdown table rows are shown as the advisory prints them).
| `1.1.2` to `1.4.x` | MCP Stdio component (added in #5148) runs `StdioServerParameters(command=..., args=...)` from the component's `command` field with no validation. |
| `1.5.0` to `1.8.x` | "Add MCP Server" settings page and `/api/v2/mcp/servers` API added (#8388). Stored stdio configs are launched via `bash -c "exec {command_str} ..."` with no validation. |
| `1.9.0` to `1.10.2` | #12290: `POST`/`PATCH /api/v2/mcp/servers` reject commands outside the allowlist. The execution sink still has no validation and still uses `bash -c`, so configs that do not go through `MCPServerConfig` (for example an MCP Tools component value embedded in a flow or passed as a tweak) can still execute arbitrary commands. |
| `1.10.3`+ | #14036: one shared policy (`lfx.base.mcp.security.validate_mcp_stdio_config`) is enforced at the API, at flow execution and right before the process is spawned; no shell is used. **Fixed.** |
Settings. The advisory's workaround for servers that cannot upgrade immediately is to turn auto login off and keep the server off untrusted networks. The documentation prints the pair of lines below for a new install. The superuser password shown is a placeholder, not a credential.
LANGFLOW_AUTO_LOGIN=false
LANGFLOW_SUPERUSER_PASSWORD=REPLACE_WITH_A_STRONG_PASSWORD
For servers where several people build flows, the advisory names these settings for 1.10.3 and later. They are listed here by name and value as the advisory prints them; the first has no value in the advisory, because the operator supplies the list of packages that npx and uvx may run. The custom code settings are from 1.11.1 and later on the advisory's account.
LANGFLOW_MCP_SERVER_ALLOWED_PACKAGES
LANGFLOW_MCP_SERVER_INTERPRETER_HARDENING=true
LANGFLOW_MCP_SERVER_DOCKER_HARDENING=true
LANGFLOW_ALLOW_CUSTOM_COMPONENTS=false
LANGFLOW_CUSTOM_COMPONENT_ADMIN_ONLY=true
LANGFLOW_BLOCK_CODE_INTERPRETER_COMPONENTS=true
The documentation also lists defaults that decide who can reach the flaw. Names and defaults below are copied from its tables; the descriptions are left out. Note that custom components and public registration are on by default, new accounts are inactive by default, and the superuser command line is on by default.
LANGFLOW_ALLOW_CUSTOM_COMPONENTS default True
LANGFLOW_BLOCK_CODE_INTERPRETER_COMPONENTS default False
LANGFLOW_RESTRICT_LOCAL_FILE_ACCESS default True
LANGFLOW_MCP_SERVER_DOCKER_HARDENING default False
LANGFLOW_TWEAKS_POLICY default permissive
LANGFLOW_ENABLE_SIGNUP default True
LANGFLOW_NEW_USER_IS_ACTIVE default False
LANGFLOW_ENABLE_SUPERUSER_CLI default true
LANGFLOW_SKIP_AUTH_AUTO_LOGIN default false
Previdian's public page prints one response shape, a sample of its paid API, and three counts for what it keeps. The counts are the most the page gives on the traffic itself: 4,595 request targets, 28 User Agents and one callback host, against 4,619 attempts. That is almost one different target per attempt (derived, 99.5 per cent), which fits a path that changes every time, such as a randomly named server in the request path. That reading is inference.
{
"cve_id": "CVE-2026-105740",
"confidence": "Confirmed",
"cvss_score": 9.9,
"cvss_estimated": false,
"epss_score": 0.00589,
"exploit_status": {
"exploited_in_the_wild": true,
"active_exploitation_observed": true
},
"sensor_telemetry": { "attempts": 4619, "sensors": 1 }
}
Request targets: 4,595
User-Agents: 28
Callback hosts: 1
The attacker side, from The Hacker News report of 15 October, which quotes Previdian's founder. These are the indicators and names it prints, defanged as it printed them, with labels added by this site. The sequence, in the founder's account, was a version check, a request to the auto login route that returned 403 because auto login was disabled on the honeypot, a login with a common username and password, and then use of the bearer token on the MCP server configuration endpoint. The captured payload families were: attempts to read the two environment values and send them to the callback below; Docker commands that try to reach the host file system and read the password file; and simple command probes.
callback host and port: 146.70.211[.]112:18764
source address named: 192.255.229[.]92
environment values targeted: LANGFLOW_SECRET_KEY, LANGFLOW_SUPERUSER_PASSWORD
file named: /etc/passwd
commands named: id, whoami
paths named: /api/v1/auto_login, /api/v2/mcp/servers/
Finally, where to look. These lines are derived by this site from the requests above. Neither Langflow nor Previdian publishes them. They search access logs kept by a reverse proxy or by Langflow for the two requests and for auto login token requests. On a build before 1.10.3, also look for shell children of the Langflow process, and for stored MCP server entries with a command other than a known launcher. A hit is a reason to look, not proof of compromise.
# writes to the MCP server configuration endpoint
grep -E '(POST|PATCH|PUT) /api/v2/mcp/servers/' access.log
# the list call that starts every stored stdio server
grep -E 'GET /api/v2/mcp/servers\?action_count=true' access.log
# auto login token requests (none expected when auto login is off)
grep -E 'GET /api/v1/auto_login' access.log
# installed versions of the three packages the advisories name
pip show langflow langflow-base lfx
The UK: what the guidance says and where it stops
None of the four UK pages read mentions Langflow or MCP (a search of each saved page found no match), and the DSIT code does not mention agents, workflows or orchestration either. The NCSC blog is about AI agents but not about the platforms that build or host them. What follows applies general controls, and says where each one runs out.
UK guidance as read on 25 October 2026 on ncsc.gov.uk, gov.uk and ico.org.uk, and where it does not reach.
| UK instrument | What it says (quoted or close) | Where it does not reach |
|---|---|---|
| Cyber Essentials requirements v3.3 (NCSC, April 2026), security update management | Software must be updated "within 14 days" of release where the vendor calls the flaw critical or high risk, the CVSS v3 base score is 7 or above, or the vendor gives no severity details. | Silent on a severity label published after the release. Langflow's 1.9.0 and 1.10.3 notes carry no severity word, so the third condition applies (inference). |
| Cyber Essentials v3.3, firewalls and user access | Firewalls must "block unauthenticated inbound connections by default". Users must be authenticated with unique credentials, and MFA used "where available". | Does not say how to add MFA to a self hosted tool. Langflow's pages on external sign in were not read. |
| DSIT Code of Practice for the Cyber Security of AI (31 Jan 2025, voluntary) | Provision 2.6: permissions granted to the AI system on other systems are "only provided as required for functionality and are risk assessed". Provision 6.1: evaluate access control frameworks. Provision 11.1: operators deliver security updates and patches. Provision 12.1: log system and user actions. | Voluntary, and written for AI systems. It does not mention agents, workflows or MCP. Whether a workflow builder is an AI system or an external component under 2.4 is a judgement. |
| NCSC blog, Managing the cyber risk of agentic AI (20 Aug 2026, interim) | Run agents in a sandbox, "restrict the credentials available to the agent", deny network traffic by default, and monitor agent activity as user activity. | Written for agents that misbehave, not for attacks on the platform that hosts them. Its sandbox and credential advice applies by analogy (inference). |
| ICO, personal data breaches: a guide | A breach of security leading to unauthorised access to personal data is reportable "within 72 hours of becoming aware", where feasible. | Applies only if personal data was reached. The advisories say nothing about what a compromised server held. |
The Cyber Essentials arithmetic is worth doing. The scheme's text asks for updates within 14 days of release in three cases, and the third is that the vendor gives no details of severity. Fourteen days after the 1.9.0 release of 14 April is 28 April, and after the 1.10.3 release of 23 July is 6 August (derived). On that reading, a Langflow server inside a certification boundary that still ran a release before 1.9.0 on 29 April was already outside the rule, more than four months before any advisory existed (inference). The CVSS 9.9 from October puts the same updates in the first two cases as well, but the scheme's clock does not wait for the label.
The NCSC blog is the closest UK text to the checklist below. Its maturity levels for compute isolation call a properly configured container "level 2" and virtualisation "level 3", and it says a residual risk of kernel breakout remains at level 2. For a Langflow server holding model provider keys and a secret key, the credentials in its environment are its blast radius. Those are the NCSC's own terms, applied here to a different threat.
ICO guidance applies only to personal data. Flows often retrieve from document stores and keep conversation logs, so a compromised server may have reached personal data, and the 72 hour clock starts on awareness, not on the end of the investigation. The ICO's guide says organisations should "prioritise the investigation" and may report in phases. Whether the NIS Regulations 2018 apply depends on who runs the server and was not examined here.
What to do, in the order worth doing
Every item below follows a Langflow instruction, a Previdian recommendation, or a UK control read above, and is ordered so that the fastest cuts to exposure come first.
Take this with you
Defender actions for Langflow servers, in order
- Find every Langflow you run, including containers, notebooks, pipelines and developer machines that listen on a network port. Record the installed version of each of the three Langflow packages the advisories name (listed in Technical details), whether auto login is on, and how many accounts exist.
- Take 1.10.3 as the minimum fixed version for the MCP command flaw, per Langflow's later advisory, not 1.9.0. Prefer the current release, and read the 1.13.x upgrade steps first, because the auto login default changed in 1.13.0.
- Close internet exposure now. Put the server behind a reverse proxy with authentication and a source allowlist, or remove it from the internet. Langflow's own documentation warns never to expose its ports directly.
- Turn auto login off and set a strong, unique superuser password. Remember that turning it off does not revoke sessions or API keys already issued: revoke them.
- Review accounts. Remove shared and common username and password pairs, disable public registration you do not need, keep new accounts inactive until a person approves them, and require a second factor at the proxy or identity provider.
- Check stored MCP server entries in project settings, not only flows. Any stdio entry whose command is not a known launcher is a finding. Do the same for MCP components embedded in flows.
- Search logs for the two requests and the auto login route (see Technical details). On versions before 1.10.3, search process records for shell children of the Langflow process. Previdian also recommends reviewing authentication logs.
- If you find a hit or an unexplained entry, treat the server as compromised: rotate LANGFLOW_SECRET_KEY with Langflow's migration script, the superuser password, model provider keys, and every cloud or database credential in the process environment or in stored variables. If personal data was reachable, start the ICO 72 hour assessment.
- Run the Langflow process as an unprivileged user in a container or virtual machine, with no cloud credentials in its environment, outbound traffic denied except what flows need, and no host mounts. Langflow says its settings are not full user isolation.
- Where several people build flows, set the multi tenant settings in Technical details: restrict the packages npx and uvx may run, turn on the Docker and interpreter hardening, and block custom components or code interpreter components unless needed.
- Add Langflow to the 14 day update rule, and track the vendor's own latest advisory, not the CVE text. A fixed version in a CVE record is a claim to check against the vendor's page.
What could not be verified
- Payloads and per address counts. Previdian's page withholds request targets, User Agents, callback hosts and payloads. The attacker side items in Technical details come from The Hacker News and are unverified.
- The sensor. Which Langflow version and settings it ran is not stated. The founder's account says auto login was disabled on it.
- Which route is used. The Hacker News describes the MCP server configuration endpoint. No source read says the flow route has been tried, or has not.
- The 19 September attempt. Previdian's page does not show what the single first event was, or when it was mapped to this CVE.
- GitHub's advisory database. Its API returned no record for GHSA-7w94-79vh-5mr2 when queried, though it returned one for GHSA-w794-rj3p-xv45. The repository advisory page and API are readable. The reason for the gap is unknown, and a scanner keyed to that database may see only the second advisory.
- The news report's 15 countries and 27 addresses. The Hacker News's figures were not checked against Previdian's raw events, which are public for 30 days only. The page now shows 17 countries and 33 addresses.
- NSA guidance on MCP. A May 2026 NSA document on MCP security returned an access denied response to an automated fetch, and was not read. Nothing from it is used.
- CISA's thinking. No source read says why CVE-2026-105740 is not listed or when it will be reassessed. The listing status is time stamped to the 23 October file, and the file was still that version when re read at 18:13 GMT on 25 October.
The question that exposes the gap
A fix released in April, an advisory in September, a second fix that made the first complete, and a default that changed three days ago: each one reached a Langflow server only if someone was watching for it. For every Langflow server you run, can you state its version, whether auto login is on, and how many accounts it has, without logging in to it?
Key facts
Sources
- PrimaryPrevidian's CVE page for CVE-2026-105740: 4,619 attempts, 33 addresses, 17 countries, 1 sensor, the daily bars, first and last observed, the CVSS vector, EPSS, the sample API response and the observed signal counts. Read in full at about 17:46 GMTPrevidianaccessed 2026-10-25
- PrimaryPrevidian's methodology page: how an exploitation attempt is defined and counted, what Confirmed confidence means, and what the sensor data does not claimPrevidianaccessed 2026-10-25
- PrimaryLangflow advisory GHSA-7w94-79vh-5mr2, published 10 September 2026: authenticated command execution through the MCP Stdio transport, affected 1.8.3, patched 1.9.0, with the requests, the model and the launch code. Its proof of concept was read and is not reproducedLangflow (GitHub security advisory)accessed 2026-10-25
- PrimaryLangflow advisory GHSA-w794-rj3p-xv45, published 28 September 2026: the issue fixed in two steps, fully fixed in 1.10.3, the release by release table, the auto login statement and the hardening settingsLangflow (GitHub security advisory)accessed 2026-10-25
- PrimaryCVE record for CVE-2026-105740: GitHub as the CNA, published 5 October 2026, affected before 1.9.0, CVSS 9.9, CWE-78, and the CISA ADP Vulnrichment entryCVE Program (CVE Services API)accessed 2026-10-25
- PrimaryCVE record for CVE-2026-105697: the second step, affected 1.1.2 up to 1.10.3 for langflow, with langflow base and lfx ranges, and the CISA ADP Vulnrichment entryCVE Program (CVE Services API)accessed 2026-10-25
- PrimaryNVD API entry for CVE-2026-105740: status Awaiting Analysis, published 5 October 2026, last modified 6 October, the CNA score and the CISA SSVC entryNIST National Vulnerability Databaseaccessed 2026-10-25
- PrimaryCISA Known Exploited Vulnerabilities catalogue file, version 2026.10.23: the six Langflow entries and the absence of both MCP command CVEsCISAaccessed 2026-10-25
- PrimaryLangflow 1.9.0 release notes, 14 April 2026: the MCP command injection allowlist fix listed as pull request 12290, with no severity wordLangflow (GitHub release)accessed 2026-10-25
- PrimaryLangflow 1.10.3 release notes, 23 July 2026: the harden MCP stdio configuration fix listed as pull request 14036Langflow (GitHub release)accessed 2026-10-25
- PrimaryLangflow 1.13.0 release notes, 22 October 2026: disable automatic login by default, listed as pull request 14993Langflow (GitHub release)accessed 2026-10-25
- PrimaryPull request 12290, opened 23 March and merged 27 March 2026: the first fix, an allowlist on the MCP server configurationLangflow (GitHub pull request)accessed 2026-10-25
- PrimaryPull request 14036, merged 14 July 2026: the second fix, one shared policy enforced at every entry pointLangflow (GitHub pull request)accessed 2026-10-25
- PrimaryPull request 13699, merged 18 June 2026: states that AUTO_LOGIN defaults to True and that the auto login route minted a 365 day superuser token; shortened the tokenLangflow (GitHub pull request)accessed 2026-10-25
- PrimaryPull request 14993, merged 29 September 2026: official release wheels, source archives and container images default AUTO_LOGIN to falseLangflow (GitHub pull request)accessed 2026-10-25
- PrimaryLangflow documentation on API keys and authentication: auto login, signup, new user activation, secret key and component hardening settings, and the upgrade steps from auto loginLangflow documentation (version 1.13.x)accessed 2026-10-25
- PrimaryLangflow's security page: an IDE and code execution platform, no isolation between users, and the operator's responsibilitiesLangflow documentation (version 1.13.x)accessed 2026-10-25
- PrimaryLangflow's Docker deployment page: official images disable automatic login by default and the superuser password is requiredLangflow documentation (version 1.13.x)accessed 2026-10-25
- PrimaryPrevidian's 21 July 2026 post on CVE-2026-0770: 137 attempts from 46 addresses on 7 sensors before CISA listed it, used as a point of comparisonPrevidian blogaccessed 2026-10-25
- PrimaryVulnCheck blog, 28 August 2026: twelve exploited Langflow vulnerabilities, and what two attackers did after code execution on its canary serversVulnCheckaccessed 2026-10-25
- PrimaryCode of Practice for the Cyber Security of AI, published 31 January 2025, voluntary: provisions 2.4, 2.6, 6.1, 11.1 and 12.1Department for Science, Innovation and Technologyaccessed 2026-10-25
- PrimaryCyber Essentials: Requirements for IT Infrastructure v3.3, April 2026: the 14 day update rule, firewalls and user access controlNational Cyber Security Centreaccessed 2026-10-25
- PrimaryNCSC blog, Managing the cyber risk of agentic AI, 20 August 2026, interim: sandbox, credential and monitoring adviceNational Cyber Security Centreaccessed 2026-10-25
- PrimaryICO guide to personal data breaches: the 72 hour reporting rule and the definition of a breachInformation Commissioner's Officeaccessed 2026-10-25
- Reported byThe Hacker News, 15 October 2026: the 1,423 attempts figure and its update, and what Previdian's founder said about the attack sequence and payloads. Used for what it reports, not for findingsThe Hacker Newsaccessed 2026-10-25
- Reported byAn article citing 2,023 attempts as of 17 October, used only to show the figure fits Previdian's daily seriesDEV Communityaccessed 2026-10-25


