【活用ガイド】

JVNDB-2026-022937

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

概要

Linuxカーネルにおいて、以下の脆弱性が修正されました。io-wqのio_wq_remove_pending()関数内で、先行エントリがハッシュされているかどうかを適切に確認するように改善されました。io_wq_remove_pending()は、キャンセルされたワークがハッシュバケットの末尾にあった場合にwq->hash_tail[]を修正する必要があります。この際、acct->work_listの先行エントリが同じハッシュ値かどうかは確認しますが、先行エントリがそもそもハッシュされているかどうかを一切確認していませんでした。io_get_work_hash()関数は単にatomic_read(&work->flags) >> IO_WQ_HASH_SHIFTを返すだけであり、ハッシュされていないワークにはハッシュビットが設定されないため、常に0を返してしまいます。そのため、ハッシュされたバケット0のワークが、そのリスト内でハッシュされていないワークを先行エントリとしてキャンセルされると、このチェックが誤って成功し、ハッシュされていないio_kiocbへのポインタがwq->hash_tail[0]に格納されてしまいます。ハッシュされていないワークはio_get_next_work()の高速パスを通じてデキューされ、このパスはhash_tail[]に一切触れないため、古くなったポインタがクリアされません。その結果、ハッシュされていないio_kiocbが完了してreq_cachepに解放された後も、wq->hash_tail[0]はダングリングポインタの状態が続きます。io_wqはタスク毎(tctx->io_wq)に管理されており、ringのオープン/クローズをまたいで存続するため、このダングリングポインタはタスクの生存期間中残り続けます。次に、ハッシュされたバケット0のenqueue処理がio_wq_insert_work()内でこのポインタを逆参照し、その後wq_list_add_after()が解放済みメモリを介して書き込みを行います。本修正では、io_wq_is_hashed()による不足していたチェックを追加し、ハッシュされていない先行ワークが決してhash_tail[]のスロットを継承しないようにしました。
CVSS による深刻度 (CVSS とは?)

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


Linux
  • Linux Kernel 5.8.6 以上 5.9 未満
  • Linux Kernel 5.9.1 以上 6.6.141 未満
  • Linux Kernel 6.13 以上 6.18.33 未満
  • Linux Kernel 6.19 以上 7.0.10 未満
  • Linux Kernel 6.7 以上 6.12.91 未満
  • Linux Kernel 5.9
  • Linux Kernel 7.1

想定される影響

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

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

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

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

  1. CVE-2026-46274
参考情報

  1. National Vulnerability Database (NVD) : CVE-2026-46274
  2. 関連文書 : https://git.kernel.org/stable/c/5a20ebf0c81b61f5ea3b1b529c100cad69b9f603
  3. 関連文書 : io-wq: check that the predecessor is hashed in io_wq_remove_pending() - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/d6bda9df0c0a3080804181464d5c0f4d78a4e769)
  4. 関連文書 : io-wq: check that the predecessor is hashed in io_wq_remove_pending() - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/d376c131af7c7739a87ff037ed2fdb67c2542c8a)
  5. 関連文書 : io-wq: check that the predecessor is hashed in io_wq_remove_pending() - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/d6a2d7b04b5a093021a7a0e2e69e9d5237dfa8cc)
  6. 関連文書 : https://git.kernel.org/stable/c/252c5051dba9c709b6a72f2866f93e5e618b3f06
更新履歴

  • [2026年07月10日]
      掲載