CVE-2026-80714 в Linux Kernel: use-after-free в IPVS и исправление

CVE: CVE-2026-80714
Продукт: Linux Kernel
Дата публикации: 28.08.2026
Критичность: CRITICAL
CVSS: 9.8 (3.1)
EPSS: 0,40%; процентиль 33,51%
CISA KEV: нет подтверждения в каталоге CISA KEV

Краткое описание​


В модуле IPVS ядра Linux обнаружен дефект, при котором синхронизированные соединения могут наследовать флаг IP_VS_CONN_F_ONE_PACKET от destination. Это приводит к тому, что при истечении срока действия соединения узел хеш-таблицы не удаляется, оставаясь указателем на освобождённую память. Статья разбирает механику ошибки, условия её проявления и способы проверки наличия патча в системе.

Основные характеристики​


Риск связан с нарушением целостности хеш-таблицы соединений IPVS, что потенциально ведёт к нестабильности системы или удалённому выполнению кода. Дефект проявляется только при работе модуля IPVS с синхронизацией состояний между узлами.

  • Тип ошибки: Use-after-free в хеш-таблице conn_tab.
  • CVSS: 9.8 (CRITICAL), вектор CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H.
  • Условия атаки: Сетевой доступ, отсутствие необходимости в привилегиях и взаимодействии пользователя.
  • Эксплуатация: Публичные данные о подтверждённой эксплуатации в реальных атаках отсутствуют.
  • EPSS: 0,40% (процентиль 33,51%), что указывает на низкую вероятность эксплуатации в ближайший год.

Какие продукты и версии затронуты​


Уязвимость затрагивает ядра Linux, в которых включён модуль IPVS и используется механизм синхронизации соединений. Точный список версий определяется наличием исходного коммита 26ec037f9841 и отсутствием исправления a63d2dbaeb50a85d4c976b15a36e6b0c7113db5b.

  • Компонент: net/netfilter/ipvs/ip_vs_conn.c.
  • Функция: ip_vs_bind_dest().
  • Условие риска: Использование IPVS с флагом IP_VS_CONN_F_SYNC и наличием соединений с флагом IP_VS_CONN_F_ONE_PACKET.
  • Исправление: Внесено в stable-ветки ядра (см. ссылки на коммиты в источниках).

Причина уязвимости​


Причина дефекта кроется в логике привязки соединения к destination в функции ip_vs_bind_dest(). Когда destination добавляется после создания синхронизированного соединения, функция копирует флаги из destination в структуру соединения cp->flags.

Соединения с флагом IP_VS_CONN_F_ONE_PACKET не поддерживают синхронизацию. Если синхронизированное соединение, уже добавленное в хеш-таблицу, наследует этот флаг, механизм истечения срока действия ошибочно считает его одноразовым. В результате узел хеш-таблицы не удаляется, оставаясь указателем на освобождённую память struct ip_vs_conn.

Как работает атака​


Атакующий направляет трафик на балансировщик, использующий IPVS с синхронизацией. При определённой последовательности событий (создание соединения до добавления destination) синхронизированное соединение получает флаг IP_VS_CONN_F_ONE_PACKET.

После освобождения структуры соединения хеш-таблица содержит «висячие» указатели. При последующих операциях с хеш-таблицей (поиск, удаление) ядро обращается к освобождённой памяти. Это приводит к повреждению данных, падению ядра или, при успешном контроле над освобождённой памятью, к выполнению произвольного кода в контексте ядра.

Условия успешной эксплуатации​


Для успешной эксплуатации уязвимости необходимо соблюдение следующих условий:

  • В ядре загружен модуль ip_vs и настроен балансировщик нагрузки.
  • Включена синхронизация состояний IPVS (sync daemon) между узлами кластера.
  • Атакующий имеет сетевой доступ к портам, обслуживаемым IPVS.
  • В конфигурации используются правила, допускающие создание соединений с флагом IP_VS_CONN_F_ONE_PACKET.

Возможный сценарий атаки​


Сценарий начинается с отправки пакетов на балансировщик, где настроена синхронизация IPVS. На узле-источнике создаётся соединение, которое синхронизируется на узел-приёмник до того, как destination будет добавлен в таблицу.

Когда destination появляется, функция ip_vs_bind_dest() копирует флаги, включая IP_VS_CONN_F_ONE_PACKET, в уже хешированное соединение. При истечении таймаута соединение освобождается, но узел в хеш-таблице остаётся. Последующий запрос, попадающий в этот слот хеш-таблицы, вызывает обращение к освобождённой памяти, что приводит к сбое или компрометации системы.

Есть ли публичный эксплойт​


