Katalog CVE

CVE-2026-80979

WysokieCVSS 7.8
Opublikowano: Zaktualizowano: Przetłumaczono: NVD NIST

Prawdopodobieństwo exploitacji (EPSS)

Niskie ryzyko
0.13%

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

Streszczenie

W jądrze Linux w podsystemie net/smc funkcja smc_conn_free() wyrejestrowuje połączenie tylko wtedy, gdy grupa łączy wciąż znajduje się na liście urządzenia, i nigdy nie ustawia conn->killed. W oknie między odłączeniem grupy a zabiciem jej połączeń urządzenie może ponownie uzbroić tasklet odbiorczy po tasklet_kill(), co prowadzi do użycia zwolnionego bufora (use-after-free).

Ocena ryzyka

Użycie zwolnionej pamięci (use-after-free) w ścieżce odbioru SMC może prowadzić do awarii jądra lub potencjalnego wykonania kodu. Dotyczy systemów korzystających z SMC z obsługą ISM/DMB.

Rekomendacja

Zaktualizuj jądro Linux do wersji z poprawką, która bezwarunkowo wyrejestrowuje połączenie i opróżnia tasklet przed odłączeniem oraz czyści wskaźnik sndbuf_desc przed zwolnieniem. Do czasu aktualizacji rozważ ograniczenie użycia SMC.

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: net/smc: unregister the connection before draining the rx tasklet smc_conn_free() calls smc_ism_unset_conn() only while the link group is still on its device list, and never sets conn->killed. smc_lgr_terminate_sched() unlinks the group immediately and defers killing its connections to a work item, so a connection freed in that window keeps its smcd->conn[] slot with both gates in smcd_handle_irq() open, and the device can re-arm the receive tasklet after tasklet_kill() has returned. On the DMB-nocopy path the ghost send buffer is freed right after that drain, so the re-armed tasklet dereferences it. Unregister unconditionally and drain before the detach at both teardown sites, mirroring rmb_desc, which smc_buf_unuse() releases after the drain. Clear conn->sndbuf_desc before freeing it as well, so a reader that samples the pointer cannot get one that is already freed.

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