JVNDB-2026-016893 | |
LinuxのLinux Kernelにおける解放済みメモリの使用に関する脆弱性 | |
| 概要 | |
Linuxカーネルでは、以下の脆弱性が修正されました。kthreadに関しては、use-after-freeを防ぐためにkthreadの終了パスを統合しました。Guillaume氏はKUnitテスト中に、破損したRCUコールバック関数ポインタによりクラッシュが発生したことを報告しました。そのクラッシュはpidfsのrhashtable変換に起因しており、24バイトのrb_nodeが構造体pid内で8バイトのrhash_headに置き換えられたため、160バイトから144バイトにサイズが縮小されました。CONFIG_BLK_CGROUPなしのstruct kthreadも144バイトになります。CONFIG_SLAB_MERGE_DEFAULTとSLAB_HWCACHE_ALIGNの設定により、両方とも192バイトに切り上げられ、同じスラブキャッシュを共有しています。struct pid.rcu.funcとstruct kthread.affinity_nodeは共にオフセット0x78に位置しています。kthreadがmake_task_dead()経由で終了するとkthread_exit()をバイパスし、affinity_nodeのクリーンアップを逃します。free_kthread_struct()はメモリを解放しますが、このノードはまだグローバルなkthread_affinity_listにリンクされたままになっています。別のkthreadによる後続のlist_del()が、解放され再利用されたメモリに対してダングリングリストポインタを書き込み、pidのrcu.funcポインタを破損させることがあります。free_kthread_struct()のパッチは未処理のクリーンアップに対応するものではなく、すべてのkthread終了パスを統合しました。kthread_exit()をdo_exit()を呼び出すマクロに変更し、PF_KTHREADフラグが設定されたタスクのdo_exit()から呼び出されるkthread_do_exit()を新たに追加しました。これにより、make_task_dead()、直接do_exit()、kthread_exit()のいずれの終了パスでもkthread固有のクリーンアップが必ず行われます。公開ヘッダでは__to_kthread()を新しいtsk_is_kthread()アクセサに置き換え、kthread_exit()マクロを使用するモジュールコードが必要とするため、do_exit()関数をエクスポートしています。 | |
| CVSS による深刻度 (CVSS とは?) | |
|
CVSS v3 による深刻度
基本値: 9.8 (緊急) [その他]
| |
| 影響を受けるシステム | |
|
| |
Linux | |
|
| |
| 想定される影響 | |
当該ソフトウェアが扱う全ての情報が外部に漏れる可能性があります。 | |
| 対策 | |
リリース情報、またはパッチ情報が公開されています。参考情報を参照して適切な対策を実施してください。 | |
| ベンダ情報 | |
|
| |
| CWEによる脆弱性タイプ一覧 CWEとは? | |
| |
| 共通脆弱性識別子(CVE) CVEとは? | |
|
| |
| 参考情報 | |
| |
| 更新履歴 | |
|
| 公表日 | 2026/05/08 |
| 登録日 | 2026/05/25 |
| 最終更新日 | 2026/05/25 |



