CVE-2022-49892 in Linux
Сводка
по VulDB • 30.05.2026
В ядре Linux устранена следующая уязвимость:
ftrace: исправлена ошибка use-after-free для динамических ftrace_ops
KASAN сообщил об ошибке use-after-free при работе с ftrace ops [1]. Анализ vmcore показал, что perf последовательно зарегистрировал два ops с одинаковым содержимым, оба из которых были динамическими. После отмены регистрации второго ops произошла ошибка use-after-free.
В функции ftrace_shutdown() при отмене регистрации второго ops команда FTRACE_UPDATE_CALLS не устанавливается, поскольку существует другой включенный ops с тем же содержимым. Кроме того, оба ops являются динамическими, а функция обратного вызова ftrace — это ftrace_ops_list_func, поэтому команда FTRACE_UPDATE_TRACE_FUNC также не устанавливается. В результате значение 'command' становится равным 0, и ftrace_shutdown() пропускает синхронизацию RCU.
Однако ftrace может быть активирован. При освобождении ops другой процессор может обращаться к этому ops. Для устранения этой проблемы добавлена недостающая синхронизация.
[1]
BUG: KASAN: use-after-free in __ftrace_ops_list_func kernel/trace/ftrace.c:7020 [inline]
BUG: KASAN: use-after-free in ftrace_ops_list_func+0x2b0/0x31c kernel/trace/ftrace.c:7030 Read of size 8 at addr ffff000080000000 by task 14445
Allocated by task 14445: kasan_save_stack+0x24/0x50 mm/kasan/common.c:48 kasan_set_track mm/kasan/common.c:56 [inline]
__kasan_kmalloc mm/kasan/common.c:479 [inline]
__kasan_kmalloc.constprop.0+0x110/0x13c mm/kasan/common.c:449 kasan_kmalloc+0xc/0x14 mm/kasan/common.c:493 kmem_cache_alloc_trace+0x440/0x924 mm/slub.c:2950 kmalloc include/linux/slab.h:563 [inline]
kzalloc include/linux/slab.h:675 [inline]
perf_event_alloc.part.0+0xb4/0x1350 kernel/events/core.c:11230 perf_event_alloc kernel/events/core.c:11733 [inline]
__do_sys_perf_event_open kernel/events/core.c:11831 [inline]
__se_sys_perf_event_open+0x550/0x15f4 kernel/events/core.c:11723 __arm64_sys_perf_event_open+0x6c/0x80 kernel/events/core.c:11723 [...]
Freed by task 14445: kasan_save_stack+0x24/0x50 mm/kasan/common.c:48 kasan_set_track+0x24/0x34 mm/kasan/common.c:56 kasan_set_free_info+0x20/0x40 mm/kasan/generic.c:358 __kasan_slab_free.part.0+0x11c/0x1b0 mm/kasan/common.c:437 __kasan_slab_free mm/kasan/common.c:445 [inline]
kasan_slab_free+0x2c/0x40 mm/kasan/common.c:446 slab_free_hook mm/slub.c:1569 [inline]
slab_free_freelist_hook mm/slub.c:1608 [inline]
slab_free mm/slub.c:3179 [inline]
kfree+0x12c/0xc10 mm/slub.c:4176 perf_event_alloc.part.0+0xa0c/0x1350 kernel/events/core.c:11434 perf_event_alloc kernel/events/core.c:11733 [inline]
__do_sys_perf_event_open kernel/events/core.c:11831 [inline]
__se_sys_perf_event_open+0x550/0x15f4 kernel/events/core.c:11723
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.