CVE-2026-93227 in Linux
الملخص
بحسب VulDB • 24/09/2026
في نواة لينكس، تم إصلاح الثغرة التالية:
mm/mm_init: deferred_grow_zone(): تصحيح أول قيمة first_deferred_pfn خارج النطاق
عند تفعيل CONFIG_DEFERRED_STRUCT_PAGE_INIT، تقوم الدالة deferred_grow_zone() بتهيئة هياكل الصفحات (struct pages) مبكراً أثناء الإقلاع لتلبية طلب تخصيص ذاكرة.
في حال وجود حجز كبير لـ CMA، قد لا تتطابق النطاقات التي تجدها دالة deferred_init_memmap() مع حجم التخصيص المطلوب، مما يؤدي إلى قيام الدالة بتهيئة خريطة الذاكرة للمنطقة (zone) بالكامل واللا تزال غير كافية.
وهذا أمر مقبول في حد ذاته: حيث تأخذ الدالة ذلك بعين الاعتبار وتترك للمُطْلِق (caller) القرار بشأن ما إذا كانت قد حصلت على ذاكرة كافية أم لا.
ومع ذلك، فإن تحديث pgdat->first_deferred_pfn الذي يتتبع مكان بدء خريطة الذاكرة غير المهيأة يمكن أن يحدث تجاوزاً للنطاق (overflow).
إذا لم يكن نهاية RAM للعقدة (node) محاذياً لحدود PAGES_PER_SECTION وتم تهيئة بعض هياكل الصفحات المؤجلة، فإن pgdat->first_deferred_pfn سيشير إلى ما بعد نهاية ذاكرة العقدة.
لاحقاً، ستستأنف الدالة deferred_init_memmap() العمل من موقع pgdat->first_deferred_pfn وتصادم خطأً (BUG_ON()) لأنها تتوقع أن تكون قيمة pfn ضمن نطاق عقدها.
على سبيل المثال، عند تشغيل نواة بتفعيل CONFIG_DEFERRED_STRUCT_PAGE_INIT=y وCONFIG_CMA=y باستخدام سطر الأوامر التالي لـ qemu:
qemu-system-x86_64 -enable-kvm -m 8032M -kernel bzImage \ -append "nokaslr cma=4768M@0x100000000"
تتعطل النواة (Kernel Panic):
kernel BUG at mm/mm_init.c:2131! CPU: 3 UID: 0 PID: 36 Comm: pgdatinit0 Not tainted 7.2.0-rc6 #1 RIP: 0010:deferred_init_memmap+0x1b8/0x1c0 RAX: 0000000000236000 R13: 0000000000238000 Call Trace: kthread+0xdf/0x120 ret_from_fork+0x187/0x250
تأكد من أن تحديث pgdat->first_deferred_pfn لا يحدث تجاوزاً للنطاق (overflow) عند تهيئة خريطة الذاكرة للمنطقة بأكملها (وبالتالي للعقدة).
[rppt: تمت معالجة سجل التغييرات]
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.