LinuxのLinux Kernelにおける不特定の脆弱性
タイトル LinuxのLinux Kernelにおける不特定の脆弱性
概要

Linuxカーネルにおいて、以下の脆弱性が修正されました。iommu/vt-d: コンテキストエントリを解除する前にPresentビットをクリアする処理を行います。コンテキストエントリを解除する際、現在の実装では128ビットのエントリ全体を複数の64ビット書き込みでゼロ化しています。これにより、ハードウェアが「破損した」エントリ(いくつかのフィールドは既にゼロ化されているが、Presentビットはまだセットされている状態)を取得する可能性があり、予測不可能な動作や誤ったフォルトが発生するウィンドウが生じていました。x86は強力な書き込み順序を提供していますが、コンパイラはコンテキストエントリの2つの64ビット部分への書き込みを並べ替える可能性があります。コンパイラの並べ替えがなくても、複数のCPU書き込みに対してハードウェアの取得が原子となる保証はありません。VT-d仕様(セクション6.5.3.3)内の「無効化に関するソフトウェア向けガイダンス」に沿って、推奨される所有権の握手を以下のとおり実装しています。1. まずコンテキストエントリのPresentビットのみをクリアし、所有権がハードウェアからソフトウェアへ移行したことを示します。2. dma_wmb()を使用して、クリアされたビットがIOMMUに可視化されるようにします。3. 必要なキャッシュおよびコンテキストキャッシュの無効化を実施し、ハードウェアがエントリへのキャッシュ済み参照を持たないようにします。4. 無効化が完了した後にエントリ全体を完全にゼロ化します。さらに、context_set_present()にdma_wmb()を追加し、エントリが完全に初期化されてからPresentビットが可視化されるようにしています。

想定される影響 ・当該ソフトウェアが扱う全ての情報が外部に漏れる可能性があります。 ・当該ソフトウェアが扱う全ての情報が書き換えられる可能性があります。 ・当該ソフトウェアが完全に停止する可能性があります。 
対策

リリース情報、またはパッチ情報が公開されています。参考情報を参照して適切な対策を実施してください。

公表日 2026年5月27日0:00
登録日 2026年6月17日15:45
最終更新日 2026年6月17日15:45
CVSS3.0 : 重要
スコア 7.5
ベクター CVSS:3.0/AV:L/AC:H/PR:H/UI:N/S:C/C:H/I:H/A:H
影響を受けるシステム
Linux
Linux Kernel 2.6.24 以上 6.18.14 未満
Linux Kernel 6.19 以上 6.19.4 未満
CVE (情報セキュリティ 共通脆弱性識別子)
CWE (共通脆弱性タイプ一覧)
その他
変更履歴
No 変更内容 変更日
1 [2026年06月17日]
  掲載
2026年6月17日15:45

NVD脆弱性情報
CVE-2026-45944
概要

In the Linux kernel, the following vulnerability has been resolved:

iommu/vt-d: Clear Present bit before tearing down context entry

When tearing down a context entry, the current implementation zeros the
entire 128-bit entry using multiple 64-bit writes. This creates a window
where the hardware can fetch a "torn" entry — where some fields are
already zeroed while the 'Present' bit is still set — leading to
unpredictable behavior or spurious faults.

While x86 provides strong write ordering, the compiler may reorder writes
to the two 64-bit halves of the context entry. Even without compiler
reordering, the hardware fetch is not guaranteed to be atomic with
respect to multiple CPU writes.

Align with the "Guidance to Software for Invalidations" in the VT-d spec
(Section 6.5.3.3) by implementing the recommended ownership handshake:

1. Clear only the 'Present' (P) bit of the context entry first to
signal the transition of ownership from hardware to software.
2. Use dma_wmb() to ensure the cleared bit is visible to the IOMMU.
3. Perform the required cache and context-cache invalidation to ensure
hardware no longer has cached references to the entry.
4. Fully zero out the entry only after the invalidation is complete.

Also, add a dma_wmb() to context_set_present() to ensure the entry
is fully initialized before the 'Present' bit becomes visible.

公表日 2026年5月27日23:17
登録日 2026年5月28日4:11
最終更新日 2026年5月30日20:17
関連情報、対策とツール
共通脆弱性一覧