CVE-2026-53360
KVM: SEV: GHCB v2+ を使用している場合は、GHCB 内スクラッチ領域を必須とする
- 公開済み
- 2026/07/04
- 更新済み
- 2026/08/05
- CNA の割り当て
- Linux
- 観察された証拠
- 2026/08/08
プライマリ CVSS
nvd · CVSS 3.1
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H低 · 今後 30 日間
- パーセンタイル
- 15.8%
- モデルの日付
- 2026/09/21
EPSS は統計的な推定値であり、確実性や影響の尺度ではありません。 CVSS、KEV ステータス、暴露、環境と組み合わせます。
概要
Linux カーネルにおいて、以下の脆弱性が解決されました: KVM: SEV: GHCB v2+ を使用している場合、GHCB 内スクラッチ領域を必須にする GHCB 仕様に従い、GHCB v2+ を使用する場合は、ソフトウェアのスクラッチ領域が GHCB の共有バッファ内に存在することを必須にします。ページ状態変更 (PSC) リクエストなどは、ゲストがリクエスト時に長さを指定できないため、この動作に _依存_ していることに注意してください。つまり、ゲストのペイロードサイズは共有バッファのサイズに制限されます。GHCB の使用を強制しないことと、その他多数の欠陥により、悪意のある SNP ゲストがホストカーネルのヒープメモリを破壊し、ホストのヒープレイアウト情報を漏えいさせることができます。 setup_vmgexit_scratch() は kvzalloc(exit_info_2) を使ってバッファを割り当てます。ここで exit_info_2 はゲストが制御できます。exit_info_2=24 の場合、kmalloc-cg-32 (32バイトのスラブオブジェクト) に 24バイトの割り当てが生成されます。バッファは 8バイトの psc_hdr とそれに続く 8バイトの psc_entry 構造体を保持するため、entries[0] と entries[1] のみが境界内にあります。 snp_begin_psc() は end_entry を VMGEXIT_PSC_MAX_COUNT (253) と照合して検証しますが、実際のバッファサイズに対しては検証しません: idx_end = hdr->end_entry; if (idx_end >= VMGEXIT_PSC_MAX_COUNT) { // checks 253, not buffer snp_complete_psc(svm, ...); return 1; } for (idx = idx_start; idx <= idx_end; idx++) { entry_start = entries[idx]; // OOB when idx >= 2 ゲストは end_entry=10+ を設定し、ホストは隣接スラブオブジェクト内の OOB である entries[2+] を反復処理します。 各 OOB エントリについて: - ホストは 8 バイトを読み取ります (OOB 読み取り / 情報漏えいオラクル) - データが PSC 検証を通過した場合、__snp_complete_one_psc() は cur_page = 1 または 512 をエントリに書き込みます (OOB 書き込み、sev.c:3806) - 検証が失敗した場合、エラー応答により、隣接メモリがゼロか非ゼロかが明らかになります (ゲストへの情報開示) ゲストは割り当てサイズ (exit_info_2) とエントリ範囲 (cur_entry/end_entry) を制御でき、無制限の VMGEXIT を発行して異なるスラブ位置を繰り返しヒットさせることができます。さまざまなバグを悪用することで、悪意のある SEV-SNP ゲストは次のことが可能です: - 隣接する kmalloc-cg-32 オブジェクトの OOB 読み取り (ヒープレイアウトの開示) - 隣接するオブジェクトへの cur_page ビットの OOB 書き込み (ヒープ破壊) - VMGEXIT 全体で use-after-free 状態をトリガーする たとえば、KASAN を有効にすると、PoC ゲストモジュールを 1 回 insmod するだけで 73 件の KASAN レポートが生成されます: BUG: KASAN: slab-out-of-bounds in snp_begin_psc+0x126/0x890 Read of size 8 at addr ffff888219ffb5e0 by task qemu-system-x86/2199 BUG: KASAN: slab-out-of-bounds in snp_begin_psc+0x468/0x890 Write of size 8 at addr ffff888351566648 by task qemu-system-x86/2199 バグのあるアドレスは、サイズ 32 の kmalloc-cg-32 キャッシュに属する、ffff888XXXXXXXXX にあるオブジェクトに属しています。 バグのあるアドレスは、割り当てられた 32 バイト領域 [ffff888XXXXXXXXX, ffff888XXXXXXXXX) の N バイト右側に位置しています。 内訳: - 62 スラブ境界外アクセス (割り当てを超えた読み取り + 書き込み) - 7 スラブ use-after-free - 4 use-after-free 素晴らしい説明と再現コードを提供してくれた Stan にすべての功績があります! [sean: チェンジログを作成]
ソース
1責任ある使用
脆弱性情報は、自分が所有しているシステム、またはテストを許可されているシステムでのみ使用してください。 Kitploit は公開研究メタデータにリンクしており、エクスプロイト コードや悪意のあるペイロードは保存しません。