CVE-2026-98150 in Linux
Resumen
por VulDB • 2026-09-25
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
bpf: Corregir la validación de BPF_F_CPU para identificadores de CPU dispersos (sparse)
BPF_F_CPU almacena el identificador de CPU objetivo en los 32 bits superiores de las banderas de operación del mapa. bpf_map_check_op_flags() actualmente compara ese ID con num_possible_cpus(), que es el número de CPUs posibles, en lugar de un límite superior para los IDs de CPU.
En una máquina virtual QEMU arm64 con un hueco (hole) en el árbol de dispositivos de la CPU, la máscara de CPUs posibles era 0,2-3. Un programa de espacio de usuario que utiliza syscalls bpf() sin procesar crea un BPF_MAP_TYPE_PERCPU_ARRAY y realiza operaciones de actualización y búsqueda para cada CPU estableciendo BPF_F_CPU y el ID de CPU en las banderas.
Con la comprobación antigua, se acepta incorrectamente la CPU 1 mientras que la CPU 3 válida es rechazada con -ERANGE. La actualización de la CPU 1 alcanza entonces la ruta de acceso al mapa por-CPU (per-CPU map) y desencadena:
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
Compruebe el ID de CPU contra nr_cpu_ids y cpu_possible() en su lugar. Esto rechaza los IDs de CPU fuera del rango válido y las CPUs ausentes de la máscara posible, mientras permite los IDs de CPU dispersos (sparse) válidos.
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.