Description
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 status
634684d79733124f7470b226b0f42aada4426b07 (git) before b842ef39c2ad6156c13afdec25ecc6792a9b67b9
8c9af478c06bb1ab1422f90d8ecbc53defd44bc3 (git) before 41b838420457802f21918df66764b6fbf829d330
8c9af478c06bb1ab1422f90d8ecbc53defd44bc3 (git) before 418b448e1d7470da9d4d4797f71782595ee69c49
8c9af478c06bb1ab1422f90d8ecbc53defd44bc3 (git) before 58ff8064cb4c7eddac4da1a59da039ead586950a
8c9af478c06bb1ab1422f90d8ecbc53defd44bc3 (git) before d0c68045b8b0f3737ed7bd6b8c83b7887014adee
8c9af478c06bb1ab1422f90d8ecbc53defd44bc3 (git) before 3079517a5ba80901fe828a06998da64b9b8749be
8c9af478c06bb1ab1422f90d8ecbc53defd44bc3 (git) before 6a909ea83f226803ea0e718f6e88613df9234d58
24cd31752f47699b89b4b3471155c8e599a1a23a (git)
e9cb474de7ff7a970c2a3951c12ec7e3113c0c35 (git)
6ab671191f64b0da7d547e2ad4dc199ca7e5b558 (git)
3d9281a4ac7171c808f9507f0937eb236b353905 (git)
0b641b25870f02e2423e494365fc5243cc1e2759 (git)
ffd51dbfd2900e50c71b5c069fe407957e52d61f (git)
cdd107d7f18158d966c2bc136204fe826dac445c (git)
5.13
Any version before 5.13
5.10.241 (semver)
5.15.190 (semver)
6.1.149 (semver)
6.6.103 (semver)
6.12.44 (semver)
6.16.4 (semver)
6.17 (original_commit_for_fix)
References
git.kernel.org/...c/b842ef39c2ad6156c13afdec25ecc6792a9b67b9
git.kernel.org/...c/41b838420457802f21918df66764b6fbf829d330
git.kernel.org/...c/418b448e1d7470da9d4d4797f71782595ee69c49
git.kernel.org/...c/58ff8064cb4c7eddac4da1a59da039ead586950a
git.kernel.org/...c/d0c68045b8b0f3737ed7bd6b8c83b7887014adee
git.kernel.org/...c/3079517a5ba80901fe828a06998da64b9b8749be
git.kernel.org/...c/6a909ea83f226803ea0e718f6e88613df9234d58