Katalog CVE

CVE-2026-98773

Niskie ryzyko· EPSS 6%
Opublikowano: Zaktualizowano: Przetłumaczono: NVD NIST

Prawdopodobieństwo exploitacji (EPSS)

Niskie ryzyko
0.17%

Percentyl 6 - wyżej niż 6% wszystkich znanych CVE

Streszczenie

W jądrze Linux w sterowniku USB cdc-acm funkcja acm_port_shutdown() bezwarunkowo wywołuje acm_unpoison_urbs() i przy ustawionej kwirkowej fladze ALWAYS_POLL_CTRL natychmiast ponownie wysyła ctrlurb oraz wszystkie URBy odczytu. Jeśli równoległy acm_disconnect() zwolni te URBy i ich bufory DMA w trakcie przetwarzania, dochodzi do use-after-free w acm_ctrl_irq() lub acm_read_bulk_callback().

Ocena ryzyka

Use-after-free w jądrze może prowadzić do awarii systemu lub potencjalnej eskalacji uprawnień, gdy użytkownik odłącza urządzenie USB cdc-acm w trakcie jego używania.

Rekomendacja

Zaktualizuj jądro Linux do wersji z poprawką, która sprawdza acm->disconnected po opróżnieniu delayed anchor i zwraca wcześnie, aby URBy pozostały zatrute i nie były ponownie wysyłane.

Inne podatności w Linux kernel

Zobacz wszystkie
Oryginalny opis (angielski, źródło NVD)

In the Linux kernel, the following vulnerability has been resolved: USB: cdc-acm: skip URB restart in port_shutdown if disconnected acm_port_shutdown() is called from the tty-port machinery whenever the last user closes the port. acm_disconnect() sets acm->disconnected and calls tty_port_tty_vhangup(), which eventually triggers port_shutdown(). At that point acm_disconnect() has already called acm_poison_urbs() and is about to free the control and read URBs. However, acm_port_shutdown() unconditionally calls acm_unpoison_urbs() and, when the ALWAYS_POLL_CTRL quirk is set, immediately re-submits the ctrlurb and all read URBs. If the concurrent acm_disconnect() then frees those URBs and their DMA buffers while they are in-flight, the result is a use-after-free in acm_ctrl_irq() or acm_read_bulk_callback() accessing the freed DMA memory. Fix by checking acm->disconnected after draining the delayed anchor and returning early: if we are in a disconnect path the URBs must remain poisoned and must not be resubmitted. The early return is placed after the delayed-anchor drain loop because that loop only cancels write-side accounting (wb->use = false and autopm counter) and does not touch the hardware path.

Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS