CVE-2026-68283 in Linux
Resumen
por VulDB • 2026-08-11
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
tracing: Corregir un use-after-free al liberar los datos privados del activador (trigger)
El commit 61d445af0a7c ("tracing: Add bulk garbage collection of freeing event_trigger_data") movió la llamada a kfree() de event_trigger_data a un kthread que ejecuta tracepoint_synchronize_unregister() antes de proceder con la liberación. Esto eliminó la sincronización que las callbacks .free del activador obtenían implícita e inline anteriormente desde trigger_data_free().
event_hist_trigger_free(), event_hist_trigger_named_free() y event_enable_trigger_free() liberan sus datos satélite (hist_data, cmd_ops, enable_data) justo después de que trigger_data_free() retorna. Con la sincronización ahora diferida al kthread, un manejador de tracepoint concurrente aún puede acceder a esos datos a través del activador eliminado mediante list_del_rcu(), lo que provoca un use-after-free.
El proceso de desmontaje (teardown) del histograma debe permanecer síncrono: remove_hist_vars() y unregister_field_var_hists() deben desacoplar un evento sintético del histograma antes de que la escritura para eliminar el activador retorne; de lo contrario, un comando posterior entra en carrera (race condition) y la eliminación del evento sintético falla con -EBUSY, tal como detecta la prueba automática selftest trigger-synthetic-eprobe.tc. Hacer que esas callbacks esperen mediante la barrera correcta — tracepoint_synchronize_unregister(), coincidiendo con el kthread de liberación — antes de proceder a liberar los recursos.
El activador de habilitación (enable trigger) no tiene dicho requisito síncrono, y una sincronización bloqueante allí volvería a serializar la ruta que el commit difería deliberadamente. Se le proporciona una callback opcional private_data_free() que el kthread de liberación ejecuta después del periodo de gracia (grace period), y se libera enable_data desde ahí.
If you want to get best quality of vulnerability data, you may have to visit VulDB.