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

Linuxカーネルにおいて、以下の脆弱性が修正されました。iommu/vt-dでは、スケーラブルモードに対応していないアクセス不能なPCIeデバイスに対するdev-iotlbフラッシュをスキップします。ATSが有効でユーザースペースにパススルーされたPCIeエンドポイント(例:QEMU、DPDK)は、リンクが突然取り外されたりリンク障害が発生するとホストがハードロックする可能性があります。コミット4fc82cd907ac("iommu/vt-d: デバイス切断時にATS無効化リクエストを発行しない")はpci_dev_is_disconnected()をdevtlb_invalidation_with_pasid()に追加し、デバイスが安全に取り外されている場合のみATS無効化をスキップしますが、これはIntel IOMMUのスケーラブルモードが有効な場合に限ります。スケーラブルモードが無効または未対応の場合、PCIeエンドポイントのリンクが落ちるとIntel IOMMUは完了しないATS無効化を待ち続け、システムがハードロックします。コールトレースは次の通りです。qi_submit_sync、qi_flush_dev_iotlb、__context_flush_dev_iotlb.part.0、domain_context_clear_one_cb、pci_for_each_dma_alias、device_block_translation、blocking_domain_attach_dev、iommu_deinit_device、__iommu_group_remove_device、iommu_release_device、iommu_bus_notifier、blocking_notifier_call_chain、bus_notify、device_del、pci_remove_bus_device、pci_stop_and_remove_bus_device、pciehp_unconfigure_device、pciehp_disable_slot、pciehp_handle_presence_or_link_change、pciehp_ist。コミット81e921fd3216("iommu/vt-d: デバイス解放時のNULLドメイン修正")はintel_pasid_teardown_sm_context()をintel_iommu_release_device()に追加し、qi_flush_dev_iotlb()を呼び出してPCIeエンドポイントのリンク断時にシステムがハードロックする可能性を修正しました。コールトレースは次の通りです。qi_submit_sync、qi_flush_dev_iotlb、__context_flush_dev_iotlb.part.0、intel_context_flush_no_pasid、device_pasid_table_teardown、pci_pasid_table_teardown、pci_for_each_dma_alias、intel_pasid_teardown_sm_context、intel_iommu_release_device、iommu_deinit_device、__iommu_group_remove_device、iommu_release_device、iommu_bus_notifier、blocking_notifier_call_chain、bus_notify、device_del、pci_remove_bus_device、pci_stop_and_remove_bus_device、pciehp_unconfigure_device、pciehp_disable_slot、pciehp_handle_presence_or_link_change、pciehp_ist。エンドポイントはリンクダウンイベントなしに接続を失うことがあり(例:リンク障害)、プロセスをkill(virsh destroy)するとホストがハードロックします。コールトレースは次の通りです。qi_submit_sync、qi_flush_dev_iotlb、__context_flush_dev_iotlb.part.0、domain_context_clear_one_cb、pci_for_each_dma_alias、device_block_translation、blocking_domain_attach_dev、__iommu_attach_device、__iommu_device_set_domain、__iommu_group_set_domain_internal、iommu_detach_group、vfio_iommu_type1_detach_group、vfio_group_detach_container、vfio_group_fops_release、__fput。pci_dev_is_disconnected()は安全な取り外し経路のみに対応し、pci_device_is_present()はベンダー/デバイスIDの読み取りによってアクセス可能性を検査し、その内部でpci_dev_is_disconnected()を呼び出します。ConnectX-5 (8 GT/s, x2)では約70マイクロ秒かかります。__context_flush_dev_iotlb()は{attach,release}_devのパスでのみ呼ばれる(ホットパスではありません)ため、そこにpci_device_is_present()を追加し、アクセス不能なデバイスをスキップしてハードロックを回避します。

想定される影響 当該ソフトウェアが扱う情報について、外部への漏えいは発生しません。 また、当該ソフトウェアが扱う情報について、書き換えは発生しません。 さらに、当該ソフトウェアが完全に停止する可能性があります。 そして、この脆弱性を悪用した攻撃の影響は、他のソフトウェアには及びません。 
対策

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

