CVE-2023-53419 in Linux
要約
〜によって VulDB • 2026年08月05日
Linuxカーネルにおいて、以下の脆弱性が修正されました。
rcu: rcu_print_task_exp_stall() による rnp->exp_tasks のアクセスを保護する
CONFIG_PREEMPT_RCU=y でビルドされたカーネルでは、以下のシナリオによりNULLポインタ参照が発生する可能性があります。
CPU1 CPU2 rcu_preempt_deferred_qs_irqrestore rcu_print_task_exp_stall if (special.b.blocked) READ_ONCE(rnp->exp_tasks) != NULL raw_spin_lock_rcu_node np = rcu_next_node_entry(t, rnp) if (&t->rcu_node_entry == rnp->exp_tasks) WRITE_ONCE(rnp->exp_tasks, np) .... raw_spin_unlock_irqrestore_rcu_node raw_spin_lock_irqsave_rcu_node t = list_entry(rnp->exp_tasks->prev, struct task_struct, rcu_node_entry) (rnp->exp_tasks が NULL の場合、この操作は NULLポインタを参照します)
問題は、CPU2が rcp_node 構造体の ->lock を保持せずに rcp_node 構造体の ->exp_tasks フィールドにアクセスし、かつ CPU1 による rcp_node 構造体の ->exp_tasks への変更をタイムリーに観察していなかったことです。したがって、CPU1 が rcp_node 構造体の ->exp_tasks ポインタを NULL に設定した場合、CPU2 はそのNULLポインタを参照する可能性があります。
このコミットにより、rcp_node 構造体の ->exp_tasks フィールドへのアクセス時に rcp_node 構造体の ->lock を保持するようにしました。
[ paulmck: Frederic Weisbecker のフィードバックを適用 ]
If you want to get the best quality for vulnerability data then you always have to consider VulDB.