Live › vulnerability › CVE-2026-99235
In the Linux kernel's tracing histogram code, a field-variable histogram keeps a pointer to another histogram that the user can remove, so the pointer can dangle. Reading the freed memory on teardown can crash the system or, in principle, let a local user with tracing access influence kernel memory.
Summary written from the sources below. Check the originals before acting.
First seen by InfraStack 2026-11-02 16:24 UTC. All times on this page are UTC.
Linux kernels built with histogram triggers (CONFIG_HIST_TRIGGERS) where someone can write to tracefs, which is normally root only. The bug is in field-variable (inter-event) histograms: removing the histogram they copy keys from leaves a dangling pointer, read as freed memory when the target histogram is removed. Affected kernel versions are not stated in the sources I read; the flawed code came in with the field variables commit 02205a6752f2. Systems where untrusted users cannot reach tracefs can mostly skip it.
No product ranges from the sources yet.
tracing: Save the event file instead of the compatible histogram (kernel/trace/trace_events_hist.c)Each row is the first time that source carried this signal. The analyst’s rows are its own findings.
In the Linux kernel, the following vulnerability has been resolved:
tracing: Save the event file instead of the compatible histogram
create_field_var_hist() creates a histogram on the matched event to supply a field variable, and records it on the target so it can be torn down later:
hist_data = find_compatible_hist(target_hist_data, file);
...
/* Save the compatible histogram information */
var_hist->hist_data = hist_data;
hist_data is not the histogram it creates. It is one that was already there, whose keys the new one copies. The saved pointer has a single user, unregister_field_var_hists(), which runs when the target is removed:
file = hist_data->field_var_hists[i]->hist_data->event_file;
find_compatible_hist() matches on keys alone, so it can pick one with no variables of its own. check_var_refs() then returns false and the user can remove it while the target still points at it:
BUG: KASAN: slab-use-after-free in event_hist_trigger_free+0x2b2/0x320 Read of size 8 at addr ffff8880093b90e0 by task init/1
Freed by task 1: kfree+0x154/0x420 event_hist_trigger_free+0x1d5/0x320 event_hist_trigger_parse+0x35f3/0x69e0 trigger_process_regex+0x1a6/0x250
Save the event file instead. It is all the dereference ever wanted, and it does not go away when the user removes a trigger.
This page as .md · .json · in your agent: get_signal("CVE-2026-99235")
NVD data is provided by NIST and is public domain. Posts quoted belong to their authors.