CVE-2026-33017

Langflow — Unauthenticated Remote Code Execution via Public Flow Build Endpoint
🔥 CVSS 3.1  9.8 / 10 — CRITICAL 🔴 CISA Known Exploited Vulnerability

Overview

Actively Exploited. This vulnerability has been added to CISA's Known Exploited Vulnerabilities (KEV) Catalog on March 25, 2026 with a remediation deadline of April 8, 2026. Federal agencies are required to apply mitigations per BOD 22-01.

CVE-2026-33017 is an unauthenticated remote code execution (RCE) vulnerability in Langflow, a popular tool for building and deploying AI-powered agents and workflows. The POST /api/v1/build_public_tmp/{flow_id}/flow endpoint allows building public flows without authentication. When the optional data parameter is supplied, the endpoint uses attacker-controlled flow data (containing arbitrary Python code in node definitions) instead of stored flow data. This code is passed to exec() with zero sandboxing, resulting in unauthenticated remote code execution.

Relation to CVE-2025-3248 & Why This Is Distinct

This vulnerability is distinct from CVE-2025-3248, which fixed /api/v1/validate/code by adding authentication. That earlier CVE was itself added to CISA's KEV catalog due to active exploitation.

Key difference: The build_public_tmp endpoint is designed to be unauthenticated (for public flows). The issue is that it incorrectly accepts attacker-supplied flow data containing arbitrary executable code via the data parameter. A simple authentication fix is insufficient — the endpoint must be restricted to only use stored flow data from the database.
AspectCVE-2025-3248CVE-2026-33017
Endpoint/api/v1/validate/code/api/v1/build_public_tmp/{id}/flow
Fix appliedAdded authenticationRemoved data parameter (v1.9.0)
Root causeMissing auth on code validationUnauth endpoint accepts attacker-controlled executable code
Execution viavalidate_code()exec()create_class()prepare_global_scope()exec()

Vulnerability Description

Unauthenticated remote code execution in Langflow via the public flow build endpoint.

The root cause is a combination of CWE-94 (Code Injection), CWE-95 (Eval Injection), and CWE-306 (Missing Authentication for Critical Function). The vulnerable endpoint /api/v1/build_public_tmp/{flow_id}/flow is designed to be unauthenticated for building public flows. However, when the optional data parameter is supplied, the endpoint uses attacker-controlled flow data instead of stored database data. The attacker's flow data contains arbitrary Python code in node definitions, which flows through the graph builder:

  1. start_flow_build(data=attacker_data)generate_flow_events()
  2. create_graph()build_graph_from_data(payload=data)
  3. Graph.from_payload() → node initialization → instantiate_class()
  4. eval_custom_component_code(code)create_class()
  5. prepare_global_scope()exec(compiled_code, exec_globals)

The exec() call has zero sandboxing — any Python code is executed with full server process privileges. Even simple assignment statements (e.g., _x = os.system("id")) are executed during graph building, before the flow even "runs."

Prerequisites for Exploitation

RequirementDetail
Public flow existsTarget instance has at least one public flow (common for demos, chatbots, shared workflows)
Flow UUID knownDiscoverable via shared links/URLs
AuthenticationNone required — only a client_id cookie (any arbitrary string)
AUTO_LOGIN=true (the default): When auto-login is enabled, an attacker can meet all prerequisites without any credentials:
  1. GET /api/v1/auto_login → obtain superuser token
  2. POST /api/v1/flows/ → create a public flow
  3. Exploit via build_public_tmp without any auth

Affected Products & Versions

ProductAffected VersionsFixed Version
Langflow (pip)≤ 1.8.21.9.0
Fix: The fix in version 1.9.0 removes the ability for the build_public_tmp endpoint to accept attacker-supplied flow data. Public flows now only execute their stored flow data from the database. Patch commit: 73b6612.

Impact

Impact AreaDetail
ConfidentialityHigh — Arbitrary file read, environment variable exfiltration (API keys, DB credentials, cloud tokens)
IntegrityHigh — Arbitrary file write, command execution, flow/data manipulation
AvailabilityHigh — Full server process control, denial of service
Attack VectorNetwork — remotely exploitable over the internet
Privileges RequiredNone — completely unauthenticated
User InteractionNone — no user action needed
Full Server Compromise. Successful exploitation grants full server process privileges, enabling:
  • Arbitrary command execution and reverse shell access
  • Environment variable exfiltration (API keys, database credentials, cloud tokens)
  • Access to all flows, messages, and stored credentials in the database
  • Lateral movement within the network
  • Persistent backdoor installation

Exploitation Details

Exploitation is trivially simple. A single unauthenticated HTTP POST request with a crafted data parameter containing a malicious node definition is sufficient.

Exploitation complexity is extremely low. No authentication, no special tools, and no user interaction required. The PoC achieves 100% reproducibility (confirmed 6/6 runs across two test sets). Active exploitation in the wild has been confirmed by CISA and Sysdig.

Attack Flow

  1. Attacker identifies a Langflow instance with a public flow (or creates one via AUTO_LOGIN).
  2. Attacker sends a POST request to /api/v1/build_public_tmp/{flow_id}/flow with a data parameter containing a node whose code field holds arbitrary Python.
  3. Langflow's graph builder parses the attacker's node definitions and calls prepare_global_scope()exec() on the code.
  4. Attacker's Python code executes with full server process privileges — during graph building, before the flow even "runs."
  5. Attacker achieves arbitrary command execution, credential exfiltration, or reverse shell.

Mitigation & Remediation

CISA BOD 22-01 Deadline: April 8, 2026. Apply mitigations per vendor instructions, follow applicable BOD 22-01 guidance for cloud services, or discontinue use of the product if mitigations are unavailable.

Patched Version

ProductFixed Version
Langflow1.9.0 and later

Recommended Actions

  1. Upgrade immediately to Langflow 1.9.0 or later.
  2. Disable AUTO_LOGIN — set AUTO_LOGIN=false if not already done. The default AUTO_LOGIN=true setting allows unauthenticated users to create public flows, making exploitation trivial even without pre-existing public flows.
  3. Restrict network access — if patching is not immediately possible, restrict access to the Langflow instance to trusted networks only. Do not expose Langflow directly to the internet.
  4. Review server logs — check for suspicious POST requests to /api/v1/build_public_tmp/ endpoints, especially those with a data parameter containing code fields.
  5. Rotate credentials — if exploitation is suspected, rotate all API keys, database credentials, cloud tokens, and other secrets accessible to the Langflow server process.
  6. Monitor CISA KEV Catalog for updated guidance.

Key Details

PropertyValue
CVE ID CVE-2026-33017
Vendor / Product Langflow — Langflow
NVD Published2026-03-20
NVD Last Modified2026-03-26
CVSS 3.1 Score9.8
CVSS 3.1 VectorCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
SeverityCRITICAL
CWE CWE-94
CISA KEV Added2026-03-25
CISA KEV Deadline2026-04-08
Known Ransomware Use No

CVSS 3.1 Breakdown

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

Required Action

CISA BOD 22-01 Deadline: 2026-04-08. Apply mitigations per vendor instructions, follow applicable BOD 22-01 guidance for cloud services, or discontinue use of the product if mitigations are unavailable.

Timeline

DateEvent
2026-03-20CVE-2026-33017 published on NVD; GitHub advisory GHSA-vwmf-pq79-vjvx released
2026-03-25Added to CISA Known Exploited Vulnerabilities catalog
2026-03-26NVD record last modified
2026-04-08CISA BOD 22-01 remediation deadline