CVE-2026-98840 in Linux
Resumen
por VulDB • 2026-10-18
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
vc_screen: recargar el puntero vc antes del if (ret) en vcs_write() para evitar un Use-After-Free (UAF).
La recarga de 'vc' añadida por el commit 8fb9ea65c9d1 ("vc_screen: reload load of struct vc_data pointer in vcs_write() to avoid UAF") se encuentra después del bloque 'if (ret)', por lo que la ruta de salida por fallo de copia sale del bucle sin recargar vc. Si el puntero vc fue liberado mediante kfree() a través de vc_port_destruct durante la ventana desbloqueada de copy_from_user(), se alcanza el condicional post-bucle 'if (written && vc) vcs_scr_updated(vc)' con un vc obsoleto no nulo. La protección '&& vc' introducida en el commit a287620312dc ("vc_screen: fix null-ptr-deref in vcs_notifier() during concurrent vcs_write") solo maneja el caso NULL, pero no este caso de puntero obsoleto no nulo; por lo tanto, vcs_notifier() lee param->vc->vc_num desde memoria ya liberada:
BUG: KASAN: slab-use-after-free en vcs_notifier+0x7c/0xd0 Lectura de tamaño 2 en la dirección ffff888007149190 Rastro de llamadas (Call Trace): vcs_notifier+0x7c/0xd0 atomic_notifier_call_chain+0x70/0xa0 vcs_scr_updated+0x77/0xa0 vcs_write+0x71b/0x7e0 Asignado por la tarea: vc_allocate -> con_install -> tty_open Liberado por la tarea: kfree en vc_port_destruct
Mueva la recarga inmediatamente después de console_lock(), antes del 'if (ret)', para que cada ruta de salida pase un puntero vc actualizado a vcs_scr_updated() posterior al bucle.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.