CVE-2026-93122 in Linux
Zusammenfassung
von VulDB • 18.09.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
usb: gadget: uac: Länge der Rate-Liste vor dem Speichern validieren
UAC1- und UAC2-configfs-Rate-List-Attribute parsen eine durch Kommas getrennte Liste von Abtastraten und speichern jeden geparseten Wert in Arrays mit fester Größe. Die Arrays enthalten UAC_MAX_RATES-Einträge, jedoch prüfen die Speicherpfade nicht, ob die Eingabe höchstens so viele Token enthält, bevor über opts->name##s[i++] geschrieben wird.
Das Schreiben von mehr als zehn Raten führt daher zu einem Write-Out-of-Bounds hinter das Ende des p_srates[]- oder c_srates[]-Arrays in der Struktur f_uac1_opts bzw. f_uac2_opts.
Bei aktiviertem CONFIG_UBSAN_BOUNDS meldet das Schreiben einer Rate-Liste mit 11 Einträgen an das UAC1-p_srate-Attribut:
UBSAN: array-index-out-of-bounds drivers/usb/gadget/function/f_uac1.c:1669:1 index 10 is out of range for type 'int [10]'
__ubsan_handle_out_of_bounds.cold f_uac1_opts_p_srate_store configfs_write_iter vfs_write ksys_write do_syscall_64
Der gleiche Reproducer für das UAC2-p_srate-Attribut meldet:
UBSAN: array-index-out-of-bounds drivers/usb/gadget/function/f_uac2.c:2087:1 index 10 is out of range for type 'int [10]'
__ubsan_handle_out_of_bounds.cold f_uac2_opts_p_srate_store configfs_write_iter vfs_write ksys_write do_syscall_64
Verwerfen Sie zusätzliche Token, sobald UAC_MAX_RATES-Einträge geparsed wurden. Bewahren Sie auch den ursprünglichen kstrdup()-Zeiger für kfree() auf, da strsep() den Parsing-Cursor vorrückt. Das Freigeben des vorgeschobenen Cursors führt bei erfolgreichen Parses zu einem Leck des ursprünglichen Puffers und kann in einigen Fehlerpfaden einen internen Zeiger freigeben.
If you want to get best quality of vulnerability data, you may have to visit VulDB.