🔴 严重 | CVE-2026-54352 — Budibase is an open-source low-code platform. Prio...
🔴 【深度分析】严重安全漏洞: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) 组合漏洞,攻击链清晰且利用难度低。
攻击入口:
POST /api/pwa/process-zip端点。该端点允许具有构建者权限的用户上传一个.zip文件,用于处理 PWA 应用的图标。解压与验证缺陷:
- 服务器使用
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,因为目标文件存在。
- 将图标源路径与基础目录(
- 关键点: 验证逻辑没有拒绝符号链接条目,也没有检查解析后的最终目标路径是否仍在允许的目录范围内。
- 服务器使用
文件读取与泄露:
- 验证通过后,代码(位于
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 存在保留绝对符号链接目标的行为)