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 (重要) [その他]
| |
| 影響を受けるシステム | |
|
| |
Linux | |
|
| |
| 想定される影響 | |
・当該ソフトウェアが扱う全ての情報が外部に漏れる可能性があります。 | |
| 対策 | |
リリース情報、またはパッチ情報が公開されています。参考情報を参照して適切な対策を実施してください。 | |
| ベンダ情報 | |
|
| |
| CWEによる脆弱性タイプ一覧 CWEとは? | |
| |
| 共通脆弱性識別子(CVE) CVEとは? | |
|
| |
| 参考情報 | |
| |
| 更新履歴 | |
|
| 公表日 | 2026/05/30 |
| 登録日 | 2026/06/11 |
| 最終更新日 | 2026/06/11 |



