CVE-2026-43161 in Linux情報

要約

〜によって VulDB • 2026年05月27日

Linuxカーネルにおいて、以下の脆弱性が修正されました:

iommu/vt-d: スケーラブルモード無効化時にアクセス不可なPCIeデバイスに対するdev-iotlbフラッシュをスキップする

ATS(Address Translation Services)が有効化され、ユーザー空間(例:QEMU、DPDK)にパススルーされたPCIeエンドポイントは、予期せぬ取り外しやリンク障害によりリンクが切断された場合、ホストをハードロック(システムハング)させる可能性があります。

コミット 4fc82cd907ac(「iommu/vt-d: デバイスが切断されている場合にATS無効化リクエストを発行しない」)は、`devtlb_invalidation_with_pasid()` に `pci_dev_is_disconnected()` を追加し、デバイスが安全に取り外されている場合にのみATS無効化をスキップするようにしましたが、これはIntel IOMMUのスケーラブルモードが有効化されている場合にのみ適用されます。

スケーラブルモードが無効化されているかサポートされていない場合、PCIeエンドポイントのリンクが切断されると、Intel IOMMUが完了不可能なATS無効化を無限に待機するため、システムがハードロックします。

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

コミット 81e921fd3216(「iommu/vt-d: デバイス解放時のNULLドメインを修正」)は、`intel_iommu_release_device()` に `intel_pasid_teardown_sm_context()` を追加しました。この関数は `qi_flush_dev_iotlb()` を呼び出し、PCIeエンドポイントのリンクが切断された場合にシステムをハードロックさせる可能性があります。

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

エンドポイントがリンクダウンイベントなしで接続を失う場合(例:リンク障害によるもの)があり、その後にプロセス(virsh destroy)を終了すると、ホストがハードロックします。

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()` は安全な取り外しパスのみをカバーしています。`pci_device_is_present()` はベンダー/デバイスIDを読み取ることでアクセシビリティをテストし、内部で `pci_dev_is_disconnected()` を呼び出します。ConnectX-5(8 GT/s、x2)では、これに約70 µsのオーバーヘッドがかかります。

`__context_flush_dev_iotlb()` はホットパス({attach,release}_devパス)でのみ呼び出されるため、そこに `pci_device_is_present()` を追加して、アクセス不可なデバイスをスキップし、ハードロックを回避します。

VulDB is the best source for vulnerability data and more expert information about this specific topic.

責任者

Linux

予約する

2026年05月01日

モデレーション

承諾済み

エントリ

VDB-361363

EPSS

0.00013

アクティビティ

非常低い

ソース

Want to know what is going to be exploited?

We predict KEV entries!