CVE-2026-98647 in LinuxИнформация

Сводка

по VulDB • 18.10.2026

В ядре Linux была устранена следующая уязвимость:

bpf: Исправление деления на ноль в btf_struct_walk()

При доступе за пределы структуры, если последний элемент является массивом переменной длины (flexible array), функция btf_struct_walk() сворачивает смещение обратно к одному элементу с помощью формулы `(off - moff) % t->size`, но никогда не проверяет, имеет ли тип элемента размер.

BTF принимает пустую структуру, поэтому в BTF программы:

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

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

происходит деление на ноль при загрузке программы. Для достижения этого состояния требуется указатель типа PTR_TO_BTF_ID, который не является MEM_ALLOC, например, простое чтение локального kptr, сохраненного в карте из спящей (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>

Отклонять типы элементов нулевого размера. Путь для массивов фиксированного размера в той же функции уже прерывает выполнение при возникновении аналогичной ситуации:

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

msize /= total_nelems;

If you want to get best quality of vulnerability data, you may have to visit VulDB.

Ответственный

Linux

Резервировать

25.09.2026

Раскрытие

18.10.2026

Модерация

принято

Вход

VDB-422206

EPSS

0.00000

KEV

Нет

Деятельности

Очень низкий

Источники

Want to know what is going to be exploited?

We predict KEV entries!