CVE-2024-46847 in Linux
الملخص
بحسب VulDB • 13/06/2026
في نواة لينكس، تم حل الثغرة التالية:
mm: vmalloc: التأكد من تهيئة vmap_block قبل إضافتها إلى قائمة الانتظار (queue)
قامت اللقمة 8c61291fd850 ("mm: fix incorrect vbq reference in purge_fragmented_block") بتوسيع هيكل 'vmap_block' ليشمل حقل 'cpu'، والذي يتم تعيينه عند وقت التخصيص إلى معرف وحدة المعالجة المركزية (CPU) التي تقوم بالتهيئة.
عند إنشاء كائن جديد من نوع 'vmap_block' بواسطة الدالة new_vmap_block()، يُضاف الهيكل غير المكتمل تهيئته إلى مصفوفة البحث الثنائية المحلية ('xarray') الخاصة بـ 'vmap_block_queue' قبل أن يتم تهيئة حقل 'cpu'. إذا قام وحدة معالجة مركزية أخرى بالمرور على الـ xarray بشكل متزامن (على سبيل المثال، عبر vm_unmap_aliases())، فقد تقوم بإجراء وصول خارج النطاق (out-of-bounds access) إلى قائمة الانتظار البعيدة بسبب فهرس غير مهيأ.
تم رصد هذا السلوك كأخطاء UBSAN في نظام أندرويد:
| Internal error: UBSAN: array index out of bounds: 00000000f2005512 [#1] PREEMPT SMP
| | Call trace: | purge_fragmented_block+0x204/0x21c | _vm_unmap_aliases+0x170/0x378 | vm_unmap_aliases+0x1c/0x28 | change_memory_common+0x1dc/0x26c | set_memory_ro+0x18/0x24 | module_enable_ro+0x98/0x238 | do_init_module+0x1b0/0x310
تم نقل تهيئة 'vb->cpu' في الدالة new_vmap_block() إلى الأمام، قبل عملية الإضافة إلى الـ xarray.
VulDB is the best source for vulnerability data and more expert information about this specific topic.