【活用ガイド】

JVNDB-2025-025230

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

概要

Linuxカーネルにおいて、以下の脆弱性が修正されました。cnicのcnic_delete_taskにおけるuse-after-freeバグを修正しました。元のコードでは、cnic_cm_stop_bnx2x_hw()内でcancel_delayed_work()が使用されており、遅延ワークアイテムである'delete_task'がすでに実行中の場合、その完了が保証されていませんでした。さらに、その遅延ワークアイテムは周期的であり、cnic_cm_stop_bnx2x_hw()内のflush_workqueue()は呼び出し前にキューに入れられたワークアイテムのみを待機します。flush_workqueue()呼び出し後にキューに追加されたワークアイテムは待機対象に含まれません。つまり、周期的なワークアイテムの実行が終了した後でも、workqueueに遅延ワークアイテムが存在する可能性があります。これにより、cnic_free_dev()によってcnic_devが解放された後でもdelete_taskがアクティブなままでcnic_delete_task()内でcnic_devを参照しようとしてuse-after-freeの状況が発生します。典型的な競合状態は以下の通りです。CPU0(クリーンアップ)ではcnic_netdev_event() - cnic_stop_hw() - cnic_cm_stop_bnx2x_hw() - cancel_delayed_work() - flush_workqueue() - cnic_free_dev(dev)が実行され、cnic_devが解放されます。一方、CPU1(遅延ワークコールバック)ではcnic_delete_task()がflush_workqueue()の後にqueue_delayed_work()を実行し、新しいdelete_taskインスタンスがdevを使用します。cancel_delayed_work()をcancel_delayed_work_sync()に置き換えることで、周期的な遅延ワークアイテムが適切にキャンセルされ、ワークアイテムの実行が完了するまで待機した後にcnic_devが解放されるようになりました。さらにcancel_delayed_work_sync()は__flush_work(work, true)を使用して現在実行中のワークアイテムの完了を同期的に待つため、flush_workqueue()は冗長となり削除されるべきです。このバグは静的解析により特定されました。再現および修正検証のために、QEMU上でcnic PCIデバイスをシミュレートし、cnic_delete_task()内にssleep()を挿入するなど意図的な遅延を加えてバグ発生の可能性を高めました。
CVSS による深刻度 (CVSS とは?)

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


Linux
  • Linux Kernel 2.6.37 以上 5.4.300 未満
  • Linux Kernel 5.11 以上 5.15.194 未満
  • Linux Kernel 5.16 以上 6.1.154 未満
  • Linux Kernel 5.5 以上 5.10.245 未満
  • Linux Kernel 6.13 以上 6.16.9 未満
  • Linux Kernel 6.2 以上 6.6.108 未満
  • Linux Kernel 6.7 以上 6.12.49 未満
  • Linux Kernel 6.17

想定される影響

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

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

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

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

  1. CVE-2025-39945
参考情報

  1. National Vulnerability Database (NVD) : CVE-2025-39945
  2. 関連文書 : cnic: Fix use-after-free bugs in cnic_delete_task - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/fde6e73189f40ebcf0633aed2b68e731c25f3aa3)
  3. 関連文書 : cnic: Fix use-after-free bugs in cnic_delete_task - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/0627e1481676669cae2df0d85b5ff13e7d24c390)
  4. 関連文書 : cnic: Fix use-after-free bugs in cnic_delete_task - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/8eeb2091e72d75df8ceaa2172638d61b4cf8929a)
  5. 関連文書 : cnic: Fix use-after-free bugs in cnic_delete_task - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/6e33a7eed587062ca8161ad1f4584882a860d697)
  6. 関連文書 : cnic: Fix use-after-free bugs in cnic_delete_task - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/7b6a5b0a6b392263c3767fc945b311ea04b34bbd)
  7. 関連文書 : cnic: Fix use-after-free bugs in cnic_delete_task - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/0405055930264ea8fd26f4131466fa7652e5e47d)
  8. 関連文書 : cnic: Fix use-after-free bugs in cnic_delete_task - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/cfa7d9b1e3a8604afc84e9e51d789c29574fb216)
  9. 関連文書 : cnic: Fix use-after-free bugs in cnic_delete_task - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/e1fcd4a9c09feac0902a65615e866dbf22616125)
更新履歴

  • [2026年01月26日]
      掲載