Description
In the Linux kernel, the following vulnerability has been resolved:

tracing: Fix memory corruption from the histogram stacktrace modifier

parse_field() sets HIST_FIELD_FL_STACKTRACE from the ".stacktrace"
modifier before it looks the field name up, and nothing afterwards
checks that the name resolved to a field which holds a stacktrace.
create_hist_field() picks HIST_FIELD_FN_STACK on the strength of the
field pointer alone, which reads a __data_loc word from the record and
follows its low 16 bits as an offset into the same record.
event_hist_trigger() takes the first word there as an entry count and
copies that many longs into a 31 entry array:

n_entries = *stack;
memcpy(entries, ++stack, n_entries * sizeof(unsigned long));

Neither end of that copy is bounded, and the count is whatever the event
holds at the offset, so any field will do:

# cd /sys/kernel/tracing/events/sched/sched_process_fork
# echo 'hist:keys=parent_pid.stacktrace' > trigger
# (true)

BUG: kernel NULL pointer dereference, address: 0000000000000008
RIP: 0010:rb_insert_color+0x18/0x130
timerqueue_linked_add+0x7e/0xd0
enqueue_hrtimer+0x39/0xb0
__hrtimer_run_queues+0x10f/0x1f0
</IRQ>
RIP: 0010:memcpy+0xc/0x30
event_hist_trigger+0x165/0x690

The timer interrupt landed on the rbtree the copy had already run over.
No debug options are needed for this; KASAN reports the same write as an
out-of-bounds read of 13835058055416381440 bytes.

Documentation/trace/histogram.rst already states the rule, "must be a
long[] type", so enforce it once the name has been resolved. Names which
resolve to no field at all, "hitcount.stacktrace" and the common_*
pseudo-fields, are refused for the same reason: they hold no stacktrace
to read.
Published: 2026-09-25
Score: n/a
EPSS: n/a
KEV: No
Impact: Kernel memory corruption
Action: Apply patch
AI Analysis

Impact

The vulnerability originates from the Linux kernel’s tracing histogram feature, where the histogram stacktrace modifier can cause an unbounded memory copy. During parsing, the code incorrectly interprets the field name, selects an incorrect stacktrace field, and copies an arbitrary number of entries directly into a fixed‑size array. This overrun can lead to out‑bounds memory writes and kernel crashes, exposing the system to potential denial of service.

Affected Systems

The flaw affects the Linux kernel on any distribution that implements the tracing histogram mechanism without the patch referenced in the provided commits. Specific kernel versions are not enumerated; the issue applies to all kernels that have not incorporated the fix.

Risk and Exploitability

The Exploit Prediction Scoring System value is not available, and the vulnerability is not listed in the CISA KEV catalog, indicating limited public exploitation data. The attack vector is inferred to be local: an attacker must be able to write to tracing event trigger files such as /sys/kernel/tracing/events/<event>/trigger. Once the trigger is written with a .stacktrace modifier, the kernel will execute the vulnerable code, potentially causing memory corruption and a crash. Given the local nature of the attack and the requirement for write access to the tracing subsystem, the overall risk remains low to moderate but should be mitigated through patching.

Generated by OpenCVE AI on September 25, 2026 at 18:21 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Update the Linux kernel to a version that includes the official patch for CVE-2026-97936.
  • If upgrade is not feasible, remove or disable trace events that use the .stacktrace modifier in histogram triggers.
  • Monitor kernel logs for KASAN or out‑of‑bounds access warnings to detect potential exploitation.

Generated by OpenCVE AI on September 25, 2026 at 18:21 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Fri, 25 Sep 2026 18:45:00 +0000

Type Values Removed Values Added
Weaknesses CWE-120
CWE-125

Fri, 25 Sep 2026 10:30:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: tracing: Fix memory corruption from the histogram stacktrace modifier parse_field() sets HIST_FIELD_FL_STACKTRACE from the ".stacktrace" modifier before it looks the field name up, and nothing afterwards checks that the name resolved to a field which holds a stacktrace. create_hist_field() picks HIST_FIELD_FN_STACK on the strength of the field pointer alone, which reads a __data_loc word from the record and follows its low 16 bits as an offset into the same record. event_hist_trigger() takes the first word there as an entry count and copies that many longs into a 31 entry array: n_entries = *stack; memcpy(entries, ++stack, n_entries * sizeof(unsigned long)); Neither end of that copy is bounded, and the count is whatever the event holds at the offset, so any field will do: # cd /sys/kernel/tracing/events/sched/sched_process_fork # echo 'hist:keys=parent_pid.stacktrace' > trigger # (true) BUG: kernel NULL pointer dereference, address: 0000000000000008 RIP: 0010:rb_insert_color+0x18/0x130 timerqueue_linked_add+0x7e/0xd0 enqueue_hrtimer+0x39/0xb0 __hrtimer_run_queues+0x10f/0x1f0 </IRQ> RIP: 0010:memcpy+0xc/0x30 event_hist_trigger+0x165/0x690 The timer interrupt landed on the rbtree the copy had already run over. No debug options are needed for this; KASAN reports the same write as an out-of-bounds read of 13835058055416381440 bytes. Documentation/trace/histogram.rst already states the rule, "must be a long[] type", so enforce it once the name has been resolved. Names which resolve to no field at all, "hitcount.stacktrace" and the common_* pseudo-fields, are refused for the same reason: they hold no stacktrace to read.
Title tracing: Fix memory corruption from the histogram stacktrace modifier
First Time appeared Linux
Linux linux Kernel
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
References

Subscriptions

Linux Linux Kernel
cve-icon MITRE

Status: PUBLISHED

Assigner: Linux

Published:

Updated: 2026-09-25T10:22:50.446Z

Reserved: 2026-09-25T10:18:58.204Z

Link: CVE-2026-97936

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-09-25T11:17:20.963

Modified: 2026-09-25T11:17:20.963

Link: CVE-2026-97936

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-25T18:30:17Z

Weaknesses
  • CWE-120

    Buffer Copy without Checking Size of Input ('Classic Buffer Overflow')

  • CWE-125

    Out-of-bounds Read