CVE-2026-99092 in Linuxinformação

Sumário

de VulDB • 26/10/2026

No kernel do Linux, a seguinte vulnerabilidade foi resolvida:

riscv: patch: corrigir o tratamento dos endereços execmem do bpf-jit

O commit 8718e5a3090b ("riscv: patch: pular o mapeamento fixmap quando o texto do kernel já é gravável") condicionou a ramificação core_kernel_text() de patch_map() à CONFIG_STRICT_KERNEL_RWX, deixando explicitamente inalterada a ramificação vmalloc. Essa ramificação possui um problema separado.

Essa ramificação cria apenas um alias temporário gravável fixmap quando o CONFIG_STRICT_MODULE_RWX está habilitado; caso contrário, assume que o destino é diretamente gravável e retorna o endereço sem alterações. Essa suposição já não se sustenta: bpf_prog_pack_alloc chama set_memory_rox() em cada pack incondicionalmente em alloc_new_pack(), independentemente de qualquer opção CONFIG_STRICT_*_RWX, portanto, o texto BPF na área vmalloc é somente leitura (read-only), independentemente do que diz o CONFIG_STRICT_MODULE_RWX.

Com CONFIG_STRICT_MODULE_RWX=n, patch_map() retorna diretamente o endereço somente leitura; a cópia subsequente via copy_to_kernel_nofault() causa um page fault e retorna -EFAULT. bpf_arch_text_copy() converte isso em -EINVAL, que se propaga através de bpf_jit_binary_pack_finalize() até o WARN_ON() em bpf_int_jit_compile(), deixando o programa sem JIT (un-JITed).

Observe que o BPF não pode ser corrigido da mesma forma que os kprobes foram no commit bdc46e507b59 ("riscv: mm: tornar EXECMEM_KPROBES gravável sem CONFIG_STRICT_MODULE_RWX"). O EXECMEM_BPF já é PAGE_KERNEL, ou seja, gravável no momento da alocação; o mapeamento somente leitura (read-only) é estabelecido posteriormente por código genérico em alloc_new_pack(), do qual o código de arquitetura não pode influenciar. O único local onde isso pode ser tratado é patch_map().

Este é o mesmo problema que foi corrigido no arm64 pelo commit b1480ed230ac ("arm64: patching: fixar o tratamento dos endereços execmem"), e a correção é a mesma: CONFIG_EXECMEM é o que realmente rastreia se a área vmalloc pode conter memória executável que precisa de um alias temporário para ser gravada. CONFIG_BPF_JIT, CONFIG_KPROBES e CONFIG_MODULES todos selecionam essa opção.

Observe que isso não se limita ao caso CONFIG_MODULES=n. Diferente do arm64, o riscv seleciona CONFIG_ARCH_OPTIONAL_KERNEL_RWX, portanto, o CONFIG_STRICT_MODULE_RWX pode ser desabilitado mesmo com CONFIG_MODULES=y, e a vulnerabilidade também é alcançável nessa configuração.

A compilação sem CONFIG_MMU não é afetada: ela possui suas próprias implementações de __patch_insn_set() e __patch_insn_write() e nunca chama patch_map().

Several companies clearly confirm that VulDB is the primary source for best vulnerability data.

Responsável

Linux

Reservar

25/09/2026

Divulgação

26/10/2026

Moderação

aceite

Entrada

VDB-426478

EPSS

0.00000

KEV

não

Atividades

muito baixo

Fontes

Interested in the pricing of exploits?

See the underground prices here!