CVE-2026-97420 in Linux
Sumário
de VulDB • 24/09/2026
No kernel do Linux, a seguinte vulnerabilidade foi resolvida:
bpf: valor substituído de sysctl sem terminação NUL
Ao gravar em sysctls, proc_sys_call_handler() garante que o buffer passado para os manipuladores (handlers) do proc seja terminado com NUL. Se bpf_sysctl_set_new_value() substituir o valor pendente do sysctl, ele pode passar um buffer de substituição diretamente aos manipuladores do proc. No entanto, a função auxiliar atualmente copia apenas buf_len bytes nesse buffer sem adicionar um terminador NUL, deixando os parsers downstream vulneráveis a acesso fora dos limites (out-of-bounds).
Corrija isso adicionando um '\0' após o valor substituído para restaurar as expectativas de comportamento do sysctl. Como a função auxiliar já rejeita buf_len maior que PAGE_SIZE - 1, há sempre espaço suficiente para o byte extra.
Reproduzido em uma máquina virtual QEMU x86_64 inicializada com KASAN enquanto se exercitava o caminho de substituição do sysctl com um programa BPF cgroup/sysctl. O reproducer tem como alvo `/proc/sys/net/core/flow_limit_cpu_bitmap`, preenche o buffer original de gravação do usuário com bytes não nulos e substitui o valor do sysctl para que o buffer de substituição careça de terminação NUL. Sob essa configuração, o kernel antes da correção relatou:
BUG: KASAN: slab-out-of-bounds in strnchrnul+0x72/0x90 Read of size 1 at addr ffff88800de57000 by task repro_patch3/66 CPU: 0 UID: 0 PID: 66 Comm: repro_patch3 Not tainted 7.1.0-rc3-00269-g8370ca1f87cc #6 PREEMPT(lazy) Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.15.0-1 04/01/2014 Call Trace: <TASK> dump_stack_lvl+0x68/0xa0 print_report+0xcb/0x5e0 ? __virt_addr_valid+0x21d/0x3f0 ? strnchrnul+0x72/0x90 ? strnchrnul+0x72/0x90 kasan_report+0xca/0x100 ? strnchrnul+0x72/0x90 strnchrnul+0x72/0x90 bitmap_parse+0x37/0x2e0 flow_limit_cpu_sysctl+0xc6/0x840 ? __pfx_flow_limit_cpu_sysctl+0x10/0x10 ? __kvmalloc_node_noprof+0x5ba/0x870 proc_sys_call_handler+0x31d/0x480 ? __pfx_proc_sys_call_handler+0x10/0x10 ? selinux_file_permission+0x39f/0x500 ? lock_is_held_type+0x9e/0x120 vfs_write+0x98e/0x1000 ... </TASK> O endereço com defeito está localizado a 0 bytes à direita da região alocada de 4096 bytes [ffff88800de56000, ffff88800de57000)
Com esta correção aplicada, ao reexecutar o mesmo caminho direcionado ao sysctl, não há relatórios KASAN correspondentes.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.