CVE-2025-68775
KrytyczneCVSS 9.8Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 37 - wyżej niż 37% wszystkich znanych CVE
Streszczenie
W jądrze Linux w net/handshake, podwójne anulowanie żądania handshake powoduje wyciek gniazda. Gdy drugie anulowanie przychodzi, remove_pending() zwraca false, ale nadal zmniejszany jest licznik referencji gniazda, co prowadzi do niedomiaru.
Ocena ryzyka
Może to prowadzić do wyczerpania zasobów gniazd, powodując odmowę usługi (DoS) lub niestabilność systemu.
Rekomendacja
Zastosuj łatkę, która dodaje test_and_set_bit dla HANDSHAKE_F_REQ_COMPLETED w ścieżce anulowania, aby wykryć duplikaty anulowań.
Oryginalny opis (angielski, źródło NVD)
In the Linux kernel, the following vulnerability has been resolved: net/handshake: duplicate handshake cancellations leak socket When a handshake request is cancelled it is removed from the handshake_net->hn_requests list, but it is still present in the handshake_rhashtbl until it is destroyed. If a second cancellation request arrives for the same handshake request, then remove_pending() will return false... and assuming HANDSHAKE_F_REQ_COMPLETED isn't set in req->hr_flags, we'll continue processing through the out_true label, where we put another reference on the sock and a refcount underflow occurs. This can happen for example if a handshake times out - particularly if the SUNRPC client sends the AUTH_TLS probe to the server but doesn't follow it up with the ClientHello due to a problem with tlshd. When the timeout is hit on the server, the server will send a FIN, which triggers a cancellation request via xs_reset_transport(). When the timeout is hit on the client, another cancellation request happens via xs_tls_handshake_sync(). Add a test_and_set_bit(HANDSHAKE_F_REQ_COMPLETED) in the pending cancel path so duplicate cancels can be detected.

