【活用ガイド】

JVNDB-2026-019270

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

概要

Linuxカーネルにおいて、以下の脆弱性が修正されました。eventpollのep_removeにおけるstruct eventpollおよびstruct fileのUse-After-Free(UAF)問題に対する修正です。ep_remove()(ep_remove_file()経由)ではfile-f_lockの下でfile-f_epをクリアしましたが、その後もクリティカルセクション内で@fileを使用し続けていました(is_file_epoll()やhlist_del_rcu()をhead経由で呼び出し、spin_unlockを行っていました)。同時に動作していた__fput()はeventpoll_release()の高速パスを経由し、その過程で一時的にNULLとなったfile-f_epを観察し、eventpoll_release_file()をスキップしてf_op-releaseおよびfile_free()を実行していました。epoll-watches-epollのケースでは、f_op-releaseはep_eventpoll_release() - ep_clear_and_put() - ep_free()となり、これが監視中のstruct eventpollをkfree()します。この中の埋め込みメンバのrefsにあるhlist_headはepi-fllink.pprevが指している場所と同一であり、その後のhlist_del_rcu()の「*pprev = next」により、解放済みのkmalloc-192メモリが上書きされる問題がありました。さらにstruct fileはSLAB_TYPESAFE_BY_RCUであるため、ep_remove()がまだそのロック内にいる間に、@fileを裏付けるスロットがalloc_empty_file()により再利用され、f_lockとf_epが再初期化される可能性があります。つまり、攻撃者が制御可能なkmem_cache_free()が誤ったスラブキャッシュに対して実行される事態が発生する恐れがありました。修正では、ep_remove()の先頭でepi_fget()により@fileをピン留めし、ピン留めが成功した場合にのみクリティカルセクションに入るようにしました。ピン留めした状態の@fileは参照カウントがゼロにならず、__fput()の実行を抑制します。これにより、監視されているstruct eventpollがhlist_del_rcu()およびf_lockの使用を跨いで有効な状態に保たれ、両方のUse-After-Freeを防止します。もしピン留めが失敗した場合は、@fileはすでに参照カウントゼロに達しており、__fput()が進行中です。f_epをクリアする前に早期リターンしているため、その経路はeventpoll_release()のスローパスであるeventpoll_release_file()を通り、ep-mtx上で待機し、待機側のep_clear_and_put()がロックを解放するのを待ちます。早期リターンしたepiのep-refcountのシェアは維持されているため、ep_clear_and_put()の最後のep_refcount_dec_and_test()はeventpoll_release_file()の動作中にeventpollを強制解放しません。孤立したepiはそこで適切にクリーンアップされます。ピン留め成功はまた、このepiに対してeventpoll_release_file()と競合していないことも証明するため、f_lock下のepi-dyingを再チェックしていた冗長な処理を削除しました。安価なロックなしのREAD_ONCE(epi-dying)による高速パスでの早期リターンはそのまま残します。
CVSS による深刻度 (CVSS とは?)

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


Linux
  • Linux Kernel 5.15.209 以上 5.16 未満
  • Linux Kernel 6.1.175 以上 6.2 未満
  • Linux Kernel 6.19 以上 7.0.10 未満
  • Linux Kernel 6.4 以上 6.18.33 未満

想定される影響

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

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

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

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

  1. CVE-2026-46242
参考情報

  1. National Vulnerability Database (NVD) : CVE-2026-46242
  2. 関連文書 : eventpoll: fix ep_remove struct eventpoll / struct file UAF - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/ced39b6a8062bac5c18a1c3df85634107eb8664a)
  3. 関連文書 : eventpoll: fix ep_remove struct eventpoll / struct file UAF - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/ef4ca02e95363e78977ca04340d44fe3b4b2b81f)
  4. 関連文書 : eventpoll: fix ep_remove struct eventpoll / struct file UAF - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/a6dc643c69311677c574a0f17a3f4d66a5f3744b)
更新履歴

  • [2026年06月11日]
      掲載