【活用ガイド】

JVNDB-2026-031823

LinuxのLinux Kernelにおける解放済みメモリの使用に関する脆弱性

概要

Linuxカーネルにおいて、以下の脆弱性が修正されました。nvme-pciのnvme_free_host_mem()におけるuse-after-freeの問題です。nvme_free_host_mem()はdma_free_noncontiguous()を介してdev->hmb_sgtを解放しますが、その後ポインタをクリアしません。このため、同じエラーパスでnvme_free_host_mem()が2回呼ばれるとuse-after-freeが発生します。これはnvme_probe()中に、nvme_setup_host_mem()がHMBの割り当てに成功してdev->hmb_sgtを設定した後に、nvme_set_host_mem()がI/Oエラーで失敗した場合に起こります。具体的な流れは以下の通りです。 - nvme_setup_host_mem() - nvme_alloc_host_mem_single()を呼び、dev->hmb_sgtを設定 - nvme_set_host_mem()が-EIOで失敗 - nvme_free_host_mem()がhmb_sgtを解放しますがNULLクリアはしない - エラーを返すnvme_probe()のエラーパスでは次のようになります。 - nvme_free_host_mem()が呼ばれますが、dev->hmb_sgtは古い状態のままでuse-after-freeが発生します。2回目の呼び出しが解放済みのsgtを参照し、iommu_dma_free_noncontiguous()内でsgt->sgl->dma_addressにアクセスした際にNULLポインタ参照が発生します。背後のメモリは既に解放およびゼロクリアされています。 この問題はThunderbolt接続のNVMeデバイス(例:Dell WD22TB4ドックの背後にあるOWC Envoy Express)で再現可能であり、PCIeリンクの不安定さによってHMBセットアップ中に断続的にI/Oエラーが返される場合に起こります。以下は関連するカーネルのBUGメッセージの一例です。 BUG: kernel NULL pointer dereference, address: 0000000000000010 RIP: 0010:iommu_dma_free_noncontiguous+0x22/0x80 Call Trace: <TASK> dma_free_noncontiguous+0x3b/0x130 nvme_free_host_mem+0x30/0xf0 [nvme] nvme_probe.cold+0xcc/0x275 [nvme] local_pci_probe+0x43/0xa0 pci_device_probe+0xeea/0x290 really_probe+0xf9/0x3b0 __driver_probe_device+0x8b/0x170 driver_probe_device+0x24/0xd0 __driver_attach_async_helper+0x6b/0x110 async_run_entry_fn+0x37/0x170 process_one_work+0x1ac/0x3d0 worker_thread+0x1b8/0x360 kthread+0xf7/0x130 ret_from_fork+0x2d8/0x3a0 ret_from_fork_asm+0x1a/0x30 </TASK>この問題は、解放後にdev->hmb_sgtをNULLに設定することで修正されました。これにより2回目の呼び出しはマルチディスクリプタパスを通り、安全に既にクリーンアップ済みの状態を処理できるようになりました。
CVSS による深刻度 (CVSS とは?)

CVSS v3 による深刻度
基本値: 7.8 (重要) [NVD値]
  • 攻撃元区分: ローカル
  • 攻撃条件の複雑さ: 低
  • 攻撃に必要な特権レベル: 低
  • 利用者の関与: 不要
  • 影響の想定範囲: 変更なし
  • 機密性への影響(C): 高
  • 完全性への影響(I): 高
  • 可用性への影響(A): 高
影響を受けるシステム


Linux
  • Linux Kernel 6.13 以上 6.18.34 未満
  • Linux Kernel 6.19 以上 7.0.11 未満
  • Linux Kernel 7.1

想定される影響

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

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

CWEによる脆弱性タイプ一覧  CWEとは?

  1. 解放済みメモリの使用(CWE-416) [NVD評価]
共通脆弱性識別子(CVE)  CVEとは?

  1. CVE-2026-64071
参考情報

  1. National Vulnerability Database (NVD) : CVE-2026-64071
  2. 関連文書 : nvme-pci: fix use-after-free in nvme_free_host_mem() - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/9525e3a6fbb1d126a22ab2ee86ddea25af581a7c)
  3. 関連文書 : nvme-pci: fix use-after-free in nvme_free_host_mem() - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/b35a13036755c5803168a7cb93bc66035c3e65b8)
  4. 関連文書 : nvme-pci: fix use-after-free in nvme_free_host_mem() - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/7c89f474005d8377525d2991930b7432ee193a52)
更新履歴

  • [2026年09月04日]
      掲載