这篇文章是由 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:7860 --name cve-2026-5027 cve-2026-5027
# 非破坏性验证(证明文件)
python3 CVE-2026-5027.py -t <HOST_IP>
# 带认证模式的验证
python3 CVE-2026-5027.py -t <HOST_IP> -u <USERNAME> -p <PASSWORD>
易受攻击的端点
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 进程的运行时权限,这可能实现:
攻击者 --(获取访问令牌或滥用自动登录)--> Langflow /api/v2/files --(提供包含 ../ 的精心构造的 multipart filename)--> 在上传目录之外写入任意文件 --(写入敏感位置)--> 潜在的远程代码执行
本仓库并非旨在促进对 Langflow 实例的未授权利用。此项目的目的是帮助安全研究人员、防御者和开发者理解该漏洞,在受控环境中验证暴露风险,并应用有效的缓解措施。