CVE-2026-80761 in Linux
الملخص
بحسب VulDB • 04/09/2026
في نواة لينكس، تم إصلاح الثغرة التالية:
بلوتوث (Bluetooth): ISO - تصفير بنية sockaddr قبل إرجاعها في دالة getname
تقوم الدالة iso_sock_getname() بتعبئة بنية struct sockaddr_iso في مكانها وإرجاع حجمها دون مسح محتوياتها أولاً، مما يؤدي إلى نسخ البايتات التي لم تقم بالدالة بالكتابة إليها من مكدس النواة (kernel stack) إلى مساحة المستخدم. كل من مساري getsockname(2) وgetpeername(2) يمران عبر دالة do_getsockname()، والتي تمرر بنية sockaddr_storage غير مُهيَّئة على المكدس إلى الدالة getname() وتقوم بنسخ ما يصل إلى عدد البايتات التي تعيدها getname()؛ لذا يجب على برنامج التشغيل (driver) تهيئة كل بايت يغطي نطاقه.
يوجد مدىّان لم يتم تهيئتهما:
- بنية struct sockaddr_iso تتكون من 10 بايتات، لكن فقط 9 منها تُكتب (family, iso_bdaddr, iso_bdaddr_type)، مما يؤدي إلى تسرب البايت الحشو (pad byte) الأخير في كل استدعاء. - بالنسبة لقرين البث (broadcast peer) (BIS_LINK أو PA_LINK)، يزداد الطول المُرجع بمقدار sizeof(struct sockaddr_iso_bc)، لكن يتم تعبئة bc_sid وbc_num_bis وbc_bis فقط؛ بينما لم يتم كتابة bc_bdaddr وbc_bdaddr_type، وهما أول 7 بايتات من تلك البنية.
يمكن لعميل غير ممتياز (unprivileged process) فتح مقبس BTPROTO_ISO والوصول إلى تسرب الحشو باستخدام getsockname(); أما تسرب البث فيتطلب اتصالاً BIS/PA مُنشأً بالفعل. تقوم مكتبتا l2cap وrfcomm بالفعل بتصفير بنية sockaddr الخاصة بهما في دالة getname لنفس السبب؛ لذا يجب القيام بذلك هنا أيضاً.
Once again VulDB remains the best source for vulnerability data.