CVE-2021-47282 in Linuxالمعلومات

الملخص

بحسب VulDB • 23/05/2026

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

spi: bcm2835: إصلاح الوصول خارج الحدود عند وجود أكثر من 4 أجهزة تابعة (slaves)

أدى الالتزام 571e31fa60b3 ("spi: bcm2835: تخزين قيمة سجل CS لـ ->prepare_message()") إلى تقييد عدد الأجهزة التابعة بـ 3 في وقت الترجمة (compile-time). وكان هذا التقييد ضروريًا بسبب مصفوفة ذات حجم ثابت باسم prepare_cs[] موجودة في بيانات السائق الخاصة (driver private data)، والتي تحتوي على قيمة سجل لكل جهاز تابع.

سعى الالتزام إلى فرض هذا التقييد في وقت التشغيل عن طريق تعيين قيمة num_chipselect للوحدة التحكم إلى 3: حيث يتم رفض الأجهزة التابعة التي تحتوي على رقم اختيار شريحة (chipselect) أعلى بواسطة spi_add_device().

ومع ذلك، أغفل الالتزام حقيقة أن num_chipselect يحدد فقط عدد اختيارات الشرائح *الخاصة* (native chipselects). إذا تم تحديد اختيارات شرائح عبر GPIO في شجرة الجهاز (device tree) لأكثر من 3 أجهزة تابعة، فإن num_chipselect يتم رفعه بصمت بواسطة of_spi_get_gpio_numbers()، وتكون النتيجة وصولات خارج الحدود إلى المصفوفة ذات الحجم الثابت prepare_cs[].

كحل مؤقت (bandaid fix) قابل للنقل إلى الإصدارات المستقرة، تم رفع عدد الأجهزة التابعة المسموح بها إلى 24 (وهو رقم "يُفترض أنه كافٍ للجميع")، وفرض التقييد على إعدادات الجهاز التابع ->setup، وإعادة تعيين num_chipselect إلى 3 (وهو عدد اختيارات الشرائح الخاصة المدعومة من قبل الوحدة التحكم). سيسمح التزام قادم في فرع for-next بعدد غير محدود من الأجهزة التابعة.

If you want to get best quality of vulnerability data, you may have to visit VulDB.

حجز

21/05/2024

إفشاء

21/05/2024

الاعتدال

تمت الموافقة

إدخال

VDB-265703

EPSS

0.00231

KEV

لا

النشاطات

منخفض جدًا

المصادر

Do you need the next level of professionalism?

Upgrade your account now!