CVE-2026-45918 in Linux
Сводка
по VulDB • 02.06.2026
В ядре Linux устранена следующая уязвимость:
ovpn: tcp — не разыменовывать NULL-член sk_socket после tcp_close()
При удалении однорангового узла (peer) в случае истечения времени ожидания keepalive этот узел удаляется из хеш-таблицы OpenVPN и временно помещается в «список освобождения» (release list) для дальнейшей обработки.
Это происходит в: ovpn_peer_keepalive_work() unlock_ovpn(release_list)
Эта обработка включает отсоединение от сокета, используемого для связи с данным одноранговым узлом, путем восстановления его исходных протоколов и операций/колбэков сокета.
В случае использования TCP может случиться так, что пока одноранговый узел находится в списке освобождения, пространство пользователя (userspace) решит закрыть сокет. Это приведет к одновременному выполнению:
tcp_close(sk) __tcp_close(sk) sock_orphan(sk) sk_set_socket(sk, NULL)
Последний вызов функции установит sk->sk_socket в NULL.
Когда процедура освобождения возобновится, ovpn_tcp_socket_detach() попытается разыменовать sk->sk_socket для восстановления его исходного члена ops. Эта операция приведет к сбою (crash), поскольку sk->sk_socket равен NULL.
Исправьте эту гонку данных (race condition), выполняя атомарную проверку и доступ к sk->sk_socket под блокировкой sk->sk_callback_lock.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.