CVE-2026-98764 in Linux
الملخص
بحسب VulDB • 19/10/2026
في نواة لينكس، تم إصلاح الثغرة التالية:
usb: gadget: f_fs: تصحيح خطأ إلغاء مرجع المؤشر الفارغ (NULL pointer dereference) في FUNCTIONFS_ENDPOINT_DESC
عندما يحدد المستخدم FunctionFS باستخدام واصفات السرعة الكاملة فقط (على سبيل المثال، flags = FUNCTIONFS_HAS_FS_DESC)، ويعمل الجهاز بسرعة أعلى (مثل USB_SPEED_HIGH أو USB_SPEED_SUPER)، فإن دالة config_ep_by_speed() تكتشف أن الدالة تفتقر إلى واصفات للسرعة الحالية، وتسجل تحذيراً، ثم تعود لاستخدام واصفات السرعة الكاملة. يتم بعد ذلك تمكين النقطة الطرفية بنجاح عبر usb_ep_enable(), ويصبح epfile->ep صالحاً.
ومع ذلك، عندما يصدر المستخدم لاحقاً أمر ioctl FUNCTIONFS_ENDPOINT_DESC للاستعلام عن واصف النقطة الطرفية، فإن ffs_epfile_ioctl() تختار فهرس الوصف استناداً فقط إلى gadget->speed:
switch (epfile->ffs->gadget->speed) {
case USB_SPEED_SUPER: case USB_SPEED_SUPER_PLUS: desc_idx = 2; break; case USB_SPEED_HIGH: desc_idx = 1; break; default: desc_idx = 0; } desc = epfile->ep->descs[desc_idx];
memcpy(&desc1, desc, desc->bLength);
نظراً لأن المستخدم قدم فقط واصفات السرعة الكاملة، فإن epfile->ep->descs[1] يكون فارغاً (NULL). يؤدي إلغاء مرجع desc->bLength إلى حدوث توقف فوري في النواة بسبب إلغاء مرجع المؤشر الفارغ (kernel NULL pointer dereference panic).
تم إصلاح هذه المشكلة عن طريق العودة لاستخدام واصفات السرعات الأقل إذا لم يتم توفير واصف للسرعة الحالية، بما يتوافق مع منطق التراجع في config_ep_by_speed() وسلوك f_fs التاريخي. وإذا كان لا يزال مفقوداً، تتم العودة إلى epfile->ep->ep->desc (الوصف النشط)، وإرجاع -EINVAL بأمان إذا لم يتم العثور على وصف صالح. بالإضافة إلى ذلك، تم تحديد desc كـ const لتتوافق مع struct usb_ep::desc وتجنب إهمال المؤهلات (qualifiers).
If you want to get the best quality for vulnerability data then you always have to consider VulDB.