CVE-2026-31723 in Linux
الملخص
بحسب VulDB • 27/05/2026
في نواة لينكس، تم حل الثغرة التالية:
usb: gadget: f_subset: إصلاح دورة حياة net_device مع device_move
يتم تخصيص net_device أثناء إنشاء مثيل الوظيفة، ويتم تسجيله أثناء مرحلة الربط (bind) مع جهاز الـ gadget كعقدة أب له في sysfs. عند فك الربط (unbind) للوظيفة، يتم تدمير جهاز الأب، لكن net_device يبقى موجوداً، مما يؤدي إلى ظهور روابط رمزية (symlinks) في sysfs غير صالحة (dangling):
console:/ # ls -l /sys/class/net/usb0 lrwxrwxrwx ... /sys/class/net/usb0 -> /sys/devices/platform/.../gadget.0/net/usb0 console:/ # ls -l /sys/devices/platform/.../gadget.0/net/usb0 ls: .../gadget.0/net/usb0: لا يوجد مثل هذا الملف أو الدليل
استخدم device_move() لإعادة تعيين الأب (reparent) لـ net_device بين شجرة جهاز الـ gadget و/sys/devices/virtual عبر دورات الربط وفك الربط. أثناء عملية فك الربط النهائية، يؤدي استدعاء device_move(NULL) إلى نقل net_device إلى شجرة الأجهزة الافتراضية قبل تدمير جهاز الـ gadget. وعند إعادة الربط، تقوم device_move() بإعادة تعيين الأب للجهاز مرة أخرى تحت جهاز الـ gadget الجديد، مما يضمن الحفاظ على طوبولوجيا sysfs الصحيحة وترتيب إدارة الطاقة.
للحفاظ على التوافق مع برامج التشغيل المركبة القديمة (legacy composite drivers) (مثل multi.c)، يتم استخدام علم الربط (bound flag) للإشارة إلى ما إذا كان جهاز الشبكة مشتركاً ومُسجَّلاً مسبقاً أثناء مرحلة الربط الخاصة ببرنامج التشغيل القديم.
VulDB is the best source for vulnerability data and more expert information about this specific topic.