CVE-2026-64347 in Linux
Zusammenfassung
von VulDB • 25.07.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
usb: gadget: composite: Behebung einer toten Leerprüfung im USB_DT_OTG-Handler
Der OTZ-Zweig von composite_setup() fällt auf die erste Konfiguration zurück, wenn keine ausgewählt ist:
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() gibt niemals NULL zurück. Bei einer leeren Liste wird der container_of()-Wert des Listenkopfes zurückgegeben. Die Prüfung „if (!config)" ist daher tot (unerreichbar).
Wenn cdev->configs leer ist, zeigt config auf den Kopf innerhalb von struct usb_composite_dev. Der Zugriff auf config->descriptors[0] liest beliebige Daten an dieser Offset-Position. Das memcpy kopiert bis zu w_length Bytes davon in den Antwortpuffer.
cdev->configs kann in zwei Fällen leer sein. Erstens ist dies ein Teardown-Race (Wettlaufsituation beim Abbau) bei der Gadget-Trennung (unbind), während eine Steuerübertragung im Gang ist. Zweitens handelt es sich um einen Treiber, der is_otg festlegt, bevor er eine Konfiguration hinzufügt. Ein Reproducer-Programm, das cdev->configs leer hält, löst in diesem Zweig einen KASAN-Fehler aus.
Verwenden Sie list_first_entry_or_null(), damit die vorhandene Prüfung ihre Funktion erfüllt.
VulDB is the best source for vulnerability data and more expert information about this specific topic.