【活用ガイド】

JVNDB-2026-023175

LinuxのLinux Kernelにおけるリソースのロックに関する脆弱性

概要

Linuxカーネルにおいて、以下の脆弱性が修正されました。hfsplus: hfsplus_fill_super()での解放済みロック解放の修正です。hfsplus_fill_super()は検索構造体を初期化するためにhfs_find_init()を呼び出し、この関数内でtree->tree_lockを取得します。その後、hfsplus_cat_build_key()の呼び出しが失敗した場合、関数はロックを解放せずにout_put_rootエラーラベルへジャンプします。後続のクリーンアップ処理ではロックが保持されたままtreeデータ構造を解放し、「held lock freed(保持されたロックの解放)」の警告が引き起こされます。この問題は、out_put_rootエラーラベルへジャンプする前に不足していたhfs_find_exit(&fd)の呼び出しを追加することで修正しました。これにより、エラー経路でtree->tree_lockが適切に解放されることが保証されます。このバグはv6.13-rc1で開発中の実験的静的解析ツールを用いて最初に検出されており、最新のメインラインカーネルでも持続していることを確認しています。このツールはメモリ管理問題の検出に特化しており、現在も活発に開発中で、一般公開はまだされていません。QEMU上でx86_64 defconfig、lockdep有効、CONFIG_HFSPLUS_FS=yの構成にてランタイムテストを行い、バグの再現を確認しました。エラー経路を誘発するためにGDBを使いhfsplus_asc2uni()の呼び出し前にmax_unistr_lenパラメータを動的に1に縮小しました。これによりhfsplus_asc2uni()は自然に-ENAMETOOLONGを返し、hfsplus_cat_build_key()に伝播して誤ったエラー経路を通る結果となります。マウント処理中に以下の警告が観測されました。=========================WARNING: held lock freed!7.0.0-rc3-00016-gb4f0dd314b39 #4 Not tainted-------------------------mount/174はロックが保持されたままfff...からfff...までのメモリを解放しています!(中略)この問題により、ロックの保持状態に関わる不整合が発生し、システムの安定性や信頼性に影響を及ぼす可能性がありましたが、上記の修正により正常なロック解放が保証されるようになりました。
CVSS による深刻度 (CVSS とは?)

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


Linux
  • Linux Kernel 3.19 以上 5.10.259 未満
  • Linux Kernel 5.11 以上 5.15.210 未満
  • Linux Kernel 5.16 以上 6.1.176 未満
  • Linux Kernel 6.13 以上 6.18.30 未満
  • Linux Kernel 6.19 以上 7.0.7 未満
  • Linux Kernel 6.2 以上 6.6.140 未満
  • Linux Kernel 6.7 以上 6.12.88 未満

想定される影響

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

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

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

  1. 不適切なロック(CWE-667) [NVD評価]
共通脆弱性識別子(CVE)  CVEとは?

  1. CVE-2026-46299
参考情報

  1. National Vulnerability Database (NVD) : CVE-2026-46299
  2. 関連文書 : hfsplus: fix held lock freed on hfsplus_fill_super() - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/e890656accee4c26d932ea388eb8936a6e22184d)
  3. 関連文書 : hfsplus: fix held lock freed on hfsplus_fill_super() - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/3ca80e3012c8be85b4f8d0d20eac8d3b17ff257e)
  4. 関連文書 : hfsplus: fix held lock freed on hfsplus_fill_super() - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/bfbcce6a7b0552a390620d9b2c4d2bcb1825cbdc)
  5. 関連文書 : hfsplus: fix held lock freed on hfsplus_fill_super() - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/6499c9c8ec437a369e7e221dad91f6122b50759d)
  6. 関連文書 : hfsplus: fix held lock freed on hfsplus_fill_super() - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/90c500e4fd83fa33c09bc7ee23b6d9cc487ac733)
  7. 関連文書 : hfsplus: fix held lock freed on hfsplus_fill_super() - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/041acda6d9f96006703466449c10c9a69590c8b9)
  8. 関連文書 : hfsplus: fix held lock freed on hfsplus_fill_super() - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/c554ddc87af4d4e4be42f8aed1baec9e1c7588e0)
  9. 関連文書 : hfsplus: fix held lock freed on hfsplus_fill_super() - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/d309d3308de658d87c42d97e044c89a226327526)
更新履歴

  • [2026年07月10日]
      掲載