CVE-2026-80519 в Linux Kernel: нарушение порядка освобождения ресурсов в ovpn

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 до завершения обновления.

Официальные источники​


  1. NVD — CVE-2026-80519
  2. FIRST EPSS — CVE-2026-80519
  3. ovpn: finish crypto callback cleanup before peer release - kernel/git/stable/linux.git - Linux kernel stable tree
  4. ovpn: finish crypto callback cleanup before peer release - kernel/git/stable/linux.git - Linux kernel stable tree
  5. ovpn: finish crypto callback cleanup before peer release - kernel/git/stable/linux.git - Linux kernel stable tree
  6. CVEs — The Linux Kernel documentation

История обновлений статьи​


  • 31.08.2026 — Опубликована первая версия материала.
 
Назад
Верх Низ