On 29 October 2026 IBM, the CVE Numbering Authority for Langflow, published two unauthenticated flaws in Langflow OSS that both score CVSS 3.1 9.8: CVE-2026-93680, an authentication bypass, and CVE-2026-110186, a code injection that leads to remote code execution. They affect every release from 1.0.0 through 1.12.8, and the only fix is upgrading to 1.13.0.
If that platform sounds familiar, it is the engine under OpenRAG, the open source RAG stack I wrote up earlier this year — OpenRAG is built on Langflow, and as of its current release it still ships a 1.12 base image. This is a news post in the security format: the fact, the context, what it means for the teams and products that run or embed Langflow, and the read-only checks and upgrade steps for this week. Every version, date, CVSS and command below comes from IBM’s advisory, the CVE records, the Langflow repository and docs, PyPI, Docker Hub and the CISA KEV feed, which I checked on 3 November.
1. Context: Two Headline Bugs Inside a Much Larger Disclosure
The IBM security bulletin (published 28 October, updated 29 October) lists seven vulnerabilities: four in Langflow and three in its Hono dependency. The two that matter most are unauthenticated and critical. CVE-2026-93680 is improper authentication (CWE-287): a remote attacker can bypass security restrictions with no login. CVE-2026-110186 is improper control of code generation (CWE-94): a remote attacker can execute arbitrary code. Both carry the vector AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H — network, low complexity, no privileges and no user interaction — so they score 9.8.
These two are the tip of a much bigger batch. IBM published its Langflow CVE records in three bulletins at once (one aggregator counts 33 CVE IDs in total): 16 fixed in 1.12.4, 14 fixed in 1.12.5, and this last set where four Langflow IDs — the two 9.8s plus an authenticated 8.8 Agentic Assistant command-execution bug (CVE-2026-110193) and a 6.5 credential-disclosure bug (CVE-2026-110192) — are fixed only in 1.13.0. Researcher Ostorlab reconstructs the no-login takeover from the 1.12.8 source: an unauthenticated GET /api/v1/auto_login hands out superuser session tokens whenever auto-login is on, and that session reaches Langflow’s MCP tools, where a custom component is Python that runs on the server. That is researcher analysis, not a vendor-published exploit.
Timeline (dates as published by each source)
How the batch breaks down (IBM bulletin 7294467)
| CVE | Type / CWE | CVSS 3.1 | Login needed? |
|---|---|---|---|
| CVE-2026-93680 | Authentication bypass (CWE-287) | 9.8 Critical | No |
| CVE-2026-110186 | Code injection → RCE (CWE-94) | 9.8 Critical | No |
| CVE-2026-110193 | Agentic Assistant OS command execution (CWE-94) | 8.8 | Yes, low-privileged |
| CVE-2026-110192 | Credential disclosure (CWE-522) | 6.5 | Yes |
| CVE-2026-84363 / 84364 / 84365 | Hono dependency: cache poisoning, DoS, build-time path traversal | 5.3–6.5 | Dependency, fixed in Hono 4.13.5 |
Why Langflow keeps ending up here
Langflow’s own security page calls it “an IDE and code execution platform … inherently capable of executing arbitrary, developer-provided code,” with no isolation between users in a single process — security is the operator’s responsibility. That makes any reachable, authentication-weak instance a direct path to code execution. It shows in the record: six earlier Langflow CVEs are already in the CISA KEV catalog, one of them (CVE-2025-3248) with known ransomware use, and Metasploit now ships around fourteen Langflow modules.
Where things stand (checked 3 November 2026)
The fix is 1.13.0, and it is the latest stable
I confirmed 1.13.0 on PyPI (langflow and langflow-base, uploaded 22 October), on Docker Hub (the 1.13.0 and latest tags share one digest, pushed 22 October) and in the GitHub release. 1.13.1 exists only as release candidates, so 1.13.0 is the version to install.
The two 9.8s are vendor-confirmed
The CVE records from IBM give CVSS 3.1 9.8 for both, CWE-287 for the auth bypass and CWE-94 for the code injection, affecting Langflow OSS 1.0.0 through 1.12.8, fixed in 1.13.0.
Public tooling targets the auth side
Rapid7’s Metasploit auxiliary module (23 October) opens the unauthenticated MCP SSE endpoint, initializes a session and lists tools. It is marked crash-safe and does not execute code, and it names versions 1.5.0–1.11.4 — a narrower range than IBM’s 1.0.0–1.12.8.
Not in CISA KEV, as of today
I read the KEV JSON feed on 3 November (catalog 2026.10.30): neither CVE-2026-93680 nor CVE-2026-110186 is listed. CISA’s own enrichment marks exploitation “none” and automatable “yes.” Six older Langflow CVEs are in the catalog.
No confirmed exploitation of these two — yet
Ostorlab states no exploitation of the October CVEs has been reported and none is in KEV as of 2 November. Given how fast older Langflow bugs were mass-exploited, treat that as a short runway, not a reprieve.
Golden rule
Count every reachable Langflow at 1.12.8 or older, not just your main one: upgrade to 1.13.0, turn auto-login off, keep it off the public internet behind an authenticating proxy, and rotate the secrets it stored if it was ever exposed.
2. Five Implications for Teams That Run or Embed Langflow
IBM’s advisory gives the versions and the fix; Ostorlab’s write-up and the Metasploit wrap-up fill in how the no-login path actually works. Together they change how I would triage this.
Two unauthenticated 9.8s is the worst shape a web bug takes
IBM · CVE records
No login, no user interaction, network-reachable, low complexity. Any Langflow at 1.0.0 through 1.12.8 that an attacker can reach is in scope — and the auth bypass and the code injection chain together into full remote code execution.
There is already a public tool for the auth side
Rapid7 Metasploit
The 23 October auxiliary module proves the unauthenticated MCP endpoint is reachable and enumerable on 1.5.0–1.11.4. It stops at listing tools, but it is the half of the chain that gets you in, packaged and shipping. The weaponized full-RCE step is the obvious next move.
The headline fix is a default change, not just a patch
Langflow 1.13.0 · my source check
I compared the /api/v1/auto_login handler in the 1.12.8 and 1.13.0 source and it is byte-for-byte identical; what 1.13.0 changes is the default — AUTO_LOGIN flips from on to off. So turning auto-login off closes that specific unauthenticated path on older releases too. It is a stopgap, not a substitute: IBM lists other no-login code-injection bugs and offers no workaround.
It is bigger than your own install — embedders inherit it
OpenRAG · IBM
OpenRAG, the most-read post on this blog, is built on Langflow. Its 0.8.1 release builds its Langflow image on langflowai/langflow:base-1.12.x, inside the affected range, and its installer sets LANGFLOW_AUTO_LOGIN=true — the exact precondition for the auth bypass. Any product that bundles a 1.0.0–1.12.8 Langflow carries both flaws until it rebases on 1.13.0.
Langflow is a repeat target, and attackers know it
CISA KEV · Langflow security policy
This is not the first Langflow critical to go wide. Six earlier CVEs are in CISA KEV, one with known ransomware use, and the platform is by design a code-execution IDE with no tenant isolation. Treat every internet-facing Langflow as high-value and short-lived if it is behind on patches.
Who is exposed, and what to do
| Deployment | Affected when | What to do |
|---|---|---|
| Self-hosted pip / uv install | langflow 1.0.0–1.12.8 (auto-login defaulted on through 1.12.8) | Upgrade to 1.13.0 and set a superuser password before you start it |
| Docker (langflowai/langflow) | image tag 1.0.0–1.12.8 | Pull 1.13.0, pin the digest, recreate the container |
| OpenRAG | 0.8.1 builds on Langflow base-1.12.x; installer turns auto-login on | Keep its Langflow service off the public internet; watch for a 1.13-based image |
| Other products embedding Langflow | any bundled 1.0.0–1.12.8 | Ask the vendor for a build rebased on Langflow 1.13.0 |
| Already on 1.13.0 | not affected by these IDs | Leave auto-login off and set a secret key |
What auto-login actually controls
| Setting | Default (through 1.12.8) | What it means for exposure |
|---|---|---|
| LANGFLOW_AUTO_LOGIN | true in the pip package; false in official Docker images since 1.11.x | true signs every visitor in as the superuser with no password — the auth-bypass precondition |
| LANGFLOW_SUPERUSER_PASSWORD | unset | Required once auto-login is off; startup fails closed without it, and it cannot be the legacy value langflow |
| LANGFLOW_SKIP_AUTH_AUTO_LOGIN | false | If true, unauthenticated API calls run as the superuser — leave it off |
| LANGFLOW_ENABLE_SUPERUSER_CLI | true | The docs recommend false to prevent unrestricted superuser creation |
| LANGFLOW_SECRET_KEY | auto-generated if unset | Encrypts stored credentials and signs tokens; set your own, especially across instances |
On the “33 CVEs” figure and the confusing lines in the bulletin: the 33 count is the whole batch of IBM-assigned Langflow records across three bulletins, not this one, which lists seven. The “fixed in 4.13.5” line is the Hono dependency (CVE-2026-84363 / 84364 / 84365), not Langflow — Langflow’s bundled Hono is already 4.13.13 in both 1.12.8 and 1.13.0. The CWE-22 / 6.5 entry is the Hono build-time path traversal (CVE-2026-84365), and it does not conflict with the Langflow CWE-287 and CWE-94 ratings; they are different advisories inside one bulletin.
3. What to Do This Week
Same order as any runtime bug: find every reachable copy, upgrade the way each install demands, restart so the fix is real, and put mitigations in front of what you cannot upgrade today. Everything in step 1 only reads.
Step 1: Find every Langflow and read its version
Direct installs: pip, the CLI, the version endpoint, Docker
The /api/v1/version endpoint is the one I would trust on a running server; I read its handler in the source and it returns the installed package version. Affected if the version is 1.0.0 through 1.12.8. None of this changes state.
# 1. The Python package: what is actually installed and running
pip show langflow langflow-base # fixed line: 1.13.0 (both packages)
langflow --version # or: python -m langflow --version
# 2. A running server, over the documented version endpoint
curl -s http://127.0.0.1:7860/api/v1/version
# {"version":"1.12.8","main_version":"1.12.8","package":"Langflow"} = affected
# 3. Docker: the tag the container really runs, not where :latest points today
docker ps --format '{{.Names}} {{.Image}}' | grep -i langflow
grep -rniE 'langflow(ai)?/langflow|openrag-langflow' --include='*.y*ml' .
# 4. Is auto-login on? That is the precondition for the unauthenticated path
docker exec <container> printenv LANGFLOW_AUTO_LOGIN # unset or true on <=1.12.8Embedders: OpenRAG and anything else that bundles Langflow
Updating a product does not update the Langflow inside it unless the vendor rebased. OpenRAG facts below are read from its repository and images on 3 November; I did not run OpenRAG itself.
# Products that embed Langflow carry the flaw too. OpenRAG is the clearest case.
docker ps --format '{{.Names}} {{.Image}}' | grep -i 'openrag-langflow'
docker exec <openrag-langflow> python -m langflow --version # 1.12.x = affected
# OpenRAG 0.8.1 builds its Langflow image on langflowai/langflow:base-1.12.x
# (base-1.12.3 in the 0.8.1 tag, base-1.12.8 on main) — inside the 1.0.0-1.12.8
# range — and its installer sets LANGFLOW_AUTO_LOGIN=true. Check what it exposes:
docker port <openrag-langflow> 7860 # 0.0.0.0:7860 = reachable off the hostDon’t trust pip-audit or OSV to flag this yet
I queried both PyPI’s vulnerability field and the OSV database for langflow 1.12.8 on 3 November and neither returns these CVEs. The records are published by IBM but are not yet mapped onto the PyPI package in the scanners, so an automated audit can come back clean on a vulnerable install. Judge Langflow by its version against the 1.0.0–1.12.8 range, not by a scanner’s silence.
Step 2: Upgrade per install type
A fix on disk does nothing for a process that loaded the old code, so each card ends in a restart or recreate. Before you start, back up the database, the configuration directory and the secret key — 1.13.0 also moves local knowledge bases from Chroma to SQLite on first start, and a misconfigured Docker upgrade can lose data.
Python package (pip or uv)
PyPI · 22 Oct
Install 1.13.0, then restart every process. The big change: 1.13.0 disables auto-login by default, so sign-in needs a password. Set LANGFLOW_SUPERUSER_PASSWORD before you start, or startup fails closed. If the instance used auto-login, follow the docs’ “upgrade an existing auto-login installation” steps first so you keep the account that owns your flows.
pip install --upgrade "langflow==1.13.0" uv pip install --upgrade "langflow==1.13.0" # if you use uv langflow --version # 1.13.0
Docker image
Docker Hub · pin tag + digest
The fixed tag is langflowai/langflow:1.13.0 (its digest matches latest, both pushed 22 October). Keep your data outside the container: mount a volume at LANGFLOW_CONFIG_DIR and set LANGFLOW_DATABASE_URL (or LANGFLOW_SAVE_DB_IN_CONFIG_DIR=true), or recreating the container deletes the database and secret key.
docker pull langflowai/langflow:1.13.0 docker buildx imagetools inspect langflowai/langflow:1.13.0 | grep -m1 Digest # image: langflowai/langflow:1.13.0@sha256:<digest> docker compose pull && docker compose up -d --force-recreate docker compose exec app curl -s http://127.0.0.1:7860/api/v1/version
The auto-login upgrade (do not skip this)
Langflow docs
If your instance used auto-login, setting a password alone does not reset the existing account’s generated bootstrap password. Keep the same database, config dir, secret key and username, verify or set a password on that account (PATCH /api/v1/users/{id} with an admin session), then set the variables below before restarting on 1.13.0. There is a documented recovery path if you upgraded without preparing.
LANGFLOW_AUTO_LOGIN=false LANGFLOW_SUPERUSER=<existing-username> # default: langflow LANGFLOW_SUPERUSER_PASSWORD=<strong-password> LANGFLOW_SECRET_KEY=<keep the same key so stored flows decrypt>
OpenRAG and other embedders
OpenRAG 0.8.1
As of 0.8.1 (29 October), OpenRAG has not shipped a Langflow 1.13.0 image — it builds on the 1.12 base and its installer enables auto-login. Until a rebased image lands, keep OpenRAG’s Langflow service bound to the internal network and reachable only through OpenRAG’s own frontend, not published on 0.0.0.0:7860. For any other product, ask the vendor which Langflow version it bundles and when it will move to 1.13.0.
Pre-1.0.0 and abandoned installs
IBM · Langflow releases
IBM’s range starts at 1.0.0, but older and unmaintained Langflow installs carry their own KEV-listed bugs and are not covered by the 1.13.0 fix line. If you cannot move an old instance to 1.13.0, the mitigations below are permanent for it, not temporary.
Step 3: Mitigate what you can’t upgrade today
IBM offers no workaround and says 1.13.0 is the fix. What you can do is remove the preconditions: keep untrusted callers off the server, and turn off the setting that hands out sessions.
At the network edge: don’t expose it, and bind the address
Langflow’s docs are blunt: never expose its port directly to the internet; put a reverse proxy with authentication in front. With Docker, remember that a published port goes to all interfaces by default and skips the host ufw rules, so bind it to localhost explicitly.
# Do not publish Langflow to every interface. Bind it to localhost and put an # authenticating reverse proxy in front (Langflow's own guidance). docker run -p 127.0.0.1:7860:7860 ... # NOT -p 7860:7860, which binds 0.0.0.0 # Docker publishes ports to all addresses by default and bypasses the host ufw # rules for them, so pin the bind address instead of trusting the firewall.
In the config: turn auto-login off and rotate secrets
Turning auto-login off closes the documented unauthenticated session path — the same thing 1.13.0 does by default — and requires a real password. If the instance was ever reachable while vulnerable, assume the secrets it held are burned and rotate them with the Langflow migration script, which re-encrypts stored credentials under a new key.
# Close the documented unauthenticated path: turn auto-login off and require a password. # 1.13.0 does exactly this by default; on 1.12.x you set it yourself. LANGFLOW_AUTO_LOGIN=false LANGFLOW_SUPERUSER=<existing-username> # default: langflow LANGFLOW_SUPERUSER_PASSWORD=<strong-password> # startup fails closed without it LANGFLOW_ENABLE_SUPERUSER_CLI=false # recommended by the docs LANGFLOW_SECRET_KEY=<your-own-32-byte-key> # If the instance was ever exposed, rotate the key AND re-encrypt the secrets it # protected (global variables, component API keys, stored credentials): uv run python scripts/migrate_secret_key.py --dry-run uv run python scripts/migrate_secret_key.py
What these mitigations cover, and what they don’t
- Auto-login off is a stopgap, not the fix: it closes the /api/v1/auto_login path, but IBM lists other unauthenticated code-injection bugs in the batch and offers no workaround for them. Upgrade to 1.13.0.
- A proxy only helps if nothing else is published: an authenticating reverse proxy is worthless if the container still exposes 7860 on 0.0.0.0 next to it. Bind the app to localhost.
- Rotating the secret key is not enough on its own: also rotate the downstream credentials it protected — component API keys, provider tokens and global variables — at each provider, because those keys were exposed, not just the Langflow key.
- Embedders need the vendor: you cannot pip-upgrade the Langflow inside OpenRAG or another product; you contain it and wait for a rebased release.
Signals are thin, so look at the logs you have
IBM has published no indicators of compromise. Ostorlab suggests searching web-server access logs for GET /api/v1/auto_login from outside your known internal addresses, and reviewing flows, accounts, API keys and client registrations created during any window the instance was exposed. Your own check requests will show up there too, so filter them out. A hit means isolating the host and rotating secrets, not just blocking an address.
The order I’d work in
- 1. Today: any Langflow at 1.0.0–1.12.8 reachable from the internet or an untrusted network. Upgrade to 1.13.0, or at minimum set LANGFLOW_AUTO_LOGIN=false, a superuser password and a reverse proxy, and take it off 0.0.0.0.
- 2. Also today: inventory the embedders. Find every OpenRAG and every product that bundles Langflow, read the bundled version, and contain the ones still on 1.12.x.
- 3. This week: internal-only instances. Upgrade them too, and rotate the secret key and downstream credentials for anything that was ever exposed while vulnerable.
- 4. Keep watching: the CISA KEV catalog and OpenRAG’s releases. If either of these CVEs lands in KEV, the clock changes; when OpenRAG ships a 1.13-based image, rebuild.
Conclusion
Two unauthenticated 9.8s in a code-execution platform is close to the worst case for a web application, and the twist here is reach: Langflow is not only a thing you self-host, it is the engine inside OpenRAG and other RAG products, and all of them sit in the 1.0.0–1.12.8 range until they rebase on 1.13.0.
The good news is that the fix is clean and the mitigations are concrete. Upgrade to 1.13.0, which turns auto-login off by default; where you can’t upgrade yet, turn auto-login off yourself, keep the server off the public internet behind an authenticating proxy, and rotate any secrets it held while it was exposed. The CVEs aren’t in CISA KEV today, but Langflow’s history says that window can close fast.
This week in one screen
Check
- • pip show langflow / langflow --version
- • curl /api/v1/version on running servers
- • LANGFLOW_AUTO_LOGIN on each instance
Patch
- • langflow==1.13.0 · langflowai/langflow:1.13.0
- • Set a superuser password before start
- • Rebuild embedders once the vendor rebases
Watch
- • Port 7860 off 0.0.0.0, proxy in front
- • Rotate the secret key if it was exposed
- • CISA KEV + OpenRAG 1.13 image
Sources
- IBM — Security Bulletin: Langflow OSS is affected by multiple vulnerabilities (7294467)
- CVE.org — CVE-2026-93680 record (authentication bypass, CVSS 3.1 9.8)
- CVE.org — CVE-2026-110186 record (code injection → RCE, CVSS 3.1 9.8)
- Langflow — v1.13.0 release notes (auto-login disabled by default)
- Langflow docs — API keys and authentication (AUTO_LOGIN, superuser, secret key)
- Rapid7 — Metasploit wrap-up: Langflow, MongoDB and more (auth-bypass module)
- Ostorlab — Langflow auto-login auth bypass (CVE-2026-93680) analysis
- The Hacker News — Critical Langflow flaws could let attackers run code
- GBHackers — Critical Langflow AI vulnerabilities allow unauthenticated RCE
- CISA — Known Exploited Vulnerabilities catalog



