🔴 【深度分析】严重安全漏洞:CVE-2026-54352

CVSS 评分: 严重(9.6)🔴  状态: Received  发布时间: 2026-06-26


🔍 技术细节速览

字段 值
CVE ID CVE-2026-54352
CVSS 评分 9.6 🔴
严重程度 严重
CVSS 向量 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:N
CWE 分类 CWE-22,CWE-59
发布时间 2026-06-26
最后更新 2026-06-27
状态 Received
数据来源 security-advisories@github.com

好的,作为一名资深网络安全分析师,我将基于您提供的 NVD 原始数据,为您生成一篇专业的漏洞深度分析文章。


🚨 严重漏洞预警:CVE-2026-54352 - Budibase 路径遍历与符号链接劫持漏洞

CVSS 评分:9.6(严重)
CVSS 向量: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:N


漏洞概述

CVE-2026-54352 是一个存在于 Budibase(一个开源低代码平台)中的高危漏洞,允许具有工作区构建者(Workspace Builder)权限的攻击者读取服务器上任意文件的内容。该漏洞源于 Budibase 在处理 PWA(Progressive Web App)图标上传功能时,未能有效防御路径遍历和符号链接攻击。

攻击者可以通过上传一个特制的 ZIP 压缩包,其中包含指向服务器上任意文件的符号链接,从而绕过图标路径验证逻辑。当服务器处理该压缩包时,会解压并读取符号链接指向的目标文件,并将其内容存储到 MinIO 对象存储中。随后,攻击者可以通过访问一个公开的资产端点来获取该文件内容,实现任意文件读取。

该漏洞影响 Budibase 3.39.9 之前的所有版本,官方已在 3.39.9 版本中修复。

受影响组件与版本

  • 受影响组件: Budibase 开源低代码平台
  • 受影响版本: 3.39.9 之前的所有版本
  • 修复版本: 3.39.9

漏洞原理分析

该漏洞是一个典型的路径遍历(CWE-22) 与符号链接(CWE-59) 组合漏洞,攻击链清晰且利用难度低。

  1. 攻击入口: POST /api/pwa/process-zip 端点。该端点允许具有构建者权限的用户上传一个 .zip 文件,用于处理 PWA 应用的图标。

  2. 解压与验证缺陷:

    • 服务器使用 extract-zip@2.0.1 库将上传的 ZIP 文件解压到一个临时目录。
    • extract-zip@2.0.1 库的一个已知行为是,在解压时会保留符号链接的绝对路径目标。这意味着,如果 ZIP 包中包含一个指向 /etc/passwd 的符号链接文件,解压后该符号链接仍然指向 /etc/passwd。
    • 随后,服务器会读取解压目录下的 icons.json 文件,并对其列出的每个图标路径进行验证。
    • 验证逻辑的缺陷: 验证函数(位于 packages/server/src/api/controllers/static/index.ts:259-268)执行了以下操作:
      • 将图标源路径与基础目录(baseDir)拼接,并使用 path.resolve 解析出绝对路径(resolvedSrc)。
      • 检查 resolvedSrc 是否以 baseDir + path.sep 开头。这个检查本意是防止路径逃逸,但它只检查了字符串前缀,并未检查路径中是否包含符号链接。
      • 调用 fs.existsSync(resolvedSrc) 检查文件是否存在。fs.existsSync 会跟随符号链接,因此即使 resolvedSrc 是一个指向 /etc/passwd 的符号链接,该检查也会返回 true,因为目标文件存在。
    • 关键点: 验证逻辑没有拒绝符号链接条目,也没有检查解析后的最终目标路径是否仍在允许的目录范围内。
  3. 文件读取与泄露:

    • 验证通过后,代码(位于 packages/backend-core/src/objectStore/objectStore.ts:302)会使用 fsp.open(path).createReadStream() 打开文件并读取其内容。
    • fsp.open 同样会跟随符号链接,因此它会读取符号链接指向的任意目标文件(例如 /etc/passwd)的内容。
    • 读取到的文件内容被上传到 MinIO 对象存储中。
    • 攻击者可以通过 GET /api/assets/{appId}/pwa/{uuid}.png 端点获取这个被存储的对象,从而获得目标文件的内容。

