Katalog CVE

CVE-2026-80982

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

Prawdopodobieństwo exploitacji (EPSS)

Niskie ryzyko
0.16%

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

Streszczenie

W jądrze Linux w module net/smc funkcja smc_rx_splice() przekazuje strony RMB do potoku i pobiera referencję gniazda na wpis, aby smc_sock pozostał aktywny do zakończenia odczytu. Jednak połączenie nie — równoległe zamknięcie uruchamia smc_conn_free(), które zwalnia bufor odbioru z powrotem do puli grupy łączącej. smc_rx_pipe_buf_release() sprawdza sk_state przed pobraniem blokady gniazda; stan może się zmienić między testem a blokadą, a smc_rx_update_cons() dereferencjonuje conn->rmb_desc i przechodzi przez conn->lgr, które zostały już zwolnione — jest to użycie po zwolnieniu pamięci. Poprawka pobiera najpierw blokadę gniazda i sprawdza conn->freed.

Ocena ryzyka

Użycie po zwolnieniu pamięci w ścieżce zwalniania bufora potoku SMC może prowadzić do awarii jądra lub potencjalnego wykonania dowolnego kodu z uprawnieniami jądra.

Rekomendacja

Zaktualizuj jądro Linux do wersji zawierającej poprawkę. Monitoruj systemy korzystające z SMC pod kątem awarii związanych z operacjami splice na gniazdach.

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: fix use-after-free in smc_rx_pipe_buf_release() smc_rx_splice() hands RMB pages to a pipe and takes a socket reference per entry so the smc_sock stays alive until the reader finishes. The connection does not: a concurrent close runs smc_conn_free(), which releases the receive buffer back to the link group pool. smc_rx_pipe_buf_release() tests sk_state before taking the socket lock. The state can change between the test and the lock, and smc_rx_update_cons() then dereferences conn->rmb_desc and walks conn->lgr, which smc_conn_free() has already released. On the is_reg_err path smcr_buf_unuse() frees the descriptor outright, so this is a use-after-free. Take the socket lock first and test conn->freed instead. smc_conn_free() sets that flag before releasing anything, and every caller holds the socket lock. The two paths exclude each other: either the pipe release runs first with everything valid, or it sees the flag and skips the update.

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