CVE-2026-46048 in Linuxinfo

Zusammenfassung

von VulDB • 28.05.2026

Im Linux-Kernel wurde folgende Schwachstelle behoben:

ALSA: caiaq: Behebung des Lecks der usb_dev-Referenzzählung bei einem Fehler während der Initialisierung (Probe)

create_card() nimmt eine Referenz auf das USB-Gerät mit usb_get_dev() auf und speichert den entsprechenden Aufruf von usb_put_dev() in card_free(), der als ->private_free-Zerstörer (Destructor) für snd_card installiert wird.

Allerdings wird ->private_free erst gegen Ende von init_card() zugewiesen, nachdem mehrere Fehlerquellen (usb_set_interface(), EP-Typ-Prüfungen, usb_submit_urb(), der EP1_CMD_GET_DEVICE_INFO-Austausch und dessen Timeout) durchlaufen wurden. Wenn einer dieser Schritte fehlschlägt, gibt init_card() einen Fehler an snd_probe() zurück, das snd_card_free(card) aufruft. Da ->private_free noch NULL ist, wird card_free() nie ausgeführt, die Referenz von usb_get_dev() wird nicht freigegeben, und die struct usb_device zusammen mit ihren Deskriptorzuweisungen und device_private wird nicht freigegeben (Leck).

syzbot reproduziert dies mit einem fehlerhaften UAC3-Gerät, dessen einziger gültiger Altsetting-Wert 0 ist; der Aufruf usb_set_interface(usb_dev, 0, 1) in init_card() schlägt mit -EIO fehl und löst das Leck aus.

Die Zuweisung von ->private_free wird in create_card() verschoben, unmittelbar nach usb_get_dev(), sodass jeder Fehlerpfad, der snd_card_free() erreicht, die Referenz korrekt ausgleicht. Die von card_free() aufgerufenen Funktionen (snd_usb_caiaq_input_free, free_urbs, kfree) tolerieren den teilweise initialisierten Zustand bereits, da der private Bereich des Chips durch snd_card_new() mit Nullen initialisiert wird.

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

Zuständig

Linux

Reservieren

13.05.2026

Veröffentlichung

27.05.2026

Moderieren

akzeptiert

Eintrag

VDB-366298

CPE

bereit

EPSS

0.00032

KEV

nein

Aktivitäten

very low

Quellen

Do you know our Splunk app?

Download it now for free!