【活用ガイド】

JVNDB-2026-032015

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

概要

Linuxカーネルにおいて、以下の脆弱性が修正されました。ksmbdにおけるSMB2_CLOSEの後にSMB2_CANCELが発生した際の遅延されたfile_lockのuse-after-freeの問題です。コミットf580d27e8928(タイトル:「ksmbd: 二重SMB2_CANCEL時の遅延されたfile_lockのuse-after-freeを修正」)では、smb2_cancel()が状態がKSMBD_WORK_CANCELLEDの作業をスキップするように変更され、cancel_fnが二度呼ばれないようにしました。しかし、KSMBD_WORKは3つの状態(ACTIVE、CANCELLED、CLOSED)を持っており、CLOSEDの場合もファイルロックを解放する処理に到達します。SMB2_CLOSEがロックハンドルに対して行われると、set_close_state_blocked_works()が遅延作業の状態をKSMBD_WORK_CLOSEDに設定し、smb2_lock()のワーカーを起こします。ワーカーは非ACTIVEの状態で早期に終了し、locks_free_lock()でfile_lockを解放します。そして状態がKSMBD_WORK_CANCELLEDではないため、STATUS_RANGE_NOT_LOCKEDの分岐を取り、「goto out2」で終了します。この分岐はキャンセルされた場合と同様にrelease_async_work()をスキップします。このため、作業はconn->async_requestsに残り、解放されたfile_lockを指す有効なcancel_fn = smb2_remove_blocked_lockが設定されたままになります。その後、同じAsyncIdに対するSMB2_CANCELはKSMBD_WORK_CANCELLEDの状態のみをガードしています(状態はKSMBD_WORK_CLOSEDのため通過します)。そのため、smb2_cancel()は解放済みのfile_lockに対して再びcancel_fnを呼び出し、SMB2_CLOSEによって修正されたのと同じuse-after-freeが発生します。 問題の発生例は以下の通りです。BUG: KASAN: slab-use-after-free in __locks_delete_block __locks_delete_block locks_delete_block ksmbd_vfs_posix_lock_unblock smb2_remove_blocked_lock smb2_cancel <- 2回目のSMB2_CANCELでcancel_fnが発火 handle_ksmbd_work 割り当て元は locks_alloc_lock <- smb2_lock であり、解放元は locks_free_lock <- smb2_lock(非ACTIVEの早期終了)です。対象は file_lock_cache(サイズ192)です。この問題はf580d27e8928を含むmainline 7.1-rc7で、KASANを有効にした認証済みSMBクライアントにて再現されました。二重のSMB2_CANCEL制御はすでにそのカーネルでは無効化されており、問題の原因はCLOSEトリガーにあります。cancel_fnが起動できるのはACTIVE状態の遅延作業のみであり、終端状態であるCANCELLEDおよびCLOSEDはsmb2_lock()の早期終了でfile_lockを解放し、release_async_work()をスキップします。したがって、非ACTIVEの作業はKSMBD_WORK_ACTIVEでガードし、スキップする必要があります。
CVSS による深刻度 (CVSS とは?)

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


Linux
  • Linux Kernel 6.1.176 以上 6.1.178 未満
  • Linux Kernel 6.12.94 以上 6.12.96 未満
  • Linux Kernel 6.18.36 以上 6.18.39 未満
  • Linux Kernel 6.6.143 以上 6.6.145 未満
  • Linux Kernel 7.0.13 以上 7.1 未満
  • Linux Kernel 7.1.1 以上 7.1.4 未満
  • Linux Kernel 7.1

想定される影響

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

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

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

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

  1. CVE-2026-64437
参考情報

  1. National Vulnerability Database (NVD) : CVE-2026-64437
  2. 関連文書 : ksmbd: fix use-after-free of a deferred file_lock on SMB2_CLOSE then SMB2_CANCEL - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/12c36c99655f325befe50c26842f7deca414c381)
  3. 関連文書 : ksmbd: fix use-after-free of a deferred file_lock on SMB2_CLOSE then SMB2_CANCEL - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/b8e274e69ab09222c7a552c7c0c1eef9ce627fc1)
  4. 関連文書 : ksmbd: fix use-after-free of a deferred file_lock on SMB2_CLOSE then SMB2_CANCEL - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/94083db751930b1540ddff2b54d4677549c57f81)
  5. 関連文書 : ksmbd: fix use-after-free of a deferred file_lock on SMB2_CLOSE then SMB2_CANCEL - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/a796ba4e61d5e14e07b79a359faac69f8f9b22a3)
  6. 関連文書 : ksmbd: fix use-after-free of a deferred file_lock on SMB2_CLOSE then SMB2_CANCEL - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/10f293a07f9e10e988b0ae44e2e99c631f5a68e0)
  7. 関連文書 : ksmbd: fix use-after-free of a deferred file_lock on SMB2_CLOSE then SMB2_CANCEL - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/ddb9239828336b36d8a3ef5943fdffb2f55b6508)
更新履歴

  • [2026年09月04日]
      掲載