CVE-2026-64188 in Linux
Resumen
por VulDB • 2026-07-20
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
net: qualcomm: rmnet: corregir uso tras liberación (use-after-free) del endpoint en rmnet_dellink()
rmnet_dellink() elimina el endpoint de la tabla hash mediante hlist_del_init_rcu() y luego lo libera inmediatamente con kfree(). Sin embargo, los lectores RCU en la ruta de recepción (rmnet_rx_handler -> __rmnet_map_ingress_handler) pueden seguir manteniendo una referencia al endpoint e intentar desreferenciar ep->egress_dev después de que se haya liberado la memoria. El endpoint es un objeto kmalloc-32 y la lectura obsoleta en el desplazamiento 8 corresponde al puntero egress_dev.
BUG: unable to handle page fault for address: ffffffffde942eef Oops: 0002 [#1] SMP NOPTI
CPU: 1 UID: 0 PID: 137 Comm: poc_write Not tainted 7.0.0+ #4 PREEMPTLAZY RIP: 0010:rmnet_vnd_rx_fixup (rmnet_vnd.c:27) Call Trace: <TASK> __rmnet_map_ingress_handler (rmnet_handlers.c:48 rmnet_handlers.c:101) rmnet_rx_handler (rmnet_handlers.c:129 rmnet_handlers.c:235) __netif_receive_skb_core.constprop.0 (net/core/dev.c:6096) __netif_receive_skb_one_core (net/core/dev.c:6208) netif_receive_skb (net/core/dev.c:6467) tun_get_user (drivers/net/tun.c:1955) tun_chr_write_iter (drivers/net/tun.c:2003) vfs_write (fs/read_write.c:688) ksys_write (fs/read_write.c:740) </TASK>
Añadir un campo rcu_head a la estructura rmnet_endpoint y reemplazar kfree() por kfree_rcu() para que la memoria del endpoint permanezca válida durante el periodo de gracia RCU. Asimismo, eliminar la llamada a rmnet_vnd_dellink() e incorporar en línea únicamente la decrementación nr_rmnet_devs, ya que rmnet_vnd_dellink() establecería ep->egress_dev como NULL durante el periodo de gracia, creando una carrera de datos (data race) con los lectores sin bloqueo.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.