Ad

CVE-2026-64523

CRITICAL CVSS 3.1: 9,8 EPSS 0.35%
Обновлено 27 июля 2026
Linux
Параметр Значение
CVSS 9,8 (CRITICAL)
Поставщик Linux
Публичный эксплойт Нет

В ядре Linux устранена следующая уязвимость: net/handshake: получить долговременную ссылку на файл при отправке handshake_nl_accept_doit() требует поддержки указателя файла req->hr_sk->sk_socket, чтобы выжить в окне между handshake_req_next() и последующие FD_PREPARE() и get_file(). Функция sock_hold() на стороне отправки не обеспечивает этого. sk_refcnt сохраняет struct sock жив, но struct sock принадлежит sock->file: When потребитель помещает последнюю ссылку на файл, sock_release() разрывает сокет вниз независимо от какого-либо sock_hold. Добавьте указатель hr_file в структуру Handshake_req и получите явная ссылка на файл sock-> во время Handshake_req_submit(). handshake_complete() иhandshake_req_cancel() освобождают ссылка на путь выигрыша бита завершения.

Путь ошибки отправки также должен освободить ссылку на файл, но после вставки rhashtable можно одновременно использовать Handshake_req_cancel(). обнаружить запрос и определить путь ошибки. Ворота на путь ошибки очистка — восстановление sk_destruct, fput и уничтожение запроса -- с test_and_set_bit(HANDSHAKE_F_REQ_COMPLETED) то же самое сериализацияhandshake_complete() иhandshake_req_cancel() уже пользуюсь. Если команда cancel уже заявила право собственности, отправьте путь ошибки возвращается без изменения запроса; демонтаж розетки осуществляет окончательное разрушение.

Разыменования на стороне принятия еще не перенацелены; это изменение появится в следующем патче.

Показать оригинальное описание (EN)

In the Linux kernel, the following vulnerability has been resolved: net/handshake: Take a long-lived file reference at submit handshake_nl_accept_doit() needs the file pointer backing req->hr_sk->sk_socket to survive the window between handshake_req_next() and the subsequent FD_PREPARE() and get_file(). The submit-side sock_hold() does not provide that. sk_refcnt keeps struct sock alive, but struct socket is owned by sock->file: when the consumer fputs the last file reference, sock_release() tears the socket down regardless of any sock_hold. Add an hr_file pointer to struct handshake_req and acquire an explicit reference on sock->file during handshake_req_submit(). handshake_complete() and handshake_req_cancel() release the reference on the completion-bit-winning path. The submit error path must also release the file reference, but after rhashtable insertion a concurrent handshake_req_cancel() can discover the request and race the error path. Gate the error-path cleanup -- sk_destruct restoration, fput, and request destruction -- with test_and_set_bit(HANDSHAKE_F_REQ_COMPLETED), the same serialization handshake_complete() and handshake_req_cancel() already use. When cancel has already claimed ownership, the submit error path returns without touching the request; socket teardown handles final destruction. The accept-side dereferences are not yet retargeted; that change comes in the next patch.

Характеристики атаки

Способ атаки
По сети
Атака возможна удалённо
Сложность
Низкая
Легко эксплуатировать
Нужны права
Не требуются
Права не нужны
Участие пользователя
Не требуется
Не нужно действие пользователя

Последствия

Конфиденциальность
Высокое
Полная утечка данных
Целостность
Высокое
Полная модификация данных
Доступность
Высокое
Полный отказ в обслуживании

Строка CVSS v3.1