A critical path traversal via symlink-following in Langflow's TAR extraction (CVSS 9.6, Scope Changed) allows any user who can upload files to a RAG-enabled Langflow instance to read arbitrary files from the host filesystem — including the application's JWT signing secret. With no privileges required and a fully public PoC including a demo video, the blast radius is severe: once the JWT secret is exfiltrated via the RAG chatbot, an attacker can forge tokens for any user ID and achieve remote code execution through Langflow's built-in Python Interpreter node — all without any further vulnerability. This package carries 53 known CVEs and is widely deployed in enterprise RAG architectures, amplifying organizational exposure. Upgrade immediately to Langflow 1.9.2, which patches `BaseFileComponent._unpack_bundle` to reject symlinks and hardlinks; if patching is blocked, restrict file upload access to fully trusted users and rotate the JWT secret on any instance that processed untrusted TAR uploads.
What is the risk?
Critical. The 4-stage kill chain is fully documented and weaponized: malicious TAR upload triggers symlink traversal, reads JWT secret into vector store, chatbot surfaces the secret on demand, forged admin JWT unlocks Python Interpreter RCE. The CVSS Scope Change (S:C) is the key signal — the compromise escapes the application boundary. No privileges are required to trigger the initial upload in typical public-facing RAG deployments. The combination of a public PoC, no KEV listing yet (meaning defenders may not be actively prioritizing it), and broad deployment in enterprise RAG scenarios makes this a high-urgency patching target. Containerized deployments offer partial mitigation only if the JWT secret is not on a host-mounted volume.
How does the attack unfold?
What systems are affected?
| Package | Ecosystem | Vulnerable Range | Patched |
|---|---|---|---|
| Langflow | pip | < 1.9.2 | 1.9.2 |
Do you use Langflow? You're affected.
How severe is it?
What is the attack surface?
What should I do?
5 steps-
Patch immediately: upgrade to Langflow 1.9.2 (PR #12945 patches
_unpack_bundleto reject symlinks, hardlinks, and non-regular TAR entries). -
If patching is blocked: disable or gate all BaseFileComponent-derived nodes (Read File, Docling, NvidiaIngest, UnstructuredAPI, VideoFile) behind admin-only access controls.
-
Rotate secrets: audit and rotate the Langflow JWT signing secret (
secret_keyfile) on any instance that processed untrusted file uploads prior to patching. -
Detection: query vector database contents for strings matching sensitive path patterns (
/etc/passwd,secret_key,eyJJWT header prefix) or unexpected base64 blobs; review ingestion logs for TAR uploads from external or untrusted users. -
Harden runtime: run the Langflow process as a non-root user with read-only bind mounts excluding the secret key path, limiting symlink traversal reach even if a bypass is discovered.
How is it classified?
Which compliance frameworks are affected?
This CVE is relevant to:
Frequently Asked Questions
What is CVE-2026-55447?
A critical path traversal via symlink-following in Langflow's TAR extraction (CVSS 9.6, Scope Changed) allows any user who can upload files to a RAG-enabled Langflow instance to read arbitrary files from the host filesystem — including the application's JWT signing secret. With no privileges required and a fully public PoC including a demo video, the blast radius is severe: once the JWT secret is exfiltrated via the RAG chatbot, an attacker can forge tokens for any user ID and achieve remote code execution through Langflow's built-in Python Interpreter node — all without any further vulnerability. This package carries 53 known CVEs and is widely deployed in enterprise RAG architectures, amplifying organizational exposure. Upgrade immediately to Langflow 1.9.2, which patches `BaseFileComponent._unpack_bundle` to reject symlinks and hardlinks; if patching is blocked, restrict file upload access to fully trusted users and rotate the JWT secret on any instance that processed untrusted TAR uploads.
Is CVE-2026-55447 actively exploited?
No confirmed active exploitation of CVE-2026-55447 has been reported, but organizations should still patch proactively.
How to fix CVE-2026-55447?
1. Patch immediately: upgrade to Langflow 1.9.2 (PR #12945 patches `_unpack_bundle` to reject symlinks, hardlinks, and non-regular TAR entries). 2. If patching is blocked: disable or gate all BaseFileComponent-derived nodes (Read File, Docling, NvidiaIngest, UnstructuredAPI, VideoFile) behind admin-only access controls. 3. Rotate secrets: audit and rotate the Langflow JWT signing secret (`secret_key` file) on any instance that processed untrusted file uploads prior to patching. 4. Detection: query vector database contents for strings matching sensitive path patterns (`/etc/passwd`, `secret_key`, `eyJ` JWT header prefix) or unexpected base64 blobs; review ingestion logs for TAR uploads from external or untrusted users. 5. Harden runtime: run the Langflow process as a non-root user with read-only bind mounts excluding the secret key path, limiting symlink traversal reach even if a bypass is discovered.
What systems are affected by CVE-2026-55447?
This vulnerability affects the following AI/ML architecture patterns: RAG pipelines, document ingestion pipelines, LLM application frameworks, AI chatbot deployments, multi-modal agent frameworks.
What is the CVSS score for CVE-2026-55447?
CVE-2026-55447 has a CVSS v3.1 base score of 9.6 (CRITICAL).
What is the AI security impact?
Affected AI Architectures
MITRE ATLAS Techniques
AML.T0037 Data from Local System AML.T0049 Exploit Public-Facing Application AML.T0050 Command and Scripting Interpreter AML.T0082 RAG Credential Harvesting AML.T0085.000 RAG Databases AML.T0106 Exploitation for Credential Access Compliance Controls Affected
What are the technical details?
Original Advisory
### Summary All components based on `BaseFileComponent` are vulnerable to the following vulnerability: 1. Docling (`DoclingInlineComponent`) 2. Docling Serve (`DoclingRemoteComponent`) 3. Read File (`FileComponent`) 4. NVIDIA Retriever Extraction (`NvidiaIngestComponent`) 5. Video File (`VideoFileComponent`) 6. Unstructured API (`UnstructuredComponent`) For clarity, from now on I'll only refer to Read File component. The Read File node processes user-controlled files. Example scenario is a RAG chatbot - a system that allows users of an organization to ask questions about documents saved in the organizations. By controlling a files that are digested into the RAG, an attacker can direct the node to read *any* file on the file-system by absolute path. Using this vulnerability an attacker can acheive RCE: 1. Upload a file that directs the node to read Langflow's `secret_key` file containing the JWT token secret. 2. This would allow the attacker then to simply task the Chatbot for the JWT secret. 3. Using this secret, the attacker then crafts a JWT token for any user-id, bypassing authentication. 4. Code execution is then trivial - simply create a new flow with "Python Interpreter" node, fill it with arbitrary Python code and execute it. Tested on commit 2d67402b1dbaefcbce85a244d4a6cd5e4bda1cfe ### Details The vulnerability is in: `langflow/src/lfx/src/lfx/base/data/base_file.py` Specifically in `_unpack_bundle`. This function extracts tar files, which can contain a symlink. This symlink can point to any file in the filesystem. Then, in `self.process_files()`, the file pointed by the symlink will be parsed and saved into the RAG. This can be done with unlimited number of symlinks in the same tar which can also be useful in some scenarios. Suggestd fix - iterate over the files and make sure all are regular files or directories. ### PoC Reproduction: 1. Create a flow with Read File (or any other affected components), and connect its output to some storage such as Chroma DB. 2. Create a symlink pointing to any file. For the above exploit, point the symlink to langflow's JWT token file. 3. Compress this symlink with tar. 4. Upload it to the Read File component. 5. Check the database, or ask a Chatbot connected to this vector database for the contents of the file. Concrete PoC: ------------ - Flow with RAG ingestion and a Chatbot around it: [Vector Store RAG.json](https://github.com/user-attachments/files/25159960/Vector.Store.RAG.json) - Exploit tar: [archive.tar.txt](https://github.com/user-attachments/files/25159954/archive.tar.txt) (remove .txt, GitHub blocked .tar) - Create a file `/tmp/trip.docx` with any contents in it - Ingest the file in the flow above, and ask the Chatbot a question about this file. A demo showing the attack: https://github.com/user-attachments/assets/af00f700-f13f-4eac-848e-8afd11fb9297 In the demo the attacker steals `Langflow` secret key used to sign JWTs. The second stage of the attack, not shown in the demo, is using this key to sign a JWT token and executing Python code on the server using the Python code interpreter node. ### Impact Any Langflow user using any of the above mentioned components to ingest user-controlled data is affected. Depending on exact scenario, the user can also be exposed to an RCE risk. ### Patches Fixed in **1.9.2** via PR [#12945](https://github.com/langflow-ai/langflow/pull/12945). `BaseFileComponent._unpack_bundle` now rejects symlink and hardlink members (and any non-regular entries) during TAR extraction, with additional defensive symlink filtering during directory recursion and after extraction. Upgrade to **1.9.2 or later**. Ori Lahav Security Researcher @ Rubrik Inc.
Exploitation Scenario
An attacker targeting an enterprise's internal AI knowledge-base chatbot built on Langflow crafts a TAR archive containing a single symlink named `quarterly-report.docx` pointing to `/opt/langflow/.langflow/secret_key`. They upload this archive via the RAG ingestion endpoint — no authentication required in many deployments, as the endpoint is designed for employee document uploads. Langflow's `_unpack_bundle` extracts the archive and follows the symlink, reading the JWT secret and persisting it in the connected Chroma DB vector store alongside legitimate documents. The attacker then queries the chatbot: 'Summarize the document about the application secret key,' receiving the JWT signing secret verbatim in the LLM response. Using this secret, the attacker forges a JWT token with an arbitrary admin user ID, authenticates to the Langflow API, creates a new flow containing a Python Interpreter node pre-loaded with a reverse shell payload, executes the flow, and achieves persistent RCE on the host server.
Weaknesses (CWE)
CWE-200 Exposure of Sensitive Information to an Unauthorized Actor
Primary
CWE-61 UNIX Symbolic Link (Symlink) Following
Primary
CWE-200 — Exposure of Sensitive Information to an Unauthorized Actor: The product exposes sensitive information to an actor that is not explicitly authorized to have access to that information.
- [Architecture and Design] Compartmentalize the system to have "safe" areas where trust boundaries can be unambiguously drawn. Do not allow sensitive data to go outside of the trust boundary and always be careful when interfacing with a compartment outside of the safe area. Ensure that appropriate compartmentalization is built into the system design, and the compartmentalization allows for and reinforces privilege separation functionality. Architects and designers should rely on the principle of least privilege to decide the appropriate time to use privileges and the time to drop privileges.
Source: MITRE CWE corpus.
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H References
Timeline
Related Vulnerabilities
CVE-2026-55255 9.9 Langflow: IDOR allows cross-user flow execution
Same package: langflow CVE-2026-33309 9.9 langflow: Path Traversal enables file access
Same package: langflow CVE-2024-37014 9.8 Langflow: unauthenticated RCE via custom component API
Same package: langflow CVE-2026-33017 9.8 langflow: Code Injection enables RCE
Same package: langflow CVE-2026-27966 9.8 langflow: Code Injection enables RCE
Same package: langflow