概要
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 仮想化を使用している場合はカーネルアップデートを確認してください。
修正コミット:
13031fb6b8357fbbcded2a7f4cba73e4781ee5942bbc395e81bd29c543a0529a678327e932a7ec699121f4605ab94969f62d1b5714ca3c6c69bd202fb7b72e88046328c9fdc638fe887d4240257dd5dc
関連リンク
データソース: NVD (NIST)
AI解説は Claude API により自動生成されています。正確性については原文をご確認ください。
