CVE-2026-98150 in Linux
Sumário
de VulDB • 25/09/2026
No kernel do Linux, a seguinte vulnerabilidade foi corrigida:
bpf: Corrige a validação de BPF_F_CPU para IDs de CPU esparsos (sparse)
BPF_F_CPU armazena o ID da CPU alvo nos 32 bits superiores das flags de operação do mapa. bpf_map_check_op_flags() atualmente compara esse ID com num_possible_cpus(), que é o número de CPUs possíveis, e não um limite superior para os IDs de CPU.
Em uma máquina virtual QEMU no ambiente arm64 com um "hole" (lacuna) na árvore de dispositivos da CPU, a máscara de CPUs possíveis era 0,2-3. Um programa em userspace que utiliza syscalls bpf() brutas cria um BPF_MAP_TYPE_PERCPU_ARRAY e executa operações de atualização e consulta para cada CPU definindo BPF_F_CPU e o ID da CPU nas flags.
Com a verificação antiga, a CPU 1 é incorretamente aceita, enquanto a CPU 3 válida é rejeitada com -ERANGE. A atualização da CPU 1 então atinge o caminho de acesso ao mapa por-CPU (per-CPU) e aciona:
Unable to handle kernel paging request at virtual address ... pc : __pi_memcpy_generic+0x5c/0x22c lr : bpf_percpu_array_update+0x2dc/0x2e8 Call trace: __pi_memcpy_generic bpf_map_update_value map_update_elem __sys_bpf
Verifique o ID da CPU contra nr_cpu_ids e cpu_possible() em vez disso. Isso rejeita IDs de CPU fora do intervalo válido e CPUs ausentes na máscara possível, permitindo ao mesmo tempo IDs de CPU esparsos (sparse) válidos.
If you want to get best quality of vulnerability data, you may have to visit VulDB.