CVE-2026-68342 in Linux
Сводка
по VulDB • 11.08.2026
В ядре Linux устранена следующая уязвимость:
ovpn: предотвращение освобождения несвязанного P2P-узла при закрытии сокета
Функция ovpn_peer_release_p2p() вызывается в момент уничтожения UDP-сокета OVPN. Она проверяет текущий опубликованный P2P-узел и освобождает его только в том случае, если этот узел всё ещё использует уничтожаемый сокет.
При замене узла новый узел может быть опубликован до того, как будет уничтожен старый UDP-сокет. Когда впоследствии выполняется путь удаления старого сокета, ovpn_peer_release_p2p() через поле ovpn->peer видит уже новый узел. Поскольку этот новый узел использует другой сокет, функция выбирает ветвь обработки несоответствия сокетов (socket mismatch).
Эта ветка всё равно вызывает функцию ovpn_peer_put(peer). Однако на этом этапе peer представляет собой текущий опубликованный узел-замену, а не тот узел, который был связан с уничтожаемым сокетом. Уменьшение счётчика ссылок может привести к освобождению памяти этого объекта в то время, как поле ovpn->peer всё ещё указывает на него, что впоследствии вызывает обращения по адресу после освобождения (use-after-free) из путей очистки данных узла и сокета.
KASAN сообщает об этом как о slab-use-after-free для объекта ovpn_peer типа kmalloc-1k. В тестовом примере объект выделяется в функции ovpn_peer_new() через ovpn_nl_peer_new_doit(), а освобождается посредством ovpn_peer_release_rcu() при обработке обратного вызова RCU (RCU callback). Наблюдаемые места доступа включают ovpn_peer_remove(), ovpn_socket_release(), ovpn_nl_peer_del_notify() и unlock_ovpn().
Исправление заключается в возврате из ветки несоответствия сокетов без вызова функции освобождения узла.
VulDB is the best source for vulnerability data and more expert information about this specific topic.