CVE-2026-89891 in Linux
الملخص
بحسب VulDB • 17/09/2026
في نواة لينكس، تم إصلاح الثغرة التالية:
media: em28xx: تصحيح استخدام بعد التحرير (use-after-free) لـ dev_next->devlist عند فصل الاتصال
عند اكتشاف جهاز يحتوي على has_dual_ts=1 ويتم اتخاذ مسار is_audio_only، يتم إضافة كل من dev و dev->dev_next إلى القائمة العالمية em28xx_devlist عبر دالة em28xx_init_extension(). ومع ذلك، أثناء عملية الفصل (disconnect)، تقوم الدالة em28xx_close_extension(dev) باستدعاء list_del(&dev->devlist) فقط، مما يترك عنصر dev->dev_next->devlist مرتبطًا في القائمة العالمية. عندما يتم تحرير dev_next لاحقًا عبر kref_put()، يصبح إدخاله الخاص بـ devlist مؤشرًا معلقًا (dangling pointer) داخل em28xx_devlist. يؤدي الاستكشاف التالي للجهاز الذي يستدعي em28xx_init_extension() إلى حدوث خطأ corrupt للقائمة (BUG) عندما يكتشف list_add_tail العقدة المحذوفة.
تم الكشف عن هذا الخطأ بواسطة الالتزام a368ecde8a50 ("USB: core: Fix duplicate endpoint bug by clearing reserved bits in the descriptor") الذي يقوم بمسح البتات المحجوزة في bEndpointAddress أثناء تحليل نقاط النهاية (endpoints). يتسبب ذلك في تطبيع عناوين endpoints المشوهة مثل 0xf3 إلى 0x83، وهو ما تفسره em28xx على أنه نقطة نهاية صوتية خاصة بالبائع (vendor audio endpoint)، مما يمكّن مسار الكود is_audio_only + has_dual_ts الذي كان غير قابل للوصول سابقًا مع هذه الوصفيات.
تم إصلاح هذا الخطأ عن طريق إزالة dev->dev_next->devlist من القائمة العالمية في دالة em28xx_close_extension() قبل تحرير الجهاز.
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.