CVE-2025-39689 Overview
CVE-2025-39689 is a use-after-free vulnerability [CWE-416] in the Linux kernel's ftrace subsystem. The flaw affects how the kernel handles reads of set_ftrace_filter and set_ftrace_notrace filter files. The reader iterator stores a raw pointer to the global tracer hash rather than allocating a private copy, unlike the writer path. Because that pointer remains static across function calls that release locks capable of updating the global tracer hashes, subsequent access can dereference freed memory.
Critical Impact
A local authenticated user with access to tracing filter files can trigger use-after-free conditions in kernel memory, leading to potential privilege escalation or denial of service.
Affected Products
- Linux Kernel (multiple stable branches, including 6.17-rc1 and 6.17-rc2)
- Debian Linux 11.0
- Siemens industrial products referencing Linux kernel components (per Siemens Security Advisory SSA-032379 and Siemens Security Advisory SSA-082556)
Discovery Timeline
- 2025-09-05 - CVE-2025-39689 published to NVD
- 2026-07-30 - Last updated in NVD database
Technical Details for CVE-2025-39689
Vulnerability Analysis
The vulnerability resides in the ftrace subsystem, specifically in the seq_file reader logic backing set_ftrace_filter and set_ftrace_notrace. The writer path allocates and copies the filter hash into the iterator, isolating it from concurrent modifications. The reader path takes a different approach and simply stores the pointer to the global tracer hash inside the iterator.
The iterator's pointer persists across syscalls that release the tracing locks. During that window, another thread can free or replace the underlying hash. When the reader resumes iteration, it dereferences a stale pointer. This creates a classic use-after-free condition inside kernel address space.
The upstream fix aligns reader semantics with the writer path. It allocates a copy of the hash for the reader and frees it uniformly on iterator release. This eliminates the divergent lifetime handling between readers and writers.
Root Cause
The root cause is inconsistent memory ownership between reader and writer paths in ftrace filter handling. The reader retained a non-owning pointer to a globally mutable hash structure while dropping the locks that would have prevented concurrent modification. This violated the object lifetime assumptions required for safe iteration.
Attack Vector
Exploitation requires local access with low privileges. An attacker with the ability to open set_ftrace_filter or set_ftrace_notrace under /sys/kernel/tracing/ or /sys/kernel/debug/tracing/ can race a reading process against operations that modify the tracer hash. Successful exploitation can yield arbitrary kernel memory corruption. The technical patch details are available in the kernel commit references.
// No verified proof-of-concept code is publicly available.
// The vulnerability is remediated by allocating a private hash copy
// for the reader iterator instead of referencing the global hash.
Detection Methods for CVE-2025-39689
Indicators of Compromise
- Kernel oops or panic messages referencing ftrace_regex_open, t_start, or filter hash iteration functions
- KASAN reports indicating use-after-free within the ftrace subsystem
- Unexpected processes accessing /sys/kernel/tracing/set_ftrace_filter or /sys/kernel/tracing/set_ftrace_notrace
Detection Strategies
- Monitor open() and read() syscalls targeting ftrace filter files by non-root or unexpected UIDs
- Correlate concurrent writes to tracing filter files with reader activity from the same or different processes
- Enable KASAN and lockdep on test kernels to surface use-after-free and locking violations during pre-production validation
Monitoring Recommendations
- Audit tracefs and debugfs mount permissions to restrict access to privileged users only
- Log processes invoking perf_event_open or manipulating ftrace under user namespaces that grant CAP_SYS_ADMIN
- Track kernel version inventory to identify hosts running unpatched stable branches
How to Mitigate CVE-2025-39689
Immediate Actions Required
- Apply the stable kernel updates that include the ftrace reader hash allocation fix
- Restrict access to /sys/kernel/tracing/ and /sys/kernel/debug/tracing/ so only trusted administrators can read filter files
- Review Debian LTS advisories DLA #00007 and DLA #00008 and deploy the corresponding kernel packages
Patch Information
The fix is committed across multiple stable branches. See the upstream commits including c591ba1acd08, 64db338140d2, a40c69f4f1ed, and e0b6b223167e. Debian users should install the updated kernel packages referenced in the LTS announcements. Siemens customers should follow SSA-032379 and SSA-082556.
Workarounds
- Unmount or restrict tracefs and debugfs where kernel tracing is not required in production
- Remove read permissions on set_ftrace_filter and set_ftrace_notrace for non-administrative users via mount options such as gid= and mode=
- Disable CONFIG_FTRACE in custom kernel builds where tracing is not needed
# Restrict tracefs access to root only
mount -o remount,mode=0700 /sys/kernel/tracing
# Verify installed kernel version includes the fix
uname -r
apt list --installed | grep linux-image
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