公表日 2026年5月6日0:00
登録日 2026年5月15日10:59
最終更新日 2026年5月15日10:59
CVSS3.0 : 警告
スコア 5.5
ベクター CVSS:3.0/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
影響を受けるシステム
Linux
Linux Kernel 5.12.19 以上 5.13 未満
Linux Kernel 5.13.4 以上 5.14 未満
Linux Kernel 5.14
Linux Kernel 5.14.1 以上 6.12.77 未満
Linux Kernel 6.13 以上 6.18.17 未満
Linux Kernel 6.19 以上 6.19.6 未満
CVE (情報セキュリティ 共通脆弱性識別子)
CWE (共通脆弱性タイプ一覧)
その他
変更履歴
No 変更内容 変更日
1 [2026年05月15日]
  掲載
2026年5月15日10:59

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

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

iommu/vt-d: Skip dev-iotlb flush for inaccessible PCIe device without scalable mode

PCIe endpoints with ATS enabled and passed through to userspace
(e.g., QEMU, DPDK) can hard-lock the host when their link drops,
either by surprise removal or by a link fault.

Commit 4fc82cd907ac ("iommu/vt-d: Don't issue ATS Invalidation
request when device is disconnected") adds pci_dev_is_disconnected()
to devtlb_invalidation_with_pasid() so ATS invalidation is skipped
only when the device is being safely removed, but it applies only
when Intel IOMMU scalable mode is enabled.

With scalable mode disabled or unsupported, a system hard-lock
occurs when a PCIe endpoint's link drops because the Intel IOMMU
waits indefinitely for an ATS invalidation that cannot complete.

Call Trace:
qi_submit_sync
qi_flush_dev_iotlb
__context_flush_dev_iotlb.part.0
domain_context_clear_one_cb
pci_for_each_dma_alias
device_block_translation
blocking_domain_attach_dev
iommu_deinit_device
__iommu_group_remove_device
iommu_release_device
iommu_bus_notifier
blocking_notifier_call_chain
bus_notify
device_del
pci_remove_bus_device
pci_stop_and_remove_bus_device
pciehp_unconfigure_device
pciehp_disable_slot
pciehp_handle_presence_or_link_change
pciehp_ist

Commit 81e921fd3216 ("iommu/vt-d: Fix NULL domain on device release")
adds intel_pasid_teardown_sm_context() to intel_iommu_release_device(),
which calls qi_flush_dev_iotlb() and can also hard-lock the system
when a PCIe endpoint's link drops.

Call Trace:
qi_submit_sync
qi_flush_dev_iotlb
__context_flush_dev_iotlb.part.0
intel_context_flush_no_pasid
device_pasid_table_teardown
pci_pasid_table_teardown
pci_for_each_dma_alias
intel_pasid_teardown_sm_context
intel_iommu_release_device
iommu_deinit_device
__iommu_group_remove_device
iommu_release_device
iommu_bus_notifier
blocking_notifier_call_chain
bus_notify
device_del
pci_remove_bus_device
pci_stop_and_remove_bus_device
pciehp_unconfigure_device
pciehp_disable_slot
pciehp_handle_presence_or_link_change
pciehp_ist

Sometimes the endpoint loses connection without a link-down event
(e.g., due to a link fault); killing the process (virsh destroy)
then hard-locks the host.

Call Trace:
qi_submit_sync
qi_flush_dev_iotlb
__context_flush_dev_iotlb.part.0
domain_context_clear_one_cb
pci_for_each_dma_alias
device_block_translation
blocking_domain_attach_dev
__iommu_attach_device
__iommu_device_set_domain
__iommu_group_set_domain_internal
iommu_detach_group
vfio_iommu_type1_detach_group
vfio_group_detach_container
vfio_group_fops_release
__fput

pci_dev_is_disconnected() only covers safe-removal paths;
pci_device_is_present() tests accessibility by reading
vendor/device IDs and internally calls pci_dev_is_disconnected().
On a ConnectX-5 (8 GT/s, x2) this costs ~70 µs.

Since __context_flush_dev_iotlb() is only called on
{attach,release}_dev paths (not hot), add pci_device_is_present()
there to skip inaccessible devices and avoid the hard-lock.

公表日 2026年5月6日21:16
登録日 2026年5月7日4:08
最終更新日 2026年5月6日22:07
関連情報、対策とツール
共通脆弱性一覧