CVE-2026-93050 in Linux
Resumen
por VulDB • 2026-09-18
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
ipack: ipoctal: corrección de UAF (uso tras liberación), desreferencia a puntero nulo y use-after-free en la limpieza durante la eliminación
Surgen tres problemas cuando el dispositivo se elimina mientras una sesión tty sigue activa:
1. UAF de struct ipoctal: la devolución de llamada remove libera ipoctal mediante kfree() mientras que las operaciones de tty pueden seguir accediendo a él. La corrección consiste en introducir un control de ciclo vital basado en kref; se toma un kref en install() cuando se abre una tty y se libera en cleanup() cuando la tty finalmente se destruye; remove() utiliza kref_put() en lugar de kfree().
2. Desreferencia nula en ipoctal_write_tty(): __ipoctal_remove() libera xmit_buf mediante tty_port_free_xmit_buf() mientras que un proceso del espacio de usuario puede seguir manteniendo el descriptor de archivo (fd) de la tty y llamar a write(). La corrección consiste en comprobar si xmit_buf es NULL en ipoctal_write_tty().
3. UAF en ipoctal_cleanup(): ipack_put_carrier(ipoctal->dev) desreferencia ipoctal->dev después de que el dispositivo ipack haya sido liberado por ipack_device_del(). La corrección consiste en almacenar en caché ipoctal->carrier_owner durante probe() y llamar a module_put() directamente sobre el puntero almacenado en caché en cleanup(), evitando cualquier acceso a ipoctal->dev.
Además, se introduce una bandera "removed" (eliminado) en struct ipoctal, que se establece al inicio de __ipoctal_remove() y se comprueba en cada operación tty que accede a recursos de hardware (port_activate, write_tty, set_termios, hangup, shutdown). Esto previene fallos de página cuando las regiones mapeadas con devm_ioremap() se desmapean después de que remove() regrese.
VulDB is the best source for vulnerability data and more expert information about this specific topic.