CVE-2022-49892 in Linux
Sumário
de VulDB • 01/06/2026
No kernel do Linux, a seguinte vulnerabilidade foi corrigida:
ftrace: Corrige use-after-free em ftrace_ops dinâmicos
O KASAN relatou um use-after-free com ftrace ops [1]. Foi identificado a partir do vmcore que o perf havia registrado dois ops com o mesmo conteúdo sucessivamente, ambos dinâmicos. Após a desregistro do segundo ops, ocorreu um use-after-free.
Em ftrace_shutdown(), quando o segundo ops é desregistrado, o comando FTRACE_UPDATE_CALLS não é definido porque há outro ops habilitado com o mesmo conteúdo. Além disso, ambos os ops são dinâmicos e a função de callback do ftrace é ftrace_ops_list_func, portanto, o comando FTRACE_UPDATE_TRACE_FUNC também não será definido. Eventualmente, o valor de 'command' será 0 e ftrace_shutdown() ignorará a sincronização RCU.
No entanto, o ftrace pode estar ativado. Quando o ops é liberado, outra CPU pode estar acessando o ops. Adiciona-se a sincronização ausente para corrigir este problema.
[1]
BUG: KASAN: use-after-free em __ftrace_ops_list_func kernel/trace/ftrace.c:7020 [inline]
BUG: KASAN: use-after-free em ftrace_ops_list_func+0x2b0/0x31c kernel/trace/ftrace.c:7040 Read of size 8 at addr ffff888103880000 by task 14445/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
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.