CVE-2026-55450Critical· 9.3▾ AbyssalPoC availableLangflow: Unauthenticated file upload leads to DoS (space exhaustion) and information leak
▾ Abyssal zone — Critical with a public exploit or in-the-wild use
impact 51.2 · likelihood 0.2 · exploitation 12
A public proof-of-concept already exists for this vulnerability — see Exploit availability below.
Public exploit / PoC code seen in 1 source. Availability, not in-the-wild use.
Exploit-prediction probability, daily snapshots since Jul 4.
Disclosure to exploitation, from the record and what we observed since indexing it.
Disclosed via GHSA
0.3%
0.3% → 12%
Nuclei ×1
Unauthenticated users can upload any amount of data to the server without any limitations. No need for any prior knowledge, only network access to Langflow.
This can lead to space exhaustion on the server.
In adition, in the response, the absolute path of the uploaded file is reported to the attacker, which is an information leak that can assist in chaining other primitives.
Tested on commit 2d67402b1dbaefcbce85a244d4a6cd5e4bda1cfe
Code is in langflow/api/v1/[endpoints.py](http://endpoints.py/):
@router.post(
"/upload/{flow_id}",
status_code=HTTPStatus.CREATED,
deprecated=True,
)
async def create_upload_file(
file: UploadFile,
flow_id: UUID,
) -> UploadFileResponse:
...
As can be seen above, there is no authentication. There is not validation over flow_id as well, unlike other endpoints:
flow_id_str = str(flow_id)
file_path = await asyncio.to_thread(save_uploaded_file, file, folder_name=flow_id_str)
Function save_uploaded_file saves the file to local file-system.
Suggested fix:
PoC:
curl 'http://localhost:7860/api/v1/upload/<any_uuid>' -F "file=@<any_file>"
Example:
# curl 'http://localhost:7860/api/v1/upload/11111111-1111-1111-1111-111111111111' -F "file=@/tmp/dummy.txt"
{"flowId":"11111111-1111-1111-1111-111111111111","file_path":"/Users/ori/Library/Caches/langflow/11111111-1111-1111-1111-111111111111/9d63c3b5b7623d1fa3dc7fd1547313b9546c6d0fbbb6773a420613b7a17995c8.txt"}
Fixed in 1.9.1 via PR #12831. The deprecated POST /api/v1/upload/{flow_id} endpoint now uses the get_flow dependency, requiring an authenticated user and flow ownership (returns 404 for missing or cross-user flows), and enforces the max_file_size_upload limit (HTTP 413) — closing the unauthenticated upload and disk-exhaustion vectors. Upgrade to 1.9.1 or later.
Note: the response still returns the file's absolute path (file_path); after this fix it is only disclosed to the authenticated owner of the flow.
Ori Lahav Security Researcher @ Rubrik Inc.
langflow < 1.9.1Upgrade to a patched release:
langflow 1.9.1Field changes observed since this record was first indexed.
Connected by shared product, vendor, weakness, or advisory.
CVE-2025-3248Critical· 9.8Langflow versions prior to 1.3.0 are susceptible to code injection in the /api/v1/validate/code endpoint
CVE-2026-55446High· 7.5Langflow: Unauthenticated DoS through multipart form boundary file upload
CVE-2026-55447Critical· 9.6Langflow: BaseFileComponent-based nodes arbitrary file read with RCE exploit
CVE-2026-19300High· 7.5IBM Langflow OSS 1.0.0 through 1.11.2 could allow a remote attacker to obtain sensitive information due to incomplete scrubbing of sensitive credential fields.
CVE-2026-0770HighLangflow affected by Remote Code Execution via validate_code() exec()
CVE-2024-48061Critical· 9.8Langflow vulnerable to remote code execution