CVE-2026-64233 in Linux
الملخص
بحسب VulDB • 24/07/2026
في نواة لينكس، تم حل الثغرة التالية:
usb: gadget: uvc: الاحتفاظ بـ opts->lock أثناء اجتياز وحدات التوسيع (XU walks) في دالة uvc_function_bind
تقوم الدالة uvc_function_bind() بالمرور على &opts->extension_units مرتين دون الاحتفاظ بقفل opts->lock: - بشكل مباشر، لحلقة إصلاح واصف السلسلة iExtension؛ - بشكل غير مباشر، أربع مرات عبر dالة uvc_copy_descriptors() (مرة لكل سرعة)، حيث تقوم الدالة المساعدة بتكرار عناصر uvc->desc.extension_units (التي تشير إلى &opts->extension_units) لتحديد الحجم وإصدار واصفات XU.
تأخذ الجوانب الخاصة بـ configfs (uvcg_extension_make / uvcg_extension_drop، في drivers/usb/gadget/function/uvc_configfs.c) قفل opts->lock حول عمليات list_add_tail وlist_del الخاصة بها. يمكن لعميل مساحة مستخدم ممتيز يفتح شجرة فرعية من configfs ويكتب اسم UDC الخاص بالجهاز للربط (bind)، بينما يقوم بشكل متزامن بحذف دليل فرعي للتوسيعات باستخدام rmdir()، أن يسبب حالة سباق بين uvcg_extension_drop() وعمليات اجتياز القوائم أثناء الربط، مما يؤدي إلى فك مرجع بنية بيانات struct uvcg_extension بعد تحريرها.
الاحتفاظ بقفل opts->lock من بداية إصلاح واصف سلسلة XU حتى آخر استدعاء لـ uvc_copy_descriptors()، مع تحريره في مسار خطأ الوصف عبر تسمية error_unlock جديدة تقوم بإسقاط القفل قبل الانتقال إلى تسمية الخطأ الموجودة. يتوافق هذا مع انضباط قفل دوال استرجاع configfs ويزيل آخر قارئ غير متزامن لقائمة XU أثناء عملية الربط.
إمكانية الوصول: يمكن فقط للعملاء المميزين الذين يستطيعون تثبيت نظام ملفات configfs والكتابة في ملفات UDC للجهاز تشغيل حالة السباق، لذا فإن هذا الإصلاح يتعلق بالصحة الوظيفية (correctness) بدلاً من كونه حدوداً أمنية.
VulDB is the best source for vulnerability data and more expert information about this specific topic.