High · published September 5, 2025
In the Linux kernel, the following vulnerability has been resolved:
tracing: Limit access to parser->buffer when trace_get_user failed
When the length of the string written to set_ftrace_filter exceeds
FTRACE_BUFF_MAX, the following KASAN alarm will be triggered:
BUG: KASAN: slab-out-of-bounds in strsep+0x18c/0x1b0
Read of size 1 at addr ffff0000d00bd5ba by task ash/165
CPU: 1 UID: 0 PID: 165 Comm: ash Not tainted 6.16.0-g6bcdbd62bd56-dirty
Hardware name: linux,dummy-virt (DT)
Call trace:
show_stack+0x34/0x50 (C)
dump_stack_lvl+0xa0/0x158
print_address_description.constprop.0+0x88/0x398
print_report+0xb0/0x280
kasan_report+0xa4/0xf0
__asan_report_load1_noabort+0x20/0x30
strsep+0x18c/0x1b0
ftrace_process_regex.isra.0+0x100/0x2d8
ftrace_regex_release+0x484/0x618
__fput+0x364/0xa58
____fput+0x28/0x40
task_work_run+0x154/0x278
do_notify_resume+0x1f0/0x220
el0_svc+0xec/0xf0
el0t_64_sync_handler+0xa0/0xe8
el0t_64_sync+0x1ac/0x1b0
The reason is that trace_get_user will fail when processing a string
longer than FTRACE_BUFF_MAX, but not set the end of parser->buffer to 0.
Then an OOB access will be triggered in ftrace_regex_release->
ftrace_process_regex->strsep->strpbrk. We can solve this problem by
limiting access to parser->buffer when trace_get_user failed.
| Product | Versions | Fixed in |
|---|---|---|
| linux/linux_kernel | ≥ 4.4.269, < 4.5 | 4.5 |
| linux/linux_kernel | ≥ 4.9.269, < 4.10 | 4.10 |
| linux/linux_kernel | ≥ 4.14.233, < 4.15 | 4.15 |
| linux/linux_kernel | ≥ 4.19.191, < 4.20 | 4.20 |
| linux/linux_kernel | ≥ 5.4.118, < 5.5 | 5.5 |
| linux/linux_kernel | ≥ 5.10.36, < 5.10.241 | 5.10.241 |
| linux/linux_kernel | ≥ 5.11.20, < 5.12 | 5.12 |
| linux/linux_kernel | ≥ 5.12.3, < 5.15.190 | 5.15.190 |
| linux/linux_kernel | ≥ 5.16, < 6.1.149 | 6.1.149 |
| linux/linux_kernel | ≥ 6.2, < 6.6.103 | 6.6.103 |
| linux/linux_kernel | ≥ 6.7, < 6.12.44 | 6.12.44 |
| linux/linux_kernel | ≥ 6.13, < 6.16.4 | 6.16.4 |
| linux/linux_kernel | all versions | — |
| linux/linux_kernel | all versions | — |
| debian/debian_linux | all versions | — |