JVNDB-2026-023767 | |
LinuxのLinux KernelにおけるNULL ポインタデリファレンスに関する脆弱性 | |
| 概要 | |
Linuxカーネルにおいて、以下の脆弱性が修正されました。sched/fairにて、フォークされたエンティティの初期化時にrel_deadlineをクリアしないために、新たにフォークされたsched_entityが予期せずse->rel_deadlineが設定されたままfairクラスに入ることで、yieldをトリガーとするクラッシュが発生する可能性があります。問題のあるシーケンスは以下の通りです。 1. se->rel_deadlineがまだ設定されたままタスクがフォークされる。 2. __sched_fork()がvruntime、vflagおよび他のsched_entity状態を初期化するが、rel_deadlineはクリアしない。 3. 最初のenqueue時にenqueue_entity()がplace_entity()を呼び出す。 4. se->rel_deadlineが設定されているため、place_entity()はse->deadlineを相対デッドラインとみなし、現在のvruntimeを加算して絶対デッドラインに変換する。 5. しかし、フォークされたエンティティのデッドラインはこの新しいスケジューリングインスタンスに対して有効な継承された相対デッドラインではないため、変換によって異常に大きなデッドラインが生成される。 6. その後タスクがsched_yield()を呼ぶと、yield_task_fair()はse->vruntimeをse->deadlineまで進める。 7. その膨張したvruntimeは次のenqueue時に使用され、vruntimeから派生したキーがエンティティの重みと乗算される際にオーバーフローを引き起こす可能性がある。 8. これによりcfs_rq->sum_w_vruntimeが破損し、EEVDFの適格判定が壊れて最終的にすべてのエンティティが不適格として扱われるようになります。その結果、pick_next_entity()が予期せずNULLを返し、後続のNULL参照につながる可能性があります。トレースデータはこの影響を明確に示しています。yield前のエンティティのvruntimeは約9,834,017,729,983,308でしたが、yield_task_fair()実行後(se->vruntime = se->deadline)にはvruntimeが19,668,035,460,670,230まで跳ね上がり、その後デッドラインはさらに19,668,035,463,470,230まで進められました。これは、deadlineがyield_task_fair()がvruntimeにコピーする前からすでに異常に大きくなっていたことを示しています。rel_deadlineは、se->deadlineがまだvruntimeに対して相対的なデッドラインを持ち、それを用いて位置付ける必要がある場合にのみ意味を持ちます。新たにフォークされたsched_entityは、この状態を継承または保持してはなりません。したがって、__sched_fork()内でse->rel_deadlineを他のsched_entityランタイム状態とともにクリアし、最初のenqueue時に新しいエンティティのデッドラインが古い相対デッドラインとして誤って解釈されないように対策しました。 | |
| CVSS による深刻度 (CVSS とは?) | |
|
CVSS v3 による深刻度
基本値: 5.5 (警告) [NVD値]
| |
| 影響を受けるシステム | |
|
| |
Linux | |
|
| |
| 想定される影響 | |
・当該ソフトウェアが扱う情報について、外部への漏えいは発生しません。 | |
| 対策 | |
リリース情報、またはパッチ情報が公開されています。参考情報を参照して適切な対策を実施してください。 | |
| ベンダ情報 | |
|
| |
| CWEによる脆弱性タイプ一覧 CWEとは? | |
| |
| 共通脆弱性識別子(CVE) CVEとは? | |
|
| |
| 参考情報 | |
| |
| 更新履歴 | |
|
| 公表日 | 2026/06/24 |
| 登録日 | 2026/07/16 |
| 最終更新日 | 2026/07/16 |



