系统:运行中
← 返回所有攻击
INFRASTRUCTURE CRITICAL NEW

Langflow 批量删除路径遍历:可清除服务器任意目录

Langflow 知识库删除 API 中的路径遍历漏洞,使已认证用户能删除进程可写的任意目录。已在 1.9.0 修复;1.8.4 及更早版本受影响。

2026-07-17 // 6 min affects: langflow, llm-orchestration, rag-pipelines, ai-agent-builders

这是什么?

Langflow 是一个被广泛部署的开源平台,用于构建 LLM 与智能体工作流,其暴露于互联网的实例数量庞大。维护者发布了安全公告(GHSA-9whx-c884-c68q),描述了知识库 API 中的一处路径遍历漏洞,使已认证用户能够删除服务器上的任意目录。该漏洞影响 Langflow 1.8.4 及更早版本,并已在 1.9.0 中修复。它在 2026 年 7 月的漏洞情报中再次受到关注,与一批更广泛的 Langflow 与 Ollama 公告同时出现——这也提醒我们,暴露在外的实例往往远远落后于已修复版本。

本文是对一个已披露且已修复问题的防御性分析,不提供任何可用的利用代码;重点在于理解这一漏洞类别,并知道如何在自己的代码中避免它。

工作原理

漏洞位于知识库的批量删除处理器中——即 DELETE /api/v1/knowledge_bases 端点,由 src/backend/base/langflow/api/v1/knowledge_bases.py 中的 delete_knowledge_bases_bulk 函数实现。

根本原因是典型的路径遍历模式(CWE-22)。该处理器接收用户提供的知识库名称列表,直接将其拼接进文件系统路径,再将结果传给递归删除(shutil.rmtree())——却未检查解析后的路径是否仍在预期的用户目录之内。其他知识库端点会经过安全的辅助函数(_resolve_kb_path()),而批量删除路径完全绕过了它。

# 存在漏洞的形态(简化、示意)
for name in kb_names:                 # 由攻击者控制
    target = base_dir / name          # 无边界校验
    shutil.rmtree(target)             # 越界的递归删除

# 含有 "../" 遍历序列的名称会解析到
# base_dir 之外:删除操作逃出用户目录。

由于名称字段可携带 ../ 遍历序列,计算出的路径会脱离沙箱,递归删除便落在序列所指之处——包括另一租户的数据,或主机上其他位置的路径。没有内存破坏,没有代码执行:只是字符串拼接驱动了一次破坏性的文件操作。

为何重要

评分所体现的影响是完整性与可用性,而非机密性——它销毁数据,而非读取数据。公告将其评为严重(CVSS 9.6),网络攻击向量、攻击复杂度低、仅需较低权限(任意已认证用户)。

三点后果尤为突出。其一,跨租户影响半径:在共享的多用户实例上,一个已认证账户可清除另一租户的知识库目录。其二,服务中断与数据丢失:删除可能移除应用文件、模型缓存、配置,或进程可写的同址备份,可能使实例无法恢复。其三,大规模暴露:Langflow 实例常可从互联网访问,且许多运行在薄弱或默认认证之后,因此”已认证”这道门槛比听上去要低。

该模式并不限于 Langflow。任何允许客户端为资源命名、随后把该名称映射到文件系统的 API——无论用于上传、导出、缓存还是删除——只要信任该名称,就承担同样的风险。

防御措施

修复与通用教训是同一件事:永远不要把客户端提供的名称当作路径组成部分来信任,并始终确认解析后的路径仍位于其允许的根目录之内。

  • 升级到 Langflow 1.9.0 或更高版本。 这是直接的修复。补丁(PR #12243)使用 Path.resolve() 归一化所提供的路径,并在删除前校验其位于已认证用户目录之下;后续更新以 Path.is_relative_to() 强化了校验,以避免前缀歧义缺陷。
  • 在你自己的文件 API 中强制路径边界校验。 解析候选路径,并在任何读、写、删操作前断言 resolved.is_relative_to(base_dir)。对含有分隔符或遍历序列的名称直接拒绝,而不是试图清洗它们。
  • 以最小权限运行进程。 破坏性遍历只能触及服务账户可写的内容。隔离数据目录,撤销应用与备份路径的写权限,并将备份保存在不同的文件系统上。
  • 不要把管理/API 面暴露给不可信网络。 将 Langflow 置于强认证与网络分段之后;把任何面向互联网的实例视为优先修补对象。
  • 对递归删除与遍历特征进行告警。 记录知识库删除调用,并将名称参数中的 .. 序列或分隔符作为检测信号加以监控。

状态

项目详情
受影响Langflow ≤ 1.8.4
修复版本Langflow 1.9.0
弱点CWE-22(路径遍历),影响完整性/可用性
严重性严重,CVSS 9.6(AV:N/AC:L/PR:L/UI:N/S:C/C:N/I:H/A:H)
参考CVE-2026-42048 · GHSA-9whx-c884-c68q
披露公告发布于 2026 年 4 月 27 日;2026 年 7 月再次受到关注

上游修复无需任何专有工具——升级到 1.9.0,在你负责的任何文件处理端点中应用路径边界校验,并收紧服务账户,使遍历无处可破坏有价值的数据。

Sources