В доступных официальных источниках отсутствуют сведения о публичных эксплоитах, PoC или подтверждённой эксплуатации CVE-2026-80714 в реальных атаках. Наличие исправления в stable-ветках ядра подтверждает, что дефект был обнаружен и устранён разработчиками, но статус публичной доступности кода для атаки не раскрыт.

Признаки эксплуатации​


Специфичные индикаторы компрометации (IOC) для данной уязвимости в источниках не указаны. Общие признаки, требующие дополнительной проверки:

  • Записи в dmesg или journalctl о kernel panic, oops или segfault в модуле ip_vs.
  • Необъяснимые сбои балансировщика нагрузки или потеря соединений.
  • Аномальная активность в логах сетевых интерфейсов, связанных с IPVS.

Эти признаки неспецифичны и могут быть вызваны другими проблемами конфигурации или нагрузкой.

Как обнаружить атаку​


Для обнаружения потенциальной эксплуатации или последствий уязвимости рекомендуется:

  • Мониторинг логов ядра (dmesg, journalctl -k) на наличие ошибок в модуле ip_vs.
  • Проверка стабильности балансировщика: внезапные перезапуски или потеря сессий.
  • Анализ сетевых логов на предмет аномального трафика, направленного на порты IPVS.
  • Использование инструментов аудита ядра (например, auditd) для отслеживания подозрительных операций с памятью, если это поддерживается конфигурацией.

Как проверить свою версию​


Для проверки версии ядра и наличия исправления используйте следующие команды:

Bash:
uname -r
uname -a
cat /proc/version

Сравните полученную версию с релизами, содержащими коммит a63d2dbaeb50a85d4c976b15a36e6b0c7113db5b. Если версия ядра старше даты коммита и не содержит патча, система уязвима. Для точной проверки можно использовать git log в исходниках ядра или инструменты аудита пакетов дистрибутива.

Исправление​


Основным способом устранения уязвимости является обновление ядра Linux до версии, содержащей исправление. Патч был принят в stable-ветки ядра.

  • Обновите ядро до последней доступной версии для вашего дистрибутива.
  • Убедитесь, что модуль ip_vs пересобран или обновлён вместе с ядром.
  • После обновления перезагрузите систему для применения нового ядра.
  • Проверьте, что коммит a63d2dbaeb50a85d4c976b15a36e6b0c7113db5b присутствует в истории ядра (если доступно).

Временные меры защиты​


До применения обновления можно снизить риск следующими мерами:

  • Отключите синхронизацию IPVS (sync daemon), если это допустимо архитектурно.
  • Ограничьте сетевой доступ к портам, обслуживаемым IPVS, доверенным источникам.
  • Избегайте использования режима IP_VS_CONN_F_ONE_PACKET для критических сервисов.
  • Настройте мониторинг и алертинг на сбои модуля ip_vs для быстрого обнаружения аномалий.

Как проверить устранение уязвимости​


Для подтверждения применения исправления:

  • Проверьте версию ядра: uname -r.
  • Убедитесь, что версия соответствует релизу, содержащему патч.
  • Проверьте логи загрузки ядра на наличие ошибок в модуле ip_vs.
  • Проведите функциональное тестирование балансировщика нагрузки, чтобы убедиться в стабильной работе.
  • Используйте инструменты аудита (например, rpm -q kernel или dpkg -l linux-image-*) для проверки установленных пакетов.

Вывод​


CVE-2026-80714 представляет серьёзную угрозу для систем с балансировщиком нагрузки IPVS и синхронизацией состояний. Уязвимость может привести к удалённому выполнению кода или отказу в обслуживании.

Рекомендуется незамедлительно обновить ядро до исправленной версии. Если обновление невозможно, следует ограничить доступ к IPVS и отключить синхронизацию, а также усилить мониторинг на предмет аномалий в работе модуля.

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


  1. NVD — CVE-2026-80714
  2. FIRST EPSS — CVE-2026-80714
  3. ipvs: do not propagate one-packet flag to synced conns - kernel/git/stable/linux.git - Linux kernel stable tree
  4. ipvs: do not propagate one-packet flag to synced conns - kernel/git/stable/linux.git - Linux kernel stable tree
  5. ipvs: do not propagate one-packet flag to synced conns - kernel/git/stable/linux.git - Linux kernel stable tree
  6. ipvs: do not propagate one-packet flag to synced conns - kernel/git/stable/linux.git - Linux kernel stable tree
  7. ipvs: do not propagate one-packet flag to synced conns - kernel/git/stable/linux.git - Linux kernel stable tree
  8. ipvs: do not propagate one-packet flag to synced conns - kernel/git/stable/linux.git - Linux kernel stable tree
  9. ipvs: do not propagate one-packet flag to synced conns - kernel/git/stable/linux.git - Linux kernel stable tree
  10. ipvs: do not propagate one-packet flag to synced conns - kernel/git/stable/linux.git - Linux kernel stable tree

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


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