CVE-2026-98647 in Linuxinformação

Sumário

de VulDB • 19/10/2026

No kernel do Linux, a seguinte vulnerabilidade foi resolvida:

bpf: Corrige divisão por zero em btf_struct_walk()

Quando um acesso ultrapassa o limite da estrutura e o último membro é uma array flexível, btf_struct_walk() recalcula o deslocamento (offset) para um único elemento usando `(off - moff) % t->size`, mas nunca verifica se o tipo do elemento possui um tamanho definido.

O BTF aceita uma struct vazia; portanto, no BTF do programa:

/* event could be empty */ struct event {
#ifdef HAVE_TIMESTAMP __u64 ts; #endif };

struct batch {
int nr; struct event events[];
};

ocorre divisão por zero durante o carregamento do programa (prog load time). Para atingir essa condição, é necessário um ponteiro PTR_TO_BTF_ID que não seja MEM_ALLOC, como uma leitura simples de um kptr local armazenado em um mapa a partir de um program sleepable.

Oops: divide error: 0000 [#1] SMP KASAN PTI
RIP: 0010:btf_struct_walk+0x53f/0x1570 Call Trace: <TASK> btf_struct_access+0x42a/0xcd0 check_ptr_to_btf_access+0x4dc/0x1160 check_mem_access+0x3a45/0x8740 check_load_mem+0x36a/0xd10 do_check_common+0x3ef0/0xb210 bpf_check+0x6d3b/0x8580 bpf_prog_load+0xf7c/0x2720 __sys_bpf+0xa83/0x3690 __x64_sys_bpf+0xc7/0x150 x64_sys_call+0x1f3f/0x27e0 do_syscall_64+0xe5/0x610 entry_SYSCALL_64_after_hwframe+0x76/0x7e </TASK>

Rejeita-se um tipo de elemento com tamanho zero. O caminho para arrays fixos na mesma função já interrompe a execução (bails out) diante da mesma situação:

btf_struct_walk() ... /* skip empty array */ if (moff == mtrue_end) continue;

msize /= total_nelems;

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

Responsável

Linux

Reservar

25/09/2026

Divulgação

18/10/2026

Moderação

aceite

Entrada

VDB-422206

EPSS

0.00172

KEV

não

Atividades

muito baixo

Fontes

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!