7.8
CWE
416
Advisory Published
Updated

CVE-2025-22035: tracing: Fix use-after-free in print_graph_function_flags during tracer switching

First published: Wed Apr 16 2025(Updated: )

In the Linux kernel, the following vulnerability has been resolved: tracing: Fix use-after-free in print_graph_function_flags during tracer switching Kairui reported a UAF issue in print_graph_function_flags() during ftrace stress testing [1]. This issue can be reproduced if puting a 'mdelay(10)' after 'mutex_unlock(&trace_types_lock)' in s_start(), and executing the following script: $ echo function_graph > current_tracer $ cat trace > /dev/null & $ sleep 5 # Ensure the 'cat' reaches the 'mdelay(10)' point $ echo timerlat > current_tracer The root cause lies in the two calls to print_graph_function_flags within print_trace_line during each s_show(): * One through 'iter->trace->print_line()'; * Another through 'event->funcs->trace()', which is hidden in print_trace_fmt() before print_trace_line returns. Tracer switching only updates the former, while the latter continues to use the print_line function of the old tracer, which in the script above is print_graph_function_flags. Moreover, when switching from the 'function_graph' tracer to the 'timerlat' tracer, s_start only calls graph_trace_close of the 'function_graph' tracer to free 'iter->private', but does not set it to NULL. This provides an opportunity for 'event->funcs->trace()' to use an invalid 'iter->private'. To fix this issue, set 'iter->private' to NULL immediately after freeing it in graph_trace_close(), ensuring that an invalid pointer is not passed to other tracers. Additionally, clean up the unnecessary 'iter->private = NULL' during each 'cat trace' when using wakeup and irqsoff tracers. [1] https://lore.kernel.org/all/20231112150030.84609-1-ryncsn@gmail.com/

Credit: 416baaa9-dc9f-4396-8d5f-8c081fb06d67

Affected SoftwareAffected VersionHow to fix
Linux Kernel
Linux Kernel>=4.14.324<4.15
Linux Kernel>=4.19.293<4.20
Linux Kernel>=5.4.255<5.4.292
Linux Kernel>=5.10.193<5.10.236
Linux Kernel>=5.15.129<5.15.180
Linux Kernel>=6.1.50<6.1.134
Linux Kernel>=6.4.13<6.6.87
Linux Kernel>=6.7<6.12.23
Linux Kernel>=6.13<6.13.11
Linux Kernel>=6.14<6.14.2

Never miss a vulnerability like this again

Sign up to SecAlerts for real-time vulnerability data matched to your software, aggregated from hundreds of sources.

Frequently Asked Questions

  • What is the severity of CVE-2025-22035?

    CVE-2025-22035 has a medium severity rating, indicating potential risk but not immediate critical exposure.

  • How do I fix CVE-2025-22035?

    To fix CVE-2025-22035, you should update your Linux kernel to the latest version where this vulnerability has been addressed.

  • What systems are affected by CVE-2025-22035?

    CVE-2025-22035 affects the Linux kernel, particularly those versions that utilize the ftrace functionality for tracing.

  • What kind of attack does CVE-2025-22035 enable?

    CVE-2025-22035 can potentially allow an attacker to exploit a use-after-free condition, leading to system instability or possible arbitrary code execution.

  • Is there a workaround for CVE-2025-22035?

    There is no known workaround for CVE-2025-22035, so updating the kernel is the recommended action.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2025 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203