CVE-2026-98076 in Linuxinfo

Zusammenfassung

von VulDB • 25.09.2026

Im Linux-Kernel wurde folgende Schwachstelle behoben:

tracing/probes: Behebung eines Use-After-Free-Fehlers bei Feldnamen/-typen von Ereignissen mit mehreren Proben (Probes)

Die Felder einer auf Proben basierenden dynamischen Veranstaltung (kprobe, uprobe, eprobe und fprobe-Ereignisse) werden in `traceprobe_define_arg_fields()` erstellt, indem die Strings für den Namen/Typ des Probe-Arguments an `trace_define_field()` übergeben wird. Diese Funktion speichert lediglich die Zeiger ohne eine Kopie anzufertigen. Diese Strings gehören zur `trace_probe` und werden freigegeben, wenn diese Probe entfernt wird.

Ein Ereignis kann mehrere Proben angehängt haben. Die Feldliste wird nur einmal definiert, nämlich von der ersten Probe, die das Ereignis registriert, bleibt aber durch jede überlebende Geschwisterprobe am Leben. Wird lediglich diese erste Probe durch Symbol gelöscht:

# primär A: Felder werden aus den Argumenten von A definiert echo 'p:kprobes/ev vfs_read a1=$arg1' > kprobe_events # anhängen B: teilt sich den Ereignisaufruf von A echo 'p:kprobes/ev vfs_write a1=$arg1' >> kprobe_events # nur A löschen (durch Symbol abgeglichen), B überlebt echo '-:kprobes/ev vfs_read' >> kprobe_events

werden die Argumente von A freigegeben (`trace_probe_cleanup()` -> `traceprobe_free_probe_arg()`), während `trace_probe_unlink()` das `trace_probe_event` am Leben erhält, da die Probenliste nicht leer ist. Der Ereignisaufruf bleibt über B registriert, obwohl seine Felder nun auf freigegebenen Speicher verweisen. Jeder Feld-Lookup liest diesen dann, z.B.:

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

BUG: KASAN: slab-use-after-free in strcmp+0xa7/0xb0 Call Trace: strcmp trace_find_event_field parse_pred process_preds create_filter apply_event_filter event_filter_write

`field->name` verweist auf `parg->name` (mit kstrdup allokiert, mit der Probe freigegeben) und bei Array-Argumenten verweist `field->type` auf `parg->fmt` (mit kmalloc allokiert, mit der Probe freigegeben); der skalare Typ zeigt andernfalls auf die statische rodata `fmttype`, was sicher ist.

Lassen Sie `traceprobe_define_arg_fields()` die Namen- und Typstrings duplizieren und verankern Sie die Kopien im `trace_probe_event`, welches den Ereignisaufruf einbettet und jede einzelne Probe überlebt; `trace_probe_event_free()` gibt diese dann frei.

Der oben genannte Reproducer löst zuverlässig aus; da der Feld-Lookup und das Löschen beide unter dem `event_mutex` ausgeführt werden, handelt es sich um eine dangling reference (hängender Verweis) nach der Entfernung statt um einen Race Condition.

Das Problem wurde vom dynamischen Kernel-Fuzzer autokbug im Tencent Yunding Lab gefunden.

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

Zuständig

Linux

Reservieren

25.09.2026

Veröffentlichung

25.09.2026

Moderieren

akzeptiert

Eintrag

VDB-410282

CPE

bereit

EPSS

0.00000

KEV

nein

Aktivitäten

very low

Quellen

Want to stay up to date on a daily basis?

Enable the mail alert feature now!