CVE-2026-8505: Langflow Authentication Bypass Vulnerability
CRITICALCVE-2026-8505 is a CRITICAL (CVSS 9.8) authentication bypass vulnerability (CWE-306: Missing Authentication for Critical Function) affecting Langflow libraries in the PyPI ecosystem. The issue involves unauthenticated flow execution via webhook authentication bypass. Remediation is available by upgrading affected packages to version 1.9.1.
CVE-2026-8505 at a Glance
Security Impact
CVSS: 9.8
The security impact metrics below are parsed directly from the CVSS v3.1 vector string (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H).
How to Fix CVE-2026-8505
To remediate this vulnerability, upgrade all affected Langflow dependencies to a patched release. Both direct and transitive dependencies should be checked, as frameworks or security libraries may pull in vulnerable versions transitively.
pip install langflow>=1.9.1
Run the following command in your project directory to verify that all resolved dependencies use the patched release:
pip show langflow
How to Check if You Are Affected
To determine whether your Python environment is affected by CVE-2026-8505, inspect your installed packages using pip:
pip show langflow
Analyze the terminal output to locate any version of Langflow in your dependency tree. If any resolved version matches the vulnerable ranges listed in the table below (for example, versions earlier than 1.9.1), your application is affected.
Note: The pip show langflow command checks currently installed packages in your active Python environment.
Technical Details
Vulnerability Mechanism & Technical Analysis
This vulnerability is classified under CWE-306: Missing Authentication for Critical Function, where the product does not perform any authentication for functionality that requires a provable user identity or consumes a significant amount of resources. In Langflow, software state validation or input boundaries are circumvented during processing. Review the official source advisory statement below for specific affected components, classes, and reproduction details.
Source Advisory Statement
CVE-2026-8505 Affected Langflow Versions
1 component(s)| Product / Package | Ecosystem | Affected Versions | Fixed Version |
|---|---|---|---|
|
langflow
|
PyPI |
≥ 1.7.0
< 1.9.1
|
1.9.1
|
References
Frequently Asked Questions
What is CVE-2026-8505?
Which Langflow versions are affected?
What version fixes CVE-2026-8505?
Is langflow affected?
What is the CVSS score of CVE-2026-8505?
What CWE is associated with CVE-2026-8505?
How can I check PyPI dependencies for CVE-2026-8505?
Machine-readable OSV JSON
OSV v1.5 Schema
{
"schema_version" : "1.4.0",
"id" : "GHSA-cf6m-vc3m-7cgm",
"modified" : "2026-10-05T22:31:22Z",
"published" : "2026-10-05T22:31:22Z",
"aliases" : [ "CVE-2026-8505" ],
"summary" : "Langflow: Unauthenticated Flow Execution via Webhook Authentication Bypass",
"details" : "### Summary\nA vulnerability in Langflow's webhook authentication logic allows unauthenticated users to trigger the execution of any flow. The system incorrectly bypasses API key validation when the `WEBHOOK_AUTH_ENABLE` configuration is set to `False`. This allows a remote attacker who knows a flow's UUID to execute it as if they were the owner, potentially leading to Remote Code Execution (RCE) or Denial of Service (DoS).\n\n### Details\nThe `WEBHOOK_AUTH_ENABLE` setting was introduced in v1.7.0 (#9139) with a default of `False`. The root cause is in the webhook authentication path, `AuthService.get_webhook_user` (`src/backend/base/langflow/services/auth/service.py`; the thin wrapper in `src/backend/base/langflow/services/auth/utils.py` just delegates to it):\n\n```python\nasync def get_webhook_user(self, flow_id: str, request: Request) -> UserRead:\n settings_service = self.settings\n ...\n # VULNERABILITY: If this setting is False (default in <= 1.9.0), it returns\n # the flow owner WITHOUT checking the API Key in the request.\n if not settings_service.auth_settings.WEBHOOK_AUTH_ENABLE:\n try:\n flow_owner = await get_user_by_flow_id_or_endpoint_name(flow_id)\n return flow_owner\n```\n\nBy default (v1.7.0 through v1.9.0), Langflow treats `WEBHOOK_AUTH_ENABLE` as `False`, meaning all webhook endpoints are public. This relies exclusively on the secrecy of the `flow_id` (UUID), which is an insecure practice (Security by Obscurity).\n\nA related report, GHSA-6g4m-v5q2-475v, demonstrated a concrete RCE chain through this same bypass using the `PythonCodeStructuredTool` component (`exec()` on flow-authored Python code). That report is a duplicate of this root cause and has been closed in favor of this advisory; credit for that PoC has been added here.\n\n### PoC\n1. Identify a valid `flow_id` for a flow that performs a sensitive action (e.g., sending an email, writing to a database, or executing a Python script).\n2. Execute a POST request to the webhook endpoint without any `Authorization` header or API Key:\n```bash\ncurl -X POST \"http://<server-ip>:7860/api/v1/webhook/<flow_id>\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\"input\": \"payload\"}'\n```\n3. Verify that the flow execution is triggered and the action is performed on the server.\n\n### Impact\nThis is a **High-severity Authentication Bypass**.\n- **Remote Code Execution (RCE)**: Flows often contain components that execute arbitrary Python code. An attacker can leverage this to gain full control over the server.\n- **Denial of Service (DoS)**: Attackers can exhaust system resources by triggering heavy flows concurrently.\n- **Data Integrity**: Unauthorized execution of flows can lead to unintended modification of databases or external systems connected via the flow.\n\n### Affected versions\n`>= 1.7.0, <= 1.9.0` (the range in which `WEBHOOK_AUTH_ENABLE` existed and defaulted to `False`).\n\n### Fix\nFixed in **v1.9.1** by [PR #12845](https://github.com/langflow-ai/langflow/pull/12845) — `fix(security): default WEBHOOK_AUTH_ENABLE to True`. The setting's default changed from `False` to `True`, so webhook endpoints now require API key authentication and ownership validation by default, unless an operator explicitly opts out via `LANGFLOW_WEBHOOK_AUTH_ENABLE=false`.",
"severity" : [ {
"type" : "CVSS_V3",
"score" : "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"
} ],
"affected" : [ {
"package" : {
"ecosystem" : "PyPI",
"name" : "langflow"
},
"ranges" : [ {
"type" : "ECOSYSTEM",
"events" : [ {
"introduced" : "1.7.0"
}, {
"fixed" : "1.9.1"
} ]
} ],
"database_specific" : {
"last_known_affected_version_range" : "<= 1.9.0"
}
} ],
"references" : [ {
"type" : "WEB",
"url" : "https://github.com/langflow-ai/langflow/security/advisories/GHSA-cf6m-vc3m-7cgm"
}, {
"type" : "ADVISORY",
"url" : "https://nvd.nist.gov/vuln/detail/CVE-2026-8505"
}, {
"type" : "WEB",
"url" : "https://github.com/langflow-ai/langflow/pull/12845"
}, {
"type" : "WEB",
"url" : "https://github.com/langflow-ai/langflow/commit/cb6f7508dda83ead9c3e4417e96e4b5bd9a260c3"
}, {
"type" : "PACKAGE",
"url" : "https://github.com/langflow-ai/langflow"
}, {
"type" : "WEB",
"url" : "https://github.com/langflow-ai/langflow/releases/tag/v1.9.1"
}, {
"type" : "WEB",
"url" : "https://www.ibm.com/support/pages/node/7278921"
} ],
"database_specific" : {
"cwe_ids" : [ "CWE-306" ],
"severity" : "CRITICAL",
"github_reviewed" : true,
"github_reviewed_at" : "2026-10-05T22:31:22Z",
"nvd_published_at" : null
}
}