CVE: CVE-2026-80519
Продукт: Linux Kernel
Дата публикации: 26.08.2026
Критичность: CRITICAL
CVSS: 9.8 (3.1)
EPSS: 0,45%; процентиль 37,33%
CISA KEV: нет подтверждения в каталоге CISA KEV
Краткое описание
В драйвере ovpn ядра Linux обнаружена ошибка, связанная с неправильным порядком освобождения ссылок в криптографических колбэках. Дефект позволяет системе обратиться к памяти после её освобождения (Use-After-Free) в момент завершения криптографических операций и начала удаления модуля. В материале разобраны технические причины, условия эксплуатации и порядок проверки наличия исправлений в стабильных ветках ядра.
Основные характеристики
Риск связан с нарушением жизненного цикла объектов в драйвере ovpn, что может привести к обращению к освобожденной памяти и критическим последствиям для стабильности системы.
- Тип ошибки: Use-After-Free (UAF) в контексте управления ссыками на peer и key-slot.
- CVSS 3.1: 9.8 (CRITICAL). Вектор:
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H.
- Вектор атаки: Сетевой (AV:N), без необходимости в привилегиях (PR:N) и взаимодействии пользователя (UI:N).
- Эксплуатация: Публичные данные о подтвержденной эксплуатации в реальных атаках отсутствуют.
- EPSS: 0,45% (0.00448). Процентиль: 37,33%.
Какие продукты и версии затронуты
Уязвимость затрагивает реализации Linux Kernel, содержащие исходный код драйвера ovpn, введённый в коммите
8534731dbf2d.- Компонент:
drivers/net/ovpn/io.c.
- Статус исправления: Патч применён в стабильных ветках ядра (stable tree).
- Версии: Точный список уязвимых версий ядра не указан в предоставленных источниках. Рекомендуется свериться с релизными заметками дистрибутива и наличием коммитов
4b0de8be288f,9e163917a86cиa3a676495c64в локальной сборке.
Причина уязвимости
Причина дефекта кроется в неправильном порядке освобождения ссылок в криптографических колбэках завершения.
Колбэки удерживают ссылки как на слот ключа (key-slot), так и на peer. Ссылка на peer фиксирует сетевой интерфейс (netdev). Если последняя ссылка на peer освобождается до завершения очистки самого колбэка, это позволяет системе начать процесс deregister'а netdev и удаления модуля.
В исходном коде функция
ovpn_crypto_key_slot_put могла выполняться после ovpn_peer_put. В таком случае система планировала RCU-колбэк, опирающийся на текст модуля, после того, как rcu_barrier в ovpn_cleanup уже отработал. Также в пути ошибки TX оставался skb, освобождение которого происходило вне окна жизненного цикла peer/netdev.Как работает атака
Атака эксплуатирует гонку состояний (race condition) при освобождении ресурсов в момент завершения криптографических операций.
Атакующий может спровоцировать ситуацию, при которой колбэк завершения шифрования/дешифрования завершается в момент, когда модуль ovpn уже начал процесс удаления. Из-за неправильного порядка вызовов
ovpn_peer_put и ovpn_crypto_key_slot_put система обращается к памяти, которая уже была освобождена или находится в процессе освобождения.Это приводит к Use-After-Free: система пытается использовать указатель на объект, который больше не существует. В ядре Linux это часто приводит к повреждению памяти, падению ядра (kernel panic) или, при удачном стечении обстоятельств, к выполнению произвольного кода с привилегиями ядра.
Условия успешной эксплуатации
Для успешной эксплуатации уязвимости необходимо выполнение ряда условий, связанных с наличием и активностью модуля ovpn.
- Наличие модуля: В системе должен быть загружен модуль
ovpn.
- Активность трафика: Должен происходить обмен данными, инициирующий криптографические колбэки.
- Момент удаления: Атака требует совпадения по времени завершения криптографической операции и начала процесса удаления модуля или deregister'а сетевого интерфейса.
- Доступ к сети: Вектор атаки сетевой (AV:N), что подразумевает возможность отправки специально сформированных пакетов или управления состоянием соединения.
Возможный сценарий атаки
Сценарий атаки предполагает взаимодействие с сетевым интерфейсом, использующим протокол ovpn.
Атакующий направляет пакет, который инициирует шифрование или дешифрование. В момент завершения этой операции администратор или автоматизированный процесс начинает удаление модуля ovpn или отключение сетевого интерфейса.
Из-за ошибки в порядке освобождения ссылок колбэк пытается обратиться к памяти peer после её освобождения. Это приводит к повреждению структур данных ядра и потенциальному захвату контроля над системой.
Есть ли публичный эксплойт
В предоставленных источниках отсутствуют сведения о публичных эксплоитах, PoC или подтверждённой эксплуатации в реальных атаках.
- PoC: Не обнаружено.
- Эксплуатация: Нет данных о массовых атаках.
- Статус: Уязвимость классифицирована как критическая, но публичный код для её эксплуатации не опубликован в доступных базах данных.
Признаки эксплуатации
Специфичные индикаторы компрометации (IOC) для данной уязвимости в источниках не описаны. Ниже приведены общие, неспецифичные точки контроля, которые могут указывать на аномальную активность в модуле ovpn.
- Kernel Panic: Внезапные падения ядра с сообщениями об ошибке в
drivers/net/ovpn.
- Аномальные логи: Записи в
dmesgилиsyslogо Use-After-Free или NULL pointer dereference в контексте ovpn.
- Сетевая аномалия: Необъяснимые обрывы соединений ovpn в момент изменения конфигурации или удаления интерфейсов.
Как обнаружить атаку
Обнаружение атаки или эксплуатации данной уязвимости затруднено из-за отсутствия специфичных сигнатур.
- Мониторинг логов ядра: Отслеживание сообщений об ошибках памяти (segfault, UAF) в модуле ovpn.
- Аудит конфигурации: Проверка, не происходит ли удаление модуля ovpn в момент активной передачи данных.
- Сетевой анализ: Мониторинг аномального трафика, направленного на интерфейсы ovpn, особенно в периоды технического обслуживания.
Как проверить свою версию
Для проверки текущей версии ядра и наличия исправлений используйте следующие команды:
Bash:
uname -r
uname -a
cat /proc/version
Для проверки наличия конкретных коммитов-исправлений в вашей сборке ядра (если вы компилируете ядро самостоятельно) используйте
git log в исходном коде ядра, ищите коммиты 4b0de8be288f, 9e163917a86c и a3a676495c64.Исправление
Единственным надёжным способом устранения уязвимости является обновление ядра Linux до версии, содержащей исправление.
- Обновление ядра: Установите последнюю доступную версию ядра от вашего дистрибутива.
- Проверка патчей: Убедитесь, что в вашей версии ядра присутствуют коммиты
4b0de8be288f,9e163917a86cиa3a676495c64.
- Перезагрузка: После обновления ядра требуется перезагрузка системы для применения изменений.
Временные меры защиты
Пока обновление не применено, можно снизить риск эксплуатации, ограничив активность модуля ovpn.
- Отключение модуля: Если ovpn не используется, отключите и выгрузите модуль:
rmmod ovpn.
- Ограничение доступа: Ограничьте сетевой доступ к интерфейсам, использующим ovpn, через firewall.
- Избегание перезагрузок: Не выполняйте операции по удалению модуля или интерфейсов в момент активной передачи данных.
Как проверить устранение уязвимости
После обновления ядра необходимо убедиться, что исправление применено.
- Проверка версии: Убедитесь, что
uname -rпоказывает обновлённую версию.
- Проверка коммитов: Если возможно, проверьте наличие исправляющих коммитов в истории ядра.
- Функциональное тестирование: Проведите тестирование работы ovpn для подтверждения отсутствия регрессий.
Вывод
CVE-2026-80519 представляет собой критический риск для систем, использующих модуль ovpn в Linux Kernel. Ошибка в порядке освобождения ресурсов может привести к выполнению кода с привилегиями ядра. Рекомендуется как можно скорее обновить ядро до версии, содержащей исправление, и при необходимости временно ограничить использование ovpn до завершения обновления.
Официальные источники
- NVD — CVE-2026-80519
- FIRST EPSS — CVE-2026-80519
- ovpn: finish crypto callback cleanup before peer release - kernel/git/stable/linux.git - Linux kernel stable tree
- ovpn: finish crypto callback cleanup before peer release - kernel/git/stable/linux.git - Linux kernel stable tree
- ovpn: finish crypto callback cleanup before peer release - kernel/git/stable/linux.git - Linux kernel stable tree
- CVEs — The Linux Kernel documentation
История обновлений статьи
- 31.08.2026 — Опубликована первая версия материала.
