Metabase SQL 注入零日漏洞遭野外利用:Framework、Tally、LexisNexis 三家客户数据被窃(CVSS 10.0)

2026 年 8 月 7 日,开源商业智能工具 Metabase 披露一个影响其自托管部署的未认证 SQL 注入零日漏洞,安全公告编号 GHSA-vwf4-m7j8-wcjf,CVSS v3.1 评分 10.0 满分,尚未分配 CVE 编号。该漏洞允许远程攻击者在无需任何凭证的前提下向 Metabase 应用数据库注入任意 SQL、提升至实例管理员权限,并读取或导出所有已连接数据库的凭据与业务数据。次日,模块化笔记本电脑厂商 Framework、在线表单平台 Tally 以及法律数据巨头 LexisNexis 通过独立披露确认其客户数据已被窃取,攻击最早可追溯到 8 月 3 日。

事件概述

根据 Metabase 的安全公告和 BleepingComputer 的报道,攻击方在 8 月 3 日起开始有组织地向互联网暴露的 Metabase 实例发起攻击。该漏洞存在于公开的密码重置接口 /api/session/reset_password,不需要登录。Metabase 在 8 月 6 日识别并完成云端版本的热修复,同时通过邮件向受影响客户披露漏洞,自托管用户必须手动升级到以下最低安全版本:0.58.24、0.59.21、0.60.17、0.61.11、0.62.9、0.63.5。8 月 7 日 Framework 与 Tally 各自的官方披露进一步证实攻击取得成功,LexisNexis 则通过第三方供应商同样遭到影响。

技术细节

该漏洞的本质是一个未授权 SQL 注入,攻击者通过 /api/session/reset_password 将恶意 SQL 片段嵌入请求体并 POST 到公网。Metabase 的密码重置控制器在拼装模板时未对用户输入做充分的参数化,导致 SQL 注入绕过认证直接落到应用数据存储库。

完整攻击链分两阶段:

  • 阶段 A(提权):/api/session/reset_password 提交精心构造的 payload,服务器返回 HTTP 400,但随后通过 GET /api/user/current 探测可获得 HTTP 200,意味着攻击者已经在管理员上下文中执行。
  • 阶段 B(数据窃取):借助管理员权限枚举已配置的 API Key、连接数据库条目,读取存储在 Metabase 应用数据库中的明文数据库连接凭据,借助凭据以”合法的”BI账号身份访问数据仓库并批量导出。

Metabase 同时警告:实例的系统日志在该上下文下可能被攻击者篡改,因此外部不可变日志(如 syslog / SIEM 镜像)是事后取证的关键证据。

影响评估

Metabase 是 SMB 客户量级极大的免费 BI 工具,普遍被用作内部仪表板与数据库查询面板。其特殊性在于:BI 实例一旦被攻陷,攻击者拿到的不是工具本身的少量数据,而是其连接的所有上游数据库的访问权限与凭据。已确认的三起事件对照之下:

  • Framework:客户姓名、邮箱、登录 IP、账单地址与收货地址、电话号码、公司名遭窃,未涉及支付信息。
  • Tally:邮箱地址与密码哈希遭访问,但由于表单数据存放在独立系统,攻击者未触及表单与提交内容。
  • LexisNexis:通过第三方供应商暴露的 Metabase 被突破,公司切断了相关 API,但暂未公开确认是否发生进一步数据外泄。

BI 凭据泄露场景的本质风险是”借道外泄”,即攻击者借助工具的合法权限直接在数据库层面导出数据,导致数据库侧审计难辨良莠。Metabase 表示部分环境已观察到大批量 INSERT 和导出作业,但攻击者确实使用了 BI 用户的常规会话,与凭据窃取获得的访问通道一致。

修复建议

  • 立即升级:自托管 Metabase 实例升级到当前分支的最低安全版本(0.58.24 / 0.59.21 / 0.60.17 / 0.61.11 / 0.62.9 / 0.63.5),并在 Admin → Settings → About 中确认版本号。
  • 网络收敛:将 Metabase HTTP API 与 /api/session/reset_password 端点收敛到内网或 VPN,禁止互联网直接可达;至少以 WAF 或反代加上针对该端点的临时拒访规则。
  • 凭据轮换:视所有由该实例存储的连接数据库账号为已被窃,立即轮换最小权限的只读账号,并禁用既往可能存在的 DBA / 全库读账号。
  • 会话与日志审计:对 8 月 3 日起 admin 账号、API Key 的创建行为做回溯;查找异常时间段、非常用来源 IP 的大批量导出请求;并将日志外发到不可写外部 SIEM。
  • 告警规则:在反向代理日志 / WAF / SIEM 中加入 Metabase 官方 IOC:POST /api/session/reset_password → HTTP 400 紧接着 GET /api/user/current → HTTP 200 来自同一会话视为高风险。

参考来源