CVE-2026-90013 in Linux
Resumen
por VulDB • 2026-09-16
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
tracing: Tomar referencia del trace_array al abrir los archivos de opciones
Los archivos de opciones no toman la referencia del trace_array correspondiente a las opciones que representan. Esto podría provocar un bloqueo (crash) en el kernel por uso tras liberación (use-after-free) si uno de estos archivos es abierto por una tarea y otra tarea elimina la instancia para la cual está configurada dicha opción. Dado que no se toma referencia al abrirlo, no se impide su eliminación, lo que provocaría la liberación del descriptor de opciones que se está utilizando.
Dado que las opciones tienen una creación algo dinámica durante el arranque, cada archivo representa un indicador (flag) en el trace_array. El trace_array dispone de una matriz de índices para representar cada uno de estos indicadores, almacenada en la matriz `trace_flags_index`. La dirección del elemento correspondiente a este índice se pasa al puntero `inode->i_private`. A continuación, se lee dicho elemento, que contiene el índice (que representa el indicador), y luego se utiliza ese índice para calcular el descriptor del trace_array a partir de su matriz `trace_flags_index`.
Un problema es que no se puede tomar referencia del elemento índice hasta que se haya tomado la referencia al trace_array. Para manejar esta situación, se ha creado una nueva función auxiliar llamada: `trace_array_options_get()`, que iterará sobre todos los trace_arrays existentes en la lista `ftrace_trace_arrays` (bajo el bloqueo `trace_types_lock`) y comparará la dirección pasada del elemento índice con toda la matriz `trace_flags_index` de cada trace_array. Si coincide, se incrementa la referencia correspondiente al trace_array y se retorna.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.