CVE: CVE-2026-80735
Продукт: Linux Kernel
Дата публикации: 03.09.2026
Критичность: HIGH
CVSS: 7.3 (3.1)
EPSS: 0,12%; процентиль 2,41%
CISA KEV: нет подтверждения в каталоге CISA KEV
Краткое описание
В драйвере ovpn ядра Linux обнаружена ошибка, позволяющая выполнить чтение вне границ памяти (out-of-bounds read) при обработке сокетов. Проблема возникает, если другие подсистемы, такие как BPF SOCKMAP, заполняют поле sk_user_data без установки соответствующего типа инкапсуляции. Администраторам систем, использующих OpenVPN в ядре, необходимо проверить наличие исправления, чтобы исключить риск утечки данных или отказа в обслуживании.
Основные характеристики
Риск связан с нарушением целостности данных при обращении к пользовательским данным сокета в драйвере ovpn. Если проверка типа сокета отсутствует, ядро может прочитать память, не принадлежащую объекту ovpn_socket, что приводит к утечке конфиденциальной информации или падению процесса.
- Тип ошибки: Out-of-bounds read (чтение вне границ памяти).
- CVSS 3.1: 7.3 (HIGH). Вектор:
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:L.
- Условия атаки: Локальный доступ с правами обычного пользователя (PR:L), без необходимости взаимодействия пользователя (UI:N).
- Эксплуатация: Публичные данные о подтвержденной эксплуатации в реальных атаках отсутствуют.
- EPSS: 0,12% (0.00124), что указывает на низкую вероятность эксплуатации в ближайшие 30 дней.
Какие продукты и версии затронуты
Уязвимость затрагивает ядра Linux, в которых включен модуль ovpn (OpenVPN in-kernel). Точный список версий, требующих обновления, зависит от дистрибутива, так как исправление было внесено в стабильные ветки ядра.
- Компонент:
drivers/net/ovpn/socket.c.
- Исходный коммит с ошибкой:
f6226ae7a0cd("ovpn: introduce the ovpn_socket object").
- Исправляющие коммиты:
59aed1eb60d70678a53acccb0cb337a26ce6680e(upstream),43a31142e1d22b3cf5490bd94a94db7196901734и61fb3cca40ff938671474f4a16adb908c19032d7(stable).
Администраторам рекомендуется проверить наличие данных коммитов в текущей сборке ядра через средства управления пакетами дистрибутива.
Причина уязвимости
Причина ошибки заключается в недостаточной валидации состояния сокета перед обращением к его пользовательским данным. Функция
ovpn_socket_new извлекает указатель из поля sk_user_data сокета, предполагая, что этот указатель всегда принадлежит объекту ovpn_socket.Однако другие подсистемы ядра, например BPF SOCKMAP, могут записывать свои собственные данные в
sk_user_data, не устанавливая при этом тип инкапсуляции (encap_type), который ожидает драйвер ovpn. В результате, если ovpn получает такой сокет, он интерпретирует чужие данные как структуру ovpn_socket и обращается к полям, которые могут выходить за пределы выделенной памяти.Как работает атака
Атакующий с локальными правами пользователя может создать сокет и передать его в драйвер ovpn через соответствующие системные вызовы. Если в этот сокет были записаны данные другой подсистемой (например, через BPF), драйвер ovpn не проверяет, что тип сокета соответствует его ожиданиям.
При попытке доступа к полям структуры
ovpn_socket по указателю из sk_user_data происходит чтение памяти, не принадлежащей этому объекту. Это может привести к утечке данных из ядра в пользовательское пространство или к срабатыванию защиты памяти (page fault), что вызовет падение процесса или отказ в обслуживании.Условия успешной эксплуатации
Для успешной эксплуатации уязвимости необходимо выполнение следующих условий:
- Локальный доступ: Атакующий должен иметь учетную запись на целевой системе с правами обычного пользователя.
- Загруженный модуль ovpn: В ядре должен быть активен драйвер ovpn.
- Возможность создания сокета: Пользователь должен иметь возможность создавать сокеты и взаимодействовать с интерфейсом ovpn.
- Наличие конфликтующих данных: В поле
sk_user_dataсокета должны присутствовать данные, не принадлежащие ovpn, и тип инкапсуляции должен быть не установлен.
Возможный сценарий атаки
Локальный пользователь создает сокет и использует BPF-программу для записи произвольных данных в
sk_user_data этого сокета. Затем пользователь пытается использовать этот сокет в контексте OpenVPN-инстанса, вызывая функции драйвера ovpn.Драйвер ovpn извлекает указатель из
sk_user_data и пытается прочитать поля структуры ovpn_socket. Поскольку данные не соответствуют ожидаемой структуре, происходит чтение вне границ памяти. В худшем случае атакующий получает доступ к конфиденциальным данным ядра, в лучшем — вызывает сбой системы.Есть ли публичный эксплойт
На момент публикации данных о публичном эксплойте или подтвержденной эксплуатации CVE-2026-80735 в реальных атаках не поступало. Официальные источники содержат только описание ошибки и коммиты с исправлением. Отсутствие публичного PoC не означает, что уязвимость не может быть эксплуатирована, но текущий риск считается низким.
Признаки эксплуатации
Специфичные индикаторы компрометации (IOC) для этой уязвимости не опубликованы. Общие признаки, которые могут указывать на попытку эксплуатации, включают:
- Аномальные системные вызовы: Частые вызовы
socketиconnectс последующими ошибками в логах ядра, связанными с ovpn.
- Срабатывания KASAN/KCSAN: Если в ядре включены инструменты отладки памяти, могут появляться отчеты об out-of-bounds read в
drivers/net/ovpn/socket.c.
- Неожиданные сбои процессов: Падение процессов, работающих с OpenVPN, без явных причин в пользовательском пространстве.
Как обнаружить атаку
Для обнаружения атаки или эксплуатации рекомендуется использовать следующие методы:
- Мониторинг логов ядра: Отслеживайте сообщения об ошибках в
dmesgилиjournalctl, связанные с драйвером ovpn и ошибками памяти.
- Аудит BPF-программ: Проверьте, какие BPF-программы имеют доступ к сокерам, используемым ovpn, и не записывают ли они данные в
sk_user_data.
- Инструменты отладки: Включите KASAN (Kernel Address Sanitizer) в тестовых средах для выявления ошибок чтения вне границ памяти в драйвере ovpn.
Как проверить свою версию
Чтобы проверить, установлена ли уязвимая версия ядра, используйте следующие команды:
Bash:
uname -r
uname -a
cat /proc/version
Затем сравните версию ядра с списком исправленных версий в документации вашего дистрибутива. Если вы используете сборку из исходников, проверьте наличие коммитов
59aed1eb60d70678a53acccb0cb337a26ce6680e в истории git-репозитория ядра.Исправление
Единственным надежным способом устранения уязвимости является обновление ядра Linux до версии, содержащей исправление. Исправление было внесено в следующие коммиты:
59aed1eb60d70678a53acccb0cb337a26ce6680e(upstream)
43a31142e1d22b3cf5490bd94a94db7196901734(stable)
61fb3cca40ff938671474f4a16adb908c19032d7(stable)
Обновите ядро через стандартные средства управления пакетами вашего дистрибутива. После обновления перезагрузите систему для применения новых модулей.
Временные меры защиты
Пока обновление не установлено, можно рассмотреть следующие временные меры:
- Отключение модуля ovpn: Если OpenVPN в ядре не используется, отключите модуль
ovpnс помощьюmodprobe -r ovpn.
- Ограничение доступа к BPF: Ограничьте права на загрузку BPF-программ, чтобы предотвратить запись произвольных данных в
sk_user_dataсокетов, используемых ovpn.
- Использование userspace OpenVPN: Переключитесь на использование OpenVPN в пользовательском пространстве, если это допустимо для вашей инфраструктуры.
Как проверить устранение уязвимости
После обновления ядра проверьте, что исправление применено:
- Убедитесь, что версия ядра соответствует исправленной версии в документации дистрибутива.
- Проверьте наличие коммитов с исправлением в истории ядра (если доступно).
- Проведите функциональное тестирование OpenVPN-инстансов, чтобы убедиться, что они работают корректно.
- Проверьте логи ядра на предмет отсутствия ошибок, связанных с ovpn.
Вывод
CVE-2026-80735 представляет собой уязвимость в драйвере ovpn ядра Linux, которая может привести к чтению вне границ памяти. Хотя риск эксплуатации в настоящее время оценивается как низкий, администраторам систем, использующих OpenVPN в ядре, рекомендуется обновить ядро до последней версии, содержащей исправление. Это обеспечит защиту от потенциальных утечек данных и отказов в обслуживании.
Официальные источники
- NVD — CVE-2026-80735
- FIRST EPSS — CVE-2026-80735
- ovpn: ensure socket is owned by ovpn before deref sk_user_data - kernel/git/stable/linux.git - Linux kernel stable tree
- ovpn: ensure socket is owned by ovpn before deref sk_user_data - kernel/git/stable/linux.git - Linux kernel stable tree
- ovpn: ensure socket is owned by ovpn before deref sk_user_data - kernel/git/stable/linux.git - Linux kernel stable tree
- CVEs — The Linux Kernel documentation
История обновлений статьи
- 08.09.2026 — Опубликована первая версия материала.
