CVE-2026-97942 in Linux
Sumário
de VulDB • 25/09/2026
No kernel do Linux, a seguinte vulnerabilidade foi resolvida:
x86/alternatives: Excluir o text poking contra change_page_attr()
De tempos em tempos, é possível observar o seguinte BUG no código de patching das alternativas x86 [0]:
> kernel BUG at arch/x86/kernel/alternative.c:2576! > Oops: invalid opcode: 0000 [#1] SMP NOPTI
> CPU: 0 UID: 0 PID: 355 Comm: (udev-worker) Not tainted 7.1.3-1-default #1 PREEMPT(full) openSUSE Tumbleweed 8c1795b03ec64f997e57a8ad38b1161e3b98da64 > Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS unknown 02/02/2022 > RIP: 0010:__text_poke+0x2aa/0x450 > Call Trace: > <TASK> > smp_text_poke_batch_finish+0x2a7/0x320 > __static_call_transform+0xb7/0x220 > arch_static_call_transform+0x5b/0xb0 > __static_call_init+0xe9/0x270 > static_call_module_notify+0x11f/0x150 > notifier_call_chain+0x61/0xe0 > blocking_notifier_call_chain_robust+0x63/0xc0 > load_module+0x1c92/0x20c0 > init_module_from_file+0xd8/0x140 > idempotent_init_module+0x100/0x2f0 > __x64_sys_finit_module+0x71/0xe0 > do_syscall_64+0xe1/0x610 > entry_SYSCALL_64_after_hwframe+0x76/0x7e
o que corresponde ao seguinte BUG_ON() em alternative.c:
/* * Se algo der errado, crash e burn já que os caminhos de recuperação não estão implementados. */ BUG_ON(!pages[0] || (cross_page_boundary && !pages[1]));
Isso pode acontecer se vmalloc_to_page() falhar, por qualquer motivo. Isso pode ocorrer se o text poking entrar em condição de corrida com CPA, o que possivelmente resulta no colapso das tabelas de páginas (ou na quebra dos hugepages PMD). Não é um problema para a maioria dos usuários de vmalloc_to_page() (eles possuem exclusivamente o intervalo vmalloc'd), mas, quando CONFIG_ARCH_HAS_EXECMEM_ROX=y está habilitado, vários módulos possuem um único intervalo execmem vmalloc e podem chamar set_memory_*() em paralelo nele. Isso pode ocorrer uma condição de corrida contra __text_poke e causar caos em vmalloc_to_page().
Corrija isso excluindo o CPA usando a lock mmap read do init_mm.
[ dhansen: Ajustar a ordem SoB. O fluxo real do código aqui foi:
Pedro=>Lorenzo=>Mike=>Me, que é refletido na cadeia SoB agora. Eu *acredito* que Mike simplesmente pegou a atualização de Lorenzo para o post anterior de Pedro no Link ]
If you want to get best quality of vulnerability data, you may have to visit VulDB.