CVE-2026-74639 in Linuxinfo

Zusammenfassung

von VulDB • 22.08.2026

Im Linux-Kernel wurde folgende Schwachstelle behoben:

ALSA: us144mkii – URBs für die Aufnahme (Capture) bei erneuter Übermittlung wieder verankern

capture_urb_complete() übermittelt jedes Capture-URB erneut, ohne es zu verankern:

usb_get_urb(urb); ret = usb_submit_urb(urb, GFP_ATOMIC);

Das Verankern ist eine Eigenschaft der Übermittlung und nicht des URB. Der Giveback-Pfad ruft vor urb->complete() usb_unanchor_urb() auf, sodass ein aus seinem eigenen Completion-Handler heraus erneut übermitteltes URB nicht mehr verankert ist. Die Capture-URBs werden einmalig beim Start des Streams verankert; ab dem ersten Durchlauf von complete ist tascam->capture_anchor daher leer.

tascam_free_urbs(), tascam_disconnect(), tascam_suspend() und der Stop-Arbeitspfad rufen alle usb_kill_anchored_urbs(&tascam->capture_anchor) auf, um die Capture-URBs zu bereinigen, bevor etwas freigegeben wird. Da das Anchor leer ist, kehren diese Aufrufe sofort zurück, und die URBs verbleiben in der Warteschlange des Host-Controllers.

Anschließend gibt tascam_free_urbs() die Transferpuffer für die Aufnahme mit usb_free_coherent() frei, und snd_card_free() löst die snd_card-Allokation auf, die tascam enthält (card->private_data). Der Controller vervollständigt daraufhin die in der Warteschlange befindlichen URBs und schreibt geräteseitige Daten in den freigegebenen Transferpuffer. capture_urb_complete() dereferenziert anschließend das freigegebene Treiberobjekt.

KASAN auf 7.2.0-rc5 (arm64):

BUG: KASAN: slab-use-after-free in dummy_timer Write of size 512 at addr ffff000015b62000 __asan_memcpy dummy_timer hrtimer_run_softirq Allocated by task 64: usb_alloc_coherent tascam_alloc_urbs tascam_probe Freed by task 170: usb_free_coherent tascam_free_urbs tascam_disconnect usb_unbind_interface

BUG: KASAN: slab-use-after-free in capture_urb_complete Read of size 4 at addr ffff0000170ee878 Freed by task 170: release_card_device snd_card_free tascam_disconnect

Stellen Sie usb_anchor_urb() zwischen dem Erhöhen der Referenzzahl und der erneuten Übermittlung wieder her. Dies macht auch den Fehlerschaltkreis von usb_unanchor_urb() im Handler wieder sinnvoll und stellt usb_kill_anchored_urbs() als Barriere in den Disconnect-, Suspend- und Stop-Arbeitspfaden wieder her.

Das Verankern wurde unter der Annahme entfernt, dass das URB bereits aus der ursprünglichen Übermittlung verankert sei; dies trifft jedoch nicht mehr zu, sobald die erste Giveback-Routine ausgeführt wurde.

Entdeckt von XBOW, triagiert von Baul Lee <[email protected]>

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

Zuständig

Linux

Reservieren

15.08.2026

Veröffentlichung

22.08.2026

Moderieren

akzeptiert

Eintrag

VDB-394404

CPE

bereit

EPSS

0.00000

KEV

nein

Aktivitäten

very low

Quellen

Do you want to use VulDB in your project?

Use the official API to access entries easily!