LinuxのLinux Kernelにおける競合状態に関する脆弱性
タイトル LinuxのLinux Kernelにおける競合状態に関する脆弱性
概要

Linuxカーネルにおいて、iommu/vt-dのPASIDエントリ置換時に競合状態が発生する脆弱性が修正されました。Intel VT-dのPASIDテーブルエントリは512ビット(64バイト)であり、アクティブなPASIDエントリを単一の構造体代入で置換すると、ハードウェアが異なる128ビットチャンクとして読み取るため読み取り競合が発生し、不整合状態が発生する可能性がありました。この問題は、エントリのPresentビットをクリアしてから新しい設定を適用することで修正されました。

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

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

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

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

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

iommu/vt-d: Fix race condition during PASID entry replacement

The Intel VT-d PASID table entry is 512 bits (64 bytes). When replacing
an active PASID entry (e.g., during domain replacement), the current
implementation calculates a new entry on the stack and copies it to the
table using a single structure assignment.

struct pasid_entry *pte, new_pte;

pte = intel_pasid_get_entry(dev, pasid);
pasid_pte_config_first_level(iommu, &new_pte, ...);
*pte = new_pte;

Because the hardware may fetch the 512-bit PASID entry in multiple
128-bit chunks, updating the entire entry while it is active (Present
bit set) risks a "torn" read. In this scenario, the IOMMU hardware
could observe an inconsistent state — partially new data and partially
old data — leading to unpredictable behavior or spurious faults.

Fix this by removing the unsafe "replace" helpers and following the
"clear-then-update" flow, which ensures the Present bit is cleared and
the required invalidation handshake is completed before the new
configuration is applied.

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