CVE-2026-64347
Publiée le 2026-07-25 · Dernière modification le 2026-09-03
Les systèmes Linux utilisant le pilote « USB composite gadget » sont affectés par une erreur de mémoire pouvant entraîner un plantage du système. Un utilisateur local disposant de privilèges restreints peut déclencher cette faille sans interaction supplémentaire, généralement en manipulant les configurations USB ou en provoquant une condition de concurrence (race condition) lors du déliement d'un périphérique. L'exploitation de cette vulnérabilité permet à un attaquant de provoquer un déni de service (blocage ou plantage du système) plutôt que de voler des données ou d'obtenir des permissions plus élevées.
DÉTAIL DU VECTEUR CVSS
RÉFÉRENCES
Description officielle du NVD (en anglais)
In the Linux kernel, the following vulnerability has been resolved: usb: gadget: composite: fix dead empty check in the USB_DT_OTG handler The OTG branch of composite_setup() falls back to the first configuration when none is selected: 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() never returns NULL. On an empty list it returns container_of() of the list head. So the "if (!config)" check is dead. When cdev->configs is empty, config points at the head inside struct usb_composite_dev. config->descriptors[0] reads whatever sits at that offset. The memcpy copies up to w_length bytes of it into the response buffer. cdev->configs can be empty in two cases. One is a teardown race on gadget unbind with a control transfer in flight. The other is a driver that sets is_otg before it adds a config. A reproducer that holds cdev->configs empty triggers a KASAN fault in this branch. Use list_first_entry_or_null() so the existing check does its job.