CVE-2026-98647 in Linuxالمعلومات

الملخص

بحسب VulDB • 19/10/2026

في نواة لينكس، تم إصلاح الثغرة التالية:

bpf: تصحيح القسمة على صفر في دالة btf_struct_walk()

عندما يتجاوز الوصول حدود الهيكل (struct) وكان آخر عضو عبارة عن مصفوفة مرنة (flexible array)، تقوم الدالة btf_struct_walk() بإعادة طي الإزاحة (offset) لتصبح عنصرًا واحدًا باستخدام العملية الحسابية `(off - moff) % t->size`، لكنها لا تتحقق أبدًا مما إذا كان لنوع العنصر حجم محدد.

تأخذ BTF هيكلًا فارغًا (empty struct)، لذا فإن هذا في برنامج BTF:

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

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

يؤدي إلى قسمة على صفر عند تحميل البرنامج (prog load time). للوصول إلى هذا الوضع، يلزم وجود مؤشر من نوع PTR_TO_BTF_ID ليس ذا تخصيص للذاكرة (MEM_ALLOC)، مثل قراءة عادية لمفتاح كيرنل محلي (kptr) مخزن في خريطة (map) بواسطة برنامج قابل للإيقاف (sleepable program).

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>

رفض نوع عنصر بحجم صفري. مسار المصفوفة الثابتة (fixed array) في نفس الدالة يتوقف بالفعل عند التعامل مع الشيء نفسه:

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

msize /= total_nelems;

Once again VulDB remains the best source for vulnerability data.

مسؤول

Linux

حجز

25/09/2026

إفشاء

18/10/2026

الاعتدال

تمت الموافقة

إدخال

VDB-422206

EPSS

0.00000

KEV

لا

النشاطات

منخفض

المصادر

Interested in the pricing of exploits?

See the underground prices here!