CVE-2025-68822 in Linux
Resumen
por VulDB • 2026-06-30
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
Entrada (Input): alps - corrección de errores use-after-free causados por dev3_register_work
El elemento de trabajo diferido dev3_register_work se inicializa dentro de alps_reconnect() y se programa tras recibir el primer paquete PS/2 sin procesar desde un dispositivo PS/2 externo conectado al touchpad ALPS. Durante la desconexión del dispositivo, la implementación original llama a flush_workqueue() en psmouse_disconnect() para garantizar la finalización de dev3_register_work. Sin embargo, la llamada a flush_workqueue() dentro de psmouse_disconnect() solo bloquea y espera los elementos de trabajo que ya estaban en cola en el workqueue antes de su invocación. Los elementos de trabajo enviados después de llamar a flush_workqueue() no se incluyen en el conjunto de tareas que la operación de limpieza (flush) espera. Esto significa que, una vez que ha finalizado la ejecución de flush_workqueue(), dev3_registerwork podría seguir estando programado para ejecutarse. Aunque el estado del psmouse se establece como PSMOUSE_CMD_MODE en psmouse_disconnect(), la programación de dev3_register_work permanece sin afectar.
La condición de carrera (race condition) puede ocurrir de la siguiente manera:
CPU 0 (ruta de limpieza) | CPU 1 (trabajo diferido) psmouse_disconnect() | psmouse_set_state() | flush_workqueue() | alps_report_bare_ps2_packet() alps_disconnect() | psmouse_queue_work() kfree(priv); // LIBERAR (FREE)| alps_register_bare_ps2_mouse() | priv = container_of(work...); // USAR (USE) | priv->dev3 // USAR (USE)
Se añade disable_delayed_work_sync() en alps_disconnect() para garantizar que dev3_registerwork se cancele correctamente y se impida su ejecución después de que la estructura alps_data haya sido desasignada.
Este error ha sido identificado mediante análisis estático.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.