Langflow: Authenticated Users Can Read, Modify, and Delete Any Flow via Missing Ownership Check
Vulnerability
IDOR in GET/PATCH/DELETE /api/v1/flow/{flow_id}
The _read_flow helper in src/backend/base/langflow/api/v1/flows.py branched on the AUTO_LOGIN setting to decide whether to filter by user_id. When AUTO_LOGIN was False (i.e., authentication was enabled), neither branch enforced an ownership check — the query returned any flow matching the given UUID regardless of who owned it.
This exposed any authenticated user to:
- Read any other user's flow, including embedded plaintext API keys
- Modify the logic of another user's AI agents
- Delete flows belonging to other users
The vulnerability was introduced by the conditional logic that was meant to accommodate public/example flows (those with user_id = NULL) under auto-login mode, but inadvertently left the authenticated path without an ownership filter.
Fix (PR #8956)
The fix removes the AUTO_LOGIN conditional entirely and unconditionally scopes the query to the requesting user:
- auth_settings = settings_service.auth_settings
- stmt = select(Flow).where(Flow.id == flow_id)
- if auth_settings.AUTO_LOGIN:
- stmt = stmt.where(
- (Flow.user_id == user_id) | (Flow.user_id == None) # noqa: E711
- )
+ stmt = select(Flow).where(Flow.id == flow_id).where(Flow.user_id == user_id)
All three operations — read, update, and delete — route through _read_flow, so the single change covers the full attack surface. A cross-user isolation test (test_read_flows_user_isolation) was added to prevent regression.
Acknowledgements
Langflow thanks the security researcher who responsibly disclosed this vulnerability:
Affected software
Click a technology to see all vulnerabilities affecting it.
| Platform | Package | Vulnerable versions | Fixed in |
|---|---|---|---|
| Python (PyPI) | langflow | < 1.5.1 | 1.5.1 |
| Python (PyPI) | langflow-base | < 0.5.1 | 0.5.1 |
References
- https://github.com/langflow-ai/langflow/security/advisories/GHSA-8c4j-f57c-35cf
- https://nvd.nist.gov/vuln/detail/CVE-2026-34046
- https://github.com/langflow-ai/langflow/pull/8956
- https://github.com/langflow-ai/langflow
- https://pypi.org/project/langflow
- https://github.com/advisories/GHSA-8c4j-f57c-35cf
- https://pypi.org/project/langflow-base
- CVSS vector
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N- Weakness (CWE)
CWE-639, CWE-862- Platform
- Python (PyPI)
- Package
langflow, langflow-base- Disclosed
- 27.03.2026
- Updated
- 11.10.2026 14:18
Sources and licenses
OSV / GitHub Advisory Database - PYSEC-2026-2567 - PyPA Advisory Database; CC BY 4.0
OSV / GitHub Advisory Database - GHSA-8c4j-f57c-35cf - CC BY 4.0
OSV / GitHub Advisory Database - PYSEC-2026-2570 - PyPA Advisory Database; CC BY 4.0
Vulnerability history: langflow
All published vulnerabilities of this package (Python (PyPI)), newest first. Shows whether this is a one-off slip or a package that needs watching.
- Total entries
- 42
- First → latest
- 06.2024 10.2026
- Without a fix
- 7
- Exploited in attacks
- 5
Severity breakdown
- Critical 15
- High 17
- Medium 7
- Low 3
Disclosures per year
- 2024: 4
- 2025: 5
- 2026: 33
-
Langflow: Authenticated Users Can Read, Modify, and Delete Any Flow via Missing Ownership Check this entry
Know which vulnerabilities affect your application
With the DockRay integration and software inventory enabled, DockRay checks reported component versions against known vulnerabilities and notifies you about confirmed matches. Coverage depends on the supported technology and available advisory data.