つみかさね

CVE-2026-46316

Critical(9.3)

CVE-2026-46316 — Linux kernel KVM arm64 vgic-its キャッシュ参照の二重解放

公開日: 2026-06-15データソース: NVD, GitHub Advisory

影響を受けるソフトウェア

製品ベンダー影響バージョン
Linux kernel(KVM arm64 vgic-its)Linux Foundation修正パッチ適用前

対応ガイド

high|対応必須セキュリティ修正影響: 限定的

推奨アクション

  1. 1arm64 上で KVM 仮想化を使用しているか確認する
  2. 2GICv3/ITS(Interrupt Translation Service)を有効化した環境かどうかを確認する
  3. 3ディストリビューションのセキュリティアップデートでカーネルパッチを適用する
  4. 4アップデート後にカーネルを再起動する

影響対象

arm64 上の KVM 仮想化環境(GICv3/ITS 有効)

補足

  • -x86/x86_64 環境には影響しない
  • -arm64 KVM を使用していない環境への実害リスクは限定的
CVELinux kernelKVMarm64UAF仮想化カーネル

概要

Linux kernel の KVM/arm64 仮想割り込みコントローラ(vgic-its)において、トランスレーションキャッシュを無効化する vgic_its_invalidate_cache() 関数に Use-After-Free(UAF)の問題が存在します。

問題の詳細:

vgic_its_invalidate_cache()xa_for_each() でキャッシュを走査し、xa_erase() でエントリを削除後に vgic_put_irq() で参照を解放します。しかしこの関数は、相互に排他的でない複数のコンテキスト(ITS コマンドハンドラ、GITS_CTLR 書き込みパス、GICR_CTLR の EnableLPIs クリアパス)から並行して呼び出されます。

xa_erase() はアトミック操作で直前のエントリを返しますが、コードは xa_erase() の戻り値ではなく、ループで反復中のポインタを vgic_put_irq() に渡していました。このため、同一エントリを複数のコンテキストが同時に観測した場合、そのエントリへの参照が複数回解放されてしまいます。

解放済みのエントリは ITE(Interrupt Translation Entry)から参照され続けるため、UAF 状態となります。

修正: xa_erase() の戻り値(実際に削除されたエントリ)のみを vgic_put_irq() に渡すよう修正。

CVSSベクトル

項目
スコア9.3(Critical)
攻撃経路(AV)ネットワーク(N)
攻撃の複雑さ(AC)低(L)
権限要件(PR)なし(N)
ユーザー操作(UI)なし(N)
スコープ(S)変更あり(C)
機密性への影響(C)高(H)
完全性への影響(I)高(H)
可用性への影響(A)なし(N)

影響を受けるソフトウェア

製品ベンダー影響バージョン
Linux kernel(KVM arm64 + GICv3/ITS)Linux Foundation修正パッチ適用前

修正バージョンと回避策

Linux kernel 安定板へのバックポートパッチが提供済みです。arm64 上で KVM 仮想化を使用している場合はカーネルアップデートを確認してください。

修正コミット:

  • 13031fb6b8357fbbcded2a7f4cba73e4781ee594
  • 2bbc395e81bd29c543a0529a678327e932a7ec69
  • 9121f4605ab94969f62d1b5714ca3c6c69bd202f
  • b7b72e88046328c9fdc638fe887d4240257dd5dc

関連リンク


データソース: NVD (NIST)
AI解説は Claude API により自動生成されています。正確性については原文をご確認ください。

Xでシェアはてブ
データソース: NVD (NIST), OSV (Google), GitHub Advisory Database, JVN iPedia (IPA/JPCERT/CC)
AI解説は Claude API により自動生成されています。正確性については原文をご確認ください。