CVE-2026-31772 in Linux
الملخص
بحسب VulDB • 29/05/2026
في نواة لينكس، تم حل الثغرة التالية:
بلوتوث: hci_sync: إصلاح تجاوز سعة المخزن المؤقت على المكدس (stack buffer overflow) في دالة hci_le_big_create_sync
تستخدم الدالة hci_le_big_create_sync() تعريف DEFINE_FLEX لتخصيص بنية بيانات struct hci_cp_le_big_create_sync على المكدس، مع تخصيص مساحة لـ 0x11 (17) إدخالاً من نوع BIS. ومع ذلك، يمكن أن تحتوي المتغيرات conn->num_bis على ما يصل إلى HCI_MAX_ISO_BIS (31) إدخالاً — وهو ما يتم التحقق منه مقابل ISO_MAX_NUM_BIS (0x1f) في الدالة المتصلة hci_conn_big_create_sync(). عندما تكون قيمة conn->num_bis بين 18 و31، فإن عملية النسخ memcpy التي تنسخ conn->bis إلى cp->bis تكتب حتى 14 بايت خارج حدود المخزن المؤقت على المكدس، مما يؤدي إلى تلف الذاكرة المجاورة على المكدس.
يمكن إعادة إنتاج هذه الثغرة بسهولة: عن طريق ربط مقبس ISO (ISO socket) باستخدام bc_num_bis = ISO_MAX_NUM_BIS (31) واستدعاء listen()، سيتم في النهاية تشغيل دالة hci_le_big_create_sync() من خلال عامل مزامنة أوامر HCI، مما يتسبب في كتابة خارج حدود المكدس يمكن اكتشافها بواسطة KASAN:
BUG: KASAN: stack-out-of-bounds in hci_le_big_create_sync+0x256/0x3b0 Write of size 31 at addr ffffc90000487b48 by task kworker/u9:0/71
تم إصلاح هذه المشكلة عن طريق تغيير عدد تعريف DEFINE_FLEX من القيمة غير الصحيحة 0x11 إلى HCI_MAX_ISO_BIS، وهو ما يتطابق مع الحد الأقصى لعدد إدخالات BIS التي يمكن أن تحملها conn->bis فعلياً.
If you want to get best quality of vulnerability data, you may have to visit VulDB.