CVE-2026-23088 Overview
CVE-2026-23088 is a kernel vulnerability in the Linux kernel's tracing subsystem that causes a system crash when creating and enabling synthetic events that utilize stacktrace fields from other synthetic events. The vulnerability occurs in the trace_event_raw_event_synth() function where stacktrace fields are incorrectly treated as normal fields rather than dynamic arrays, leading to improper memory access and a kernel panic.
Critical Impact
This vulnerability allows local users with access to the tracing filesystem (/sys/kernel/tracing) to trigger a kernel crash through manipulation of synthetic events with stacktrace fields, resulting in a denial of service condition.
Affected Products
- Linux kernel with tracing subsystem enabled
- Systems with /sys/kernel/tracing accessible to users
- Linux kernel versions prior to the security patches
Discovery Timeline
- February 4, 2026 - CVE CVE-2026-23088 published to NVD
- February 5, 2026 - Last updated in NVD database
Technical Details for CVE-2026-23088
Vulnerability Analysis
The vulnerability resides in the Linux kernel's tracing subsystem, specifically in how synthetic events handle stacktrace fields inherited from other synthetic events. When a synthetic event is created that references a stacktrace field from another synthetic event, and that new event is subsequently enabled or used in a histogram, the kernel crashes with a page fault.
The crash occurs because the stacktrace field is not properly labeled as a dynamic array type. In trace_event_raw_event_synth(), the event field is still treated as a dynamic array for storage purposes, but the data retrieval mechanism treats it as a normal field. This mismatch causes the code to access metadata instead of the actual dynamic array data, resulting in an invalid memory access at address 0x0000000000400010.
The issue manifests when chaining synthetic events together. A user creates a first synthetic event with a stacktrace field, attaches it to a trigger, then creates a second synthetic event that references the stacktrace from the first event. Upon enabling the second synthetic event, the kernel attempts to read from an invalid memory location.
Root Cause
The root cause is a type mismatch in the synthetic event handling code. Stacktrace fields in synthetic events require special handling as dynamic arrays, but when these fields are passed between synthetic events, the type information is lost. The receiving synthetic event treats the stacktrace field reference as a simple field value rather than a pointer to a dynamic array structure.
Specifically, in trace_event_raw_event_synth(), the code path for processing event fields checks whether a field is a dynamic array but fails to account for the case where a stacktrace field is inherited from another synthetic event. The field's is_stack or equivalent flag is not properly propagated during event creation.
Attack Vector
The attack requires local access to the system with permissions to write to the tracing filesystem, typically located at /sys/kernel/tracing. An attacker would perform the following sequence:
- Create an initial synthetic event with a stacktrace field
- Attach the synthetic event to an existing trace event using histogram triggers
- Create a second synthetic event that references the stacktrace from the first event
- Enable the second synthetic event or use it in a histogram trigger
The kernel will crash when attempting to process the chained stacktrace field, causing a denial of service. This attack does not require elevated privileges beyond write access to the tracing filesystem, which may be available to non-root users in certain configurations.
Detection Methods for CVE-2026-23088
Indicators of Compromise
- Kernel crash logs showing page fault at address 0x0000000000400010 or similar low memory addresses
- Oops messages referencing trace_event_raw_event_synth in the call trace
- System crashes occurring after manipulation of files in /sys/kernel/tracing/dynamic_events or trigger files
- BUG messages indicating supervisor read access in kernel mode with error code 0x0000
Detection Strategies
- Monitor for unusual activity in the /sys/kernel/tracing filesystem, particularly writes to dynamic_events and trigger files
- Implement kernel log monitoring for crash signatures containing trace_event_raw_event_synth function references
- Track process access patterns to the tracing subsystem, especially sequences of synthetic event creation followed by enabling
Monitoring Recommendations
- Enable kernel auditing for write operations to /sys/kernel/tracing/dynamic_events and event trigger files
- Configure crash dump collection to capture kernel state when page faults occur in the tracing subsystem
- Implement alerting for kernel oops messages that reference synthetic event processing functions
How to Mitigate CVE-2026-23088
Immediate Actions Required
- Apply the security patches from the Linux kernel stable branches
- Restrict access to the /sys/kernel/tracing filesystem to trusted administrators only
- Consider disabling the tracing subsystem if not required for production workloads
- Monitor systems for exploitation attempts targeting the tracing filesystem
Patch Information
Security patches have been released to the Linux kernel stable branches. The fix ensures that stacktrace fields are properly labeled and handled as dynamic arrays when passed between synthetic events. The patch commits can be found in the kernel git repository:
- Kernel Git Commit 327af07dff6ab5650b21491eb4f69694999ff3d1
- Kernel Git Commit 3b90d099efa2b67239bd3b3dc3521ec584261748
- Kernel Git Commit 90f9f5d64cae4e72defd96a2a22760173cb3c9ec
- Kernel Git Commit 98ecbfb2598c9c7ca755a29f402da9d36c057077
Workarounds
- Restrict access to /sys/kernel/tracing by adjusting filesystem permissions to root-only access
- Disable synthetic event functionality if not required by removing the CONFIG_SYNTH_EVENTS kernel configuration option
- Use SELinux or AppArmor policies to limit which processes can write to the tracing filesystem
- Monitor and audit all access to tracing-related files until patches can be applied
# Restrict tracing filesystem access to root only
chmod 700 /sys/kernel/tracing
chmod 700 /sys/kernel/debug/tracing
# Alternatively, unmount the tracing filesystem if not needed
umount /sys/kernel/tracing
umount /sys/kernel/debug/tracing
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.


