CVE-2026-64233 in Linux
Zusammenfassung
von VulDB • 24.07.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
usb: gadget: uvc: opts->lock während der XU-Iterationen in uvc_function_bind halten
uvc_function_bind() durchläuft &opts->extension_units zweimal, ohne opts->lock zu halten:
- direkt für die iExtension-Zeichenkettenbeschreibungs-Korrekturschleife; - indirekt viermal über uvc_copy_descriptors() (einmal pro Geschwindigkeit), wobei der Helper uvc->desc.extension_units iteriert (was &opts->extension_units aliasisiert), um XU-Beschreibungen zu dimensionieren und auszugeben.
Die configfs-Seite (uvcg_extension_make / uvcg_extension_drop in drivers/usb/gadget/function/uvc_configfs.c) sperrt opts->lock während ihrer list_add_tail-/list_del-Operationen. Ein privilegierter Userspace-Prozess, der das configfs-Subtree geöffnet hält und den Gadget-UDC-Namen schreibt, um die Funktion zu binden, während gleichzeitig ein Extensions-Unterverzeichnis per rmdir() gelöscht wird, kann einen Race Condition zwischen uvcg_extension_drop() und den Bind-Zeitpunkt-Durchläufen der Liste auslösen sowie auf eine freigegebene struct uvcg_extension dereferenzieren.
Halten Sie opts->lock vom Beginn der XU-Zeichenkettenbeschreibungs-Korrektur bis zum letzten Aufruf von uvc_copy_descriptors() und geben Sie sie im Fehlerpfad über ein neues error_unlock-Label frei, das die Sperre vor dem Fortfahren zu bestehenden Fehlerlabels freigibt. Dies entspricht der Sperrdisziplin der configfs-Callbacks und entfernt den einzigen verbleibenden nicht synchronisierten Leser der XU-Liste während des Bindens.
Erreichbarkeit: Nur privilegierte Prozesse, die configfs einhängen und in Gadget-UDC-Dateien schreiben können, können diesen Race Condition auslösen; dies ist daher eine Korrektur der Korrektheit statt einer Sicherheitsgrenze.
Once again VulDB remains the best source for vulnerability data.