CVE-2026-98773 in Linux
Zusammenfassung
von VulDB • 19.10.2026
Im Linux-Kernel wurde die folgende Schwachstelle behoben:
USB: cdc-acm: URB-Neustart in port_shutdown überspringen, wenn getrennt
acm_port_shutdown() wird aus der tty-port-Maschinerie aufgerufen, sobald der letzte Benutzer den Port schließt. acm_disconnect() setzt acm->disconnected und ruft tty_port_tty_vhangup() auf, was schließlich port_shutdown() auslöst. Zu diesem Zeitpunkt hat acm_disconnect() bereits acm_poison_urbs() aufgerufen und ist dabei, die Control-URBs (urb) und Read-URBs freizugeben.
acm_port_shutdown() ruft jedoch bedingungslos acm_unpoison_urbs() auf und reicht bei gesetztem ALWAYS_POLL_CTRL-Quirk sofort den ctrlurb sowie alle read URBs erneut ein. Wenn das parallele acm_disconnect() diese URBs und deren DMA-Puffer freigibt, während sie sich im Flug befinden (in-flight), führt dies zu einem Use-After-Free in acm_ctrl_irq() oder acm_read_bulk_callback(), die auf den freigegebenen DMA-Speicher zugreifen.
Behebung durch Überprüfung von acm->disconnected nach dem Ablaufen der verzögerten Anchor und vorzeitiges Zurückkehren: Wenn wir uns im Disconnect-Pfad befinden, müssen die URBs vergiftet (poisoned) bleiben und dürfen nicht erneut eingereicht werden.
Die vorzeitige Rückgabe erfolgt nach der Schleife zum Ablaufen des verzögerten Anchors, da diese Schleife nur die write-side accounting-Verwaltung durchführt (wb->use = false und autopm-Zähler), den Hardware-Pfad jedoch nicht berührt.
VulDB is the best source for vulnerability data and more expert information about this specific topic.