CVE-2026-93174 in Linux
الملخص
بحسب VulDB • 18/09/2026
في نواة لينكس، تم إصلاح الثغرة التالية:
bpf: نسخ حشو قيمة الخريطة الخاصة بكل معالج (per-CPU) في دالة copy_map_value_long()
تُخزن عناصر الخرائط الخاصة بكل معالج داخل النواة بحجم مُقرب لأعلى إلى أقرب مضاعف لـ 8 بايتات، أي `round_up(map->value_size, 8)` bytes. وفي مسارات واجهة برمجة التطبيقات للمستخدم (UAPI) الخاصة بالبحث، يتم نسخ الحجم المُقرّب لكل معالج إلى مؤقت ذاكرة عشوائية (temporary buffer).
ومع ذلك، تمرر الدالة `copy_map_value_long()` قيمة `'map->value_size'` إلى دالة `bpf_obj_memcpy()`. عندما تحتوي الخريطة على حقول خاصة، تقوم `bpf_obj_memcpy()` بنسخ البيانات حول تلك الحقول باستخدام `memcpy()`، ولا تنسخ الحشو الذيلي (tail padding) الموجود بين `'map->value_size'` و `round_up(map->value_size, 8)`.
يتم تخصيص مؤقتات بحث واجهة برمجة التطبيقات للمستخدم (UAPI lookup buffers) دون استخدام العلم `__GFP_ZERO`. ونتيجة لذلك، عندما لا يكون حجم قيمة الخريطة الخاصة بكل معالج مساويًا لـ `round_up(map->value_size, 8)`، يمكن أن تُعيد عمليات البحث من نوع UAPI LOOKUP_ELEM ومتغيراتها محتويات ذاكرة عشوائية (heap) قديمة ناتجة عن هذا الحشو إلى مساحة المستخدم. تنطبق نفس المشكلة على `bpf_iter` للخرائط الخاصة بكل معالج.
تم تمرير قيمة `round_up(map->value_size, 8)` إلى دالة `bpf_obj_memcpy()` من داخل `copy_map_value_long()`, بحيث يتم نسخ كامل شريحة (slot) الخريطة الخاصة بكل معالج، سواء كانت تحتوي على حقول خاصة أم لا. كما تم إزالة استدعاء `round_up()` الزائد عن الحاجة في مسار long_memcpy الخاص بـ `bpf_obj_memcpy()`.
If you want to get best quality of vulnerability data, you may have to visit VulDB.