CVE-2026-90014 PUBLISHED

tracing: Have show_event_filters/triggers files take trace array ref

Assigner: Linux
Reserved: 11.09.2026 Published: 16.09.2026 Updated: 16.09.2026

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

tracing: Have show_event_filters/triggers files take trace array ref

The newly added files show_event_filters and show_event_triggers that show all filters or triggers that are set within the trace array do not take a reference for the trace array it is showing. Without taking a reference, the trace_array may be freed via "rmdir" while a task is reading one of theses files. Those files iterate all the events within an instance (trace_array) and nothing prevents that instance from being freed while its data is being read. This causes a use-after-free crash.

Have the open of both those files take the trace_array reference via the trace_array_get() that prevents the trace_array from being freed while the files are opened.

Metrics

CVSS Vector: CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
CVSS Score: 7.8

AV:L - The UAF is reached only via local tracefs: open/read of instances/<name>/show_event_filters or show_event_triggers (ftrace_event_show_*_open -> seq_read -> t_start) concurrent with rmdir(2) of that instance (tracefs_syscall_rmdir -> instance_rmdir -> __remove_instance). There is no network, adjacent-radio, or physical path. AC:L - The attacker owns both sides and can trigger it sequentially: mkdir an instance, open show_event_filters/triggers (no trace_array ref), rmdir it (__remove_instance sees tr->ref==1 and kfree()s tr), then read the still-open fd. No victim state or uninfluenced layout is required; CONFIG_TRACING is standard. PR:L - The open path checks only LOCKDOWN_TRACEFS and DAC (files are 0440; instance mkdir/rmdir has no capable() gate). Tracefs uid=/gid=/mode= mounts on Android/Perfetto, ChromeOS, and distro tracing groups grant this to unprivileged users, matching CVE-2024-50207, CVE-2025-38101, and CVE-2026-74634. UI:N - The attacker creates the instance, opens the seq file, rmdirs it, and reads the fd from their own threads. No separate victim mount, click, or cooperating process is required. S:U - The use-after-free corrupts the host kernel's trace_array and event-file heap objects within the same OS security authority. It enables local privilege escalation but does not cross a VM, IOMMU, sandbox, or hardware trust boundary. C:H - After rmdir kfree()s the trace_array and its trace_event_file objects, t_start/t_next walk the freed tr->events list and t_show_filters copies filter->filter_string to userspace via seq_printf, disclosing recycled kernel heap. Use-after-free is scored C:H. I:H - t_show_triggers invokes data->cmd_ops->print() on use-after-free trigger objects, and walking the freed tr->events list is a heap UAF write/control-flow primitive after spraying. Use-after-free is scored I:H. A:H - syzkaller reported a KASAN slab-use-after-free in t_start/t_next when the instance is removed while the file is read, which oopses or panics the kernel. Any use-after-free of the trace_array is a reliable whole-system crash even without full exploitation.

Product Status

Vendor Linux
Product Linux
Versions Default: unaffected
  • affected from 729757b96a662d87e334fe8b837707800d8fd551 to 2ee3f7d43f79efaca0cd84a6798653d9d75ce60b (excl.)
  • affected from 729757b96a662d87e334fe8b837707800d8fd551 to f4a771cc684c7354b6200147f7252c58d17408ff (excl.)
Vendor Linux
Product Linux
Versions Default: affected
  • Version 7.0 is affected
  • unaffected from 0 to 7.0 (excl.)
  • unaffected from 7.2.5 to 7.2.* (incl.)
  • unaffected from 7.3-rc2 to * (incl.)

References