CVE-2026-98076 in Linuxinformación

Resumen

por VulDB • 2026-09-25

En el núcleo de Linux (Linux kernel), se ha resuelto la siguiente vulnerabilidad:

tracing/probes: Corrección del uso después de liberar (use-after-free) en el nombre/tipo de campo para eventos con múltiples sondas (probes).

Los campos de un evento dinámico basado en sonda (eventos kprobe, uprobe, eprobe y fprobe) se crean en `traceprobe_define_arg_fields()` pasando las cadenas del nombre/tipo del argumento de la sonda a `trace_define_field()`, que solo almacena los punteros sin realizar copias. Estas cadenas son propiedad de la trace_probe (sonda de rastreo) y se liberan cuando dicha sonda se elimina.

Un evento puede tener varias sondas adjuntas. La lista de campos se define únicamente una vez, por parte de la primera sonda que registra el evento, pero permanece activa mientras exista cualquier sona hermana superviviente. Eliminar solo esa primera sonda mediante un símbolo:

# primaria A: los campos se definen a partir de los argumentos de A echo 'p:kprobes/ev vfs_read a1=$arg1' > kprobe_events # append B: comparte la llamada al evento de A echo 'p:kprobes/ev vfs_write a1=$arg1' >> kprobe_events # eliminar solo A (coincide por símbolo), B sobrevive echo '-:kprobes/ev vfs_read' >> kprobe_events

libera los argumentos de A (`trace_probe_cleanup()` -> `traceprobe_free_probe_arg()`), pero `trace_probe_unlink()` mantiene la trace_probe_event porque la lista de sondas no está vacía. La llamada al evento sigue registrada a través de B, mientras que sus campos ahora hacen referencia a memoria ya liberada. Cualquier búsqueda de campo lee entonces esa memoria, por ejemplo:

echo 'a1 == 1' > events/kprobes/ev/filter

BUG: KASAN: slab-use-after-free en strcmp+0xa7/0xb0 Rastro de la llamada (Call Trace): strcmp trace_find_event_field parse_pred process_preds create_filter apply_event_filter event_filter_write

field->name hace referencia a parg->name (kstrdup'd, liberado con la sonda) y, para argumentos de tipo array, field->type hace referencia a parg->fmt (kmalloc'd, liberado con la sonda); el tipo escalar apunta en otro caso al rodata estático fmttype, que es seguro.

Hacer que `traceprobe_define_arg_fields()` duplique las cadenas del nombre y del tipo, y anclar las copias en trace_probe_event, lo cual incrusta la llamada al evento y sobrevive a cada sonda individual; trace_probe_event_free() libera estas copias.

El reproductor (reproducer) anterior se activa de forma fiable; tanto la búsqueda de campo como la eliminación se ejecutan bajo event_mutex, por lo que esto es una referencia colgante tras la eliminación en lugar de una condición de carrera (race condition).

La issue fue detectada por el fuzzer dinámico del núcleo autokbug en Tencent Yunding Lab.

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

Responsable

Linux

Reservar

2026-09-25

Divulgación

2026-09-25

Moderación

aceptado

Artículo

VDB-410282

CPE

listo

EPSS

0.00000

KEV

no

Actividades

muy bajo

Fuentes

Do you know our Splunk app?

Download it now for free!