攻击向量总结:
攻击者构造一个 ZIP 文件,其中包含一个指向目标文件(如 /etc/passwd)的符号链接,并在 icons.json 中引用该符号链接。上传后,Budibase 的验证逻辑被绕过,服务器读取了符号链接指向的任意文件,并将其内容泄露给攻击者。

影响评估

  • 攻击复杂度(AC:L): 低。攻击者只需具备基本的文件打包和符号链接创建知识,无需复杂的网络或系统攻击技巧。
  • 攻击向量(AV:N): 网络。攻击者可以通过网络向 Budibase 服务端发送恶意请求。
  • 所需权限(PR:L): 低。攻击者只需要一个工作区构建者(Workspace Builder) 权限,这是低代码平台中常见的、相对低级的角色。
  • 用户交互(UI:N): 无。攻击过程无需受害者交互。
  • 影响范围(S:C): 已变更。漏洞影响范围超出了原始权限边界,攻击者可以读取服务器文件系统上的任意文件,而不仅仅是应用沙箱内的文件。
  • 机密性影响(C:H): 高。攻击者可以读取服务器上的任意文件,包括配置文件、数据库凭证、源代码、密钥等敏感信息,导致严重的信息泄露。
  • 完整性影响(I:H): 高。虽然漏洞直接导致的是文件读取,但读取到的敏感信息(如数据库密码、API密钥)可以被用于进一步的攻击,例如修改数据、植入后门等,从而对系统完整性造成严重影响。
  • 可用性影响(A:N): 无。该漏洞不直接导致服务不可用。

潜在后果:

  • 敏感信息泄露: 攻击者可以窃取数据库密码、应用密钥、SSL证书、源代码、环境变量等核心机密。
  • 权限提升: 获取到的敏感信息可能帮助攻击者提升权限,例如从构建者权限提升为管理员权限。
  • 供应链攻击: 如果 Budibase 实例被攻破,攻击者可能利用其作为跳板,攻击内部网络或下游用户。
  • 完全系统沦陷: 在极端情况下,如果攻击者能读取到 SSH 密钥或 root 密码,可能导致服务器被完全控制。

修复建议

1. 立即升级(强烈推荐)

  • 官方修复版本: 请立即将 Budibase 升级到 3.39.9 或更高版本。
  • 操作步骤: 参考 Budibase 官方文档进行版本升级。

2. 临时缓解措施

如果无法立即升级,可以考虑以下临时措施,但请注意这些措施可能不完全有效,且可能影响功能:

  • 限制构建者权限: 严格审查并限制拥有“工作区构建者”角色的用户,仅授予绝对必要的用户。
  • 网络隔离: 将 Budibase 服务部署在内部网络,避免直接暴露在公网,减少攻击面。
  • Web 应用防火墙(WAF)规则: 尝试编写 WAF 规则,拦截包含可疑符号链接或路径遍历特征的 ZIP 文件上传请求。但这可能难以完全防御,因为攻击者可以轻易混淆。

3. 安全配置建议

  • 最小权限原则: 确保 Budibase 服务进程以最小权限运行,限制其能读取的文件范围。
  • 监控与审计: 启用详细的日志记录,监控对 /api/pwa/process-zip 端点的异常访问以及后续对 /api/assets/ 端点的访问,以便及时发现可疑行为。

参考资料

  • CVE 详情页(NVD): https://nvd.nist.gov/vuln/detail/CVE-2026-54352
  • CWE-22: 路径遍历(Path Traversal)
  • CWE-59: 符号链接跟随(Improper Link Resolution Before File Access ('Link Following'))
  • Budibase 官方安全公告: (请关注 Budibase 官方 GitHub 仓库的 Security Advisories 页面获取最新信息)
  • extract-zip 库: https://www.npmjs.com/package/extract-zip (版本 2.0.1 存在保留绝对符号链接目标的行为)