GHSA-XX7M-69FF-9CRP:SurrealDB的 Poison Pill:使用单个字符串崩溃数据库
发布: (2026年2月13日 GMT+8 09:10)
3 分钟阅读
原文: Dev.to
Source: Dev.to
概述
漏洞编号: GHSA-XX7M-69FF-9CRP
CVSS 分数: 6.5(中等)
发布日期: 2026-02-12
SurrealDB 的嵌入式 JavaScript 引擎(QuickJS)中存在一个拒绝服务(DoS)漏洞。通过定义包含过大字符串字面量的脚本函数,攻击者可以在编译阶段触发 空指针解引用(CWE‑476)。这会绕过 Rust 的安全保证,导致数据库进程因段错误而终止。
漏洞细节
- 组件: QuickJS /
rquickjs - 攻击向量: 网络(已认证)
- 影响: 进程崩溃(拒绝服务)
- 利用状态: 已有概念验证(PoC)
缺陷出在 QuickJS 处理编译期间的大型字符串字面量的方式。攻击者可以提交构造的 SurrealQL 查询,生成巨大的字符串并将其传递给 JavaScript 引擎,从而立即导致崩溃。
受影响的版本
| 产品 | 受影响的版本 |
|---|---|
SurrealDB 服务器(使用 rquickjs < 0.11.0) | 所有 2026‑02‑02 之前的构建版本 |
| SurrealDB 嵌入式(Rust crate) | 依赖 rquickjs < 0.11.0 的版本 |
修复措施
依赖更新
# Cargo.toml
dependencies:
- rquickjs = "0.6"
+ rquickjs = "0.11.0"
- 将 SurrealDB 升级到包含
rquickjs≥ 0.11.0 的版本。 - 若不需要嵌入式脚本,禁用该功能。
- 实施查询分析,在字符串字面量过大时予以拒绝,防止其进入执行引擎。
操作步骤
- 检查当前版本
surreal version - 拉取最新的 Docker 镜像
docker pull surrealdb/surrealdb:latest - 重启数据库实例
- 验证修复 – 在测试环境中尝试定义包含大字符串的函数,现应返回错误而不是崩溃。
参考资料
- GHSA 通报: GHSA-XX7M-69FF-9CRP
- CWE‑476: 空指针解引用
在通报网站上阅读 GHSA‑XX7M‑69FF‑9CRP 的完整报告,可获取交互式图表和完整的利用分析。