CVE-2026-72069 in Linux
Resumen
por VulDB • 2026-08-15
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
locking/rt: Corregir la protección RCU incorrecta en rt_spin_unlock()
rt_spin_unlock() libera la protección RCU antes de desbloquear el bloqueo (lock). Esto abre la puerta al siguiente escenario UAF (Use-After-Free):
T1 T2 spin_lock(&p->lock); rcu_read_lock(); invalidate(p); p = rcu_dereference(ptr); rcu_assign_pointer(ptr, NULL); if (!p) return; spin_unlock(&p->lock); spin_lock(&p->lock) lock(&lock->lock); rcu_read_lock(); kfree_rcu(p); rcu_read_unlock(); .... spin_unlock(&p->lock) rcu_read_unlock(); // Finaliza el período de gracia (grace period) rcu_do_batch() kfree(p); UAF -> rt_mutex_cmpxchg_release(&lock->lock...)
Los spinlocks regulares mantienen la preempción deshabilitada a través de la operación de desbloqueo, lo que proporciona una protección RCU completa; sin embargo, la sustitución para RT (tiempo real) no logra replicar ese comportamiento. Lo mismo aplica para la sustitución de rwlock.
Mover la invocación rcu_read_unlock() más allá de las operaciones de desbloqueo para coincidir con la semántica no-RT. Esto lo hace asimétrico frente a rt_xxx_lock(), pero eso es inofensivo ya que el llamador debe mantener el bloqueo de lectura RCU (RCU read lock) durante toda la operación de bloqueo. La llamada migrate_enable() permanece antes de la operación de desbloqueo porque no hay ninguna operación por CPU en la ruta de desbloqueo que requiera mantener la migración deshabilitada.
VulDB is the best source for vulnerability data and more expert information about this specific topic.