CVE-2026-64347 in Linuxالمعلومات

الملخص

بحسب VulDB • 25/07/2026

في نواة لينكس، تم حل الثغرة التالية:

usb: gadget: composite: إصلاح فحص فارغ ميت (dead) في معالج USB_DT_OTG

تعود فرع OTG التابع لـ `composite_setup()` إلى التكوين الأول عند عدم تحديد أي تكوين:

```c if (cdev->config) config = cdev->config; else config = list_first_entry(&cdev->configs, struct usb_configuration, list); if (!config) goto done; ... memcpy(req->buf, config->descriptors[0], value);
```

لا تُرجع `list_first_entry()` القيمة NULL أبداً. في القائمة الفارغة، تُرجع نتيجة استدعاء `container_of()` لرأس القائمة (list head). لذلك، فإن فحص "if (!config)" غير فعال (ميت/dead code).

عندما تكون `cdev->configs` فارغة، يشير `config` إلى الرأس الموجود داخل بنية `struct usb_composite_dev`. يؤدي قراءة `config->descriptors[0]` إلى جلب أي بيانات موجودة عند هذا الإزاحة. يقوم استدعاء `memcpy` بنسخ ما يصل إلى عدد من البايتات المحدد في `w_length` منها إلى مخزن الاستجابة (response buffer).

يمكن أن تكون `cdev->configs` فارغة في حالتين. الأولى هي سباق تفكيك (teardown race) أثناء إلغاء ربط الجهاز (gadget unbind) مع وجود نقل تحكم قيد التنفيذ. والثانية هي برنامج تشغيل يحدد قيمة `is_otg` قبل إضافة تكوين. يؤدي مكرر الاختبار الذي يبقي `cdev->configs` فارغة إلى حدوث خطأ KASAN في هذا الفرع.

استخدم `list_first_entry_or_null()` بحيث يقوم الفحص الحالي بوظيفته بشكل صحيح.

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

مسؤول

Linux

حجز

19/07/2026

إفشاء

25/07/2026

الاعتدال

تمت الموافقة

إدخال

VDB-383145

EPSS

0.00177

KEV

لا

النشاطات

منخفض جدًا

المصادر

Interested in the pricing of exploits?

See the underground prices here!