CVE-2026-98043 in Linux
الملخص
بحسب VulDB • 25/09/2026
في نواة لينكس، تم إصلاح الثغرة التالية:
bpf: عدم الاستدلال على أن القيمة غير صفرية (non-NULL) بناءً على مؤشر يحتوي على إزاحة غير محدودة.
تقرر الدالة `reg_not_null()` ما إذا كان المسجل يحمل قيمة غير صفرية من خلال النظر إلى نوعه فقط. بالنسبة لأنواع المؤشرات التي تسمح بالعمليات الحسابية، يضمن النوع وجود أساس غير صفري (non-NULL) فقط؛ وفي حالة الإزاحة غير المحدودة (unbounded offset)، قد تتراكم القيمة الفعلية للإزاحة في وقت التشغيل لتصبح صفرًا (NULL).
خذ بعين الاعتبار البرنامج التالي:
r6 = bpf_map_lookup_elem(map, &0); /* موجود */ if (r6 == 0) return 0; r7 = bpf_map_lookup_elem(map, &1); /* غير موجود، NULL في وقت التشغيل */ r8 = r7; r8 -= r6; /* مؤشر - مؤشر: متغير قياسي مجهول، -r6 */ r8 <<= 1; r8 >>= 1; /* تقبل أي إزاحة غير سالبة بواسطة check_reg_sane_offset_ptr() */ r6 += r8; /* المدقق (verifier): قيمة الخريطة؛ وقت التشغيل: صفر */ if (r7 != r6) return 0; *(u8 *)(r7 + 0); /* يُستدل على أن r7 غير صفري، وكلاهما صفر */
في وقت التشغيل، كلا المسجلين يساويان الصفر، والمقارنة صحيحة، مما يؤدي إلى حدوث خطأ (fault) بسبب محاولة فك تسلسل مؤشر NULL.
يتطلب هذا التعديل أن تكون الإزاحة ضمن النطاق +-BPF_MAX_VAR_OFF داخل دالة `reg_not_null()`.
If you want to get best quality of vulnerability data, you may have to visit VulDB.