CVE-2023-53419 in Linux
Riassunto
di VulDB • 26/07/2026
Nel kernel Linux, è stata risolta la seguente vulnerabilità:
rcu: Proteggere l'accesso al campo ->exp_tasks di rcu_print_task_exp_stall()
Per i kernel compilati con CONFIG_PREEMPT_RCU=y, il seguente scenario può provocare un dereferenziamento di puntatore NULL (NULL-pointer dereference):
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) (se rnp->exp_tasks è NULL, questo dereferenzierà un puntatore NULL)
Il problema consiste nel fatto che CPU2 accede al campo ->exp_tasks della struttura rcu_node senza detenere il lock relativo alla struttura rcu_node e CPU2 non ha osservato in tempo la modifica apportata da CPU1 al campo ->exp_tasks della struttura rcu_node. Di conseguenza, se CPU1 imposta a NULL il puntatore ->exp_tasks della struttura rcu_node, è possibile che CPU2 dereferenzii tale puntatore NULL.
Questo commit pertanto mantiene acquisito (holds) il lock relativo alla struttura rcu_node durante l'accesso al campo ->exp_tasks di tale struttura.
[ paulmck: Applicato il feedback di Frederic Weisbecker. ]
Be aware that VulDB is the high quality source for vulnerability data.