🟠 高危 | CVE-2026-63760 — SurrealDB before 3.1.0 fails to enforce the config...
🟠 【深度分析】高危安全漏洞:CVE-2026-63760
CVSS 评分: 高危(8.7)🟠 状态: Analyzed 发布时间: 2026-07-20
🔍 技术细节速览
| 字段 | 值 |
|---|---|
| CVE ID | CVE-2026-63760 |
| CVSS 评分 | 8.7 🟠 |
| 严重程度 | 高危 |
| CVSS 向量 | CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X |
| CWE 分类 | CWE-674 |
| 发布时间 | 2026-07-20 |
| 最后更新 | 2026-07-22 |
| 状态 | Analyzed |
| 数据来源 | disclosure@vulncheck.com |
⚠️ CVSS 4.0 评分:8.7(高危)
向量:CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/...
危害等级:高危 – 远程未认证攻击者可导致服务完全不可用。
漏洞概述
CVE-2026-63760 是 SurrealDB(一款开源、多模型数据库)在值解析器与 JSON 解析器中的一个递归深度限制绕过漏洞。当处理嵌套的大括号、方括号或圆括号时,系统未正确强制实施配置的递归深度上限,攻击者可以构造深度极大的嵌套 JSON 载荷,通过 WebSocket 暴露的 /rpc 端点发送给服务器,导致内存耗尽和进程崩溃,造成拒绝服务。
该漏洞影响 SurrealDB 3.1.0 之前的所有版本。攻击无需任何身份验证或用户交互,攻击复杂度低,且可利用网络远程触发。
受影响组件与版本
| 组件 | 影响版本 |
|---|---|
| SurrealDB | < 3.1.0 |
暴露的 WebSocket /rpc 端点 |
所有受影响版本中默认开启的 WebSocket 服务 |
修复版本:SurrealDB 3.1.0 及更高版本。
漏洞原理分析
漏洞成因
根据 CWE-674(非受控递归深度)以及 NVD 描述,该漏洞源于 SurrealDB 在解析 JSON 或值表达式时,未能正确应用配置的递归深度限制。通常,数据库会设置一个最大嵌套层数(例如 max_nesting_depth)以防止恶意输入导致栈溢出或过度的资源消耗。然而,在处理嵌套的 {}、[]、() 时,解析器可能采用了递归下降方法,但深度检查逻辑存在缺陷,导致深层嵌套的结构能够绕过限制。
具体的绕过方式可能包括:
- 检查点仅在某些递归调用路径上生效,而在其他路径(如嵌套括号处理分支)未实施。
- 递归深度计数器未正确递增或溢出归零。
- 在处理嵌套结构时,解析器在到达递归终止条件前消耗了大量栈空间或堆内存(用于存储解析状态),从而未触发深度限制的超限检查。
攻击向量
攻击者利用该漏洞的流程:
- 与目标 SurrealDB 实例建立 WebSocket 连接(默认端口 8000,路径
/rpc)。 - 发送一个深度极大的嵌套 JSON 对象,例如:
或使用嵌套数组{"a":{"a":{"a":...重复成千上万次...}}}[[[...]]]、表达式括号(((...)))。 - 服务器解析该载荷时,递归深度超过预期值,但未触发限制。
- 随着递归层次加深,解析器消耗大量内存(每个递归层级可能分配临时对象或上下文),最终导致 Out‑of‑Memory(OOM) 或栈溢出,进程崩溃。
CVSS 向量分解印证
AV:N(网络攻击向量) – 通过 WebSocket 远程触发。AC:L(低攻击复杂度) – 构造嵌套 JSON 无需特殊技巧。AT:N(无攻击准备工作) – 无需任何前置条件。PR:N(无需权限) – 无需认证即可访问/rpc端点(默认允许未认证请求)。UI:N(无需用户交互) – 攻击过程完全自动化。VA:H(高可用性影响) – 直接导致服务进程崩溃,可用性完全丧失。- 其余指标为无(N),说明漏洞仅影响可用性,不破坏数据机密性与完整性。
影响评估
| 维度 | 评估 |
|---|---|
| 攻击复杂度 | 低 – 只需发送精心构造的 HTTP/WebSocket 请求,无需专业知识。 |
| 所需权限 | 无 – 未认证攻击者可直接利用。 |
| 利用条件 | 目标 SurrealDB 版本 < 3.1.0,且 WebSocket 服务暴露于网络(默认配置即满足)。 |
| 攻击后果 | 服务进程崩溃,导致数据库完全不可用。若被大规模重复利用,可造成持续性拒绝服务。 |
| 潜在威胁 | 可被用于对 SurrealDB 集群或单节点发起拒绝服务攻击,破坏业务连续性;在云环境中可能引发自动重启循环,增加运维成本。 |
CVSS 8.7 的合理性:虽然该漏洞不泄密、不篡改数据,但无认证、低复杂度、远程触发的 DoS 风险,在高可用性要求的生产环境中影响重大,因此评分符合“高危”级别。
修复建议
官方补丁
- 升级至 SurrealDB 3.1.0 或更高版本。此版本已正确实施 JSON/值解析器的递归深度限制。
- 升级前请测试兼容性,并参考官方发布说明:SurrealDB Release Notes(待官方更新)。
临时缓解措施(无法立即升级时)
- 限制 WebSocket 访问来源:通过防火墙或反向代理仅允许可信 IP 访问
/rpc端点。 - 启用认证:如果业务允许,可配置强制用户认证,虽然描述称未认证可触发,但认证后仍需防范普通用户滥用;不过识别攻击者来源可能更容易。
- 设置应用层请求大小限制:在反向代理(如 Nginx、HAProxy)中限制 HTTP 请求正文大小(例如 1MB),阻止极端大的 JSON 载荷。但需注意嵌套深度与大小不完全成正比(小但深嵌套也可导致耗尽)。
- 监控异常 WebSocket 行为:部署告警规则,监测单个客户端发送的嵌套深度异常或内存使用突增,并及时阻断恶意连接。
参考资料
- NVD 官方页面:https://nvd.nist.gov/vuln/detail/CVE-2026-63760
- CWE-674:Uncontrolled Recursion Depth – https://cwe.mitre.org/data/definitions/674.html
- SurrealDB 官方安全公告(尚未发布,请关注 https://github.com/surrealdb/surrealdb/security/advisories)
- VulnCheck 原始披露:disclosure@vulncheck.com (通过 NVD 数据源)
免责声明:本文基于 NVD 公开信息进行技术分析,未涉及实际漏洞复现。所有修复建议应在生产环境充分测试后实施。