CVE-2026-92489 в Linux Kernel: double-free в xfrm_dev_direct_output()

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

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


В подсистеме XFRM ядра Linux обнаружена ошибка управления памятью. Функция xfrm_dev_direct_output() освобождает skb повторно, когда local_out() возвращает значение не равное 1 и netfilter отбрасывает пакет. Ошибка приводит к double-free и повреждению состояния ядра.

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


Уязвимость затрагивает сетевой стек Linux и проявляется при совместной работе XFRM с netfilter. Сбой происходит в обработке skb после сброса connection tracking.

  • Тип ошибки: double-free skb в xfrm_dev_direct_output()
  • CVSS 3.1: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H (9.8)
  • Доступность: удалённая, без привилегий и взаимодействия с пользователем
  • EPSS: 0,463% (процентиль 39,25%)
  • Статус эксплойта: не подтверждён в предоставленных источниках

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


Затронута подсистема XFRM ядра Linux. Конкретные версии дистрибутивов и номера пакетов в предоставленных источниках не указаны.


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


В xfrm_dev_direct_output() после вызова local_out() проверяется возвращаемое значение. Значение, отличное от 1, означает, что skb была потреблена или её владение перешло другому компоненту.

Код продолжает освобождать skb через kfree_skb(), даже когда владение уже передано. Это вызывает двойное освобождение памяти и повреждает структуру данных ядра.

Исправление возвращает результат local_out() напрямую, что соответствует обработке владения в xfrm_output_resume().

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


Атака требует прохождения пакета через XFRM-путь с включённым netfilter. Пакет должен быть таким, чтобы netfilter отбросил его и вызвал nf_reset_ct(skb).

После сброса stateful inspection функция local_out() возвращает значение не равное 1. В уязвимой версии xfrm_dev_direct_output() вызывает kfree_skb(), хотя skb уже принадлежит другому компоненту.

Двойное освобождение повреждает память ядра и может привести к потере контроля над системой.

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


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

  • Включённый netfilter в системе
  • Работающая подсистема XFRM, например IPsec или другие механизмы шифрования/маршрутизации пакетов
  • Пакет, отбрасываемый netfilter, что вызывает nf_reset_ct(skb)
  • local_out() возвращает значение не равное 1
  • Уязвимая версия ядра Linux с ошибкой в xfrm_dev_direct_output()

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


Атакующий отправляет специально подготовленный сетевой пакет на систему с включённым netfilter и XFRM.

Пакет проходит через nf_reset_ct(), после чего local_out() возвращает значение не равное 1. В уязвимой версии xfrm_dev_direct_output() вызывает kfree_skb() повторно, что приводит к double-free.

Повреждение памяти ядра может быть использовано для выполнения произвольного кода в контексте ядра.

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


В предоставленных источниках нет информации о публичном эксплойте, PoC или подтверждённой эксплуатации.

  • PoC: не указан
  • Техническое описание атаки: доступно в commit messages и diff
  • Подтверждённая эксплуатация: не подтверждена
  • Исправление: доступно в stable commits ядра Linux

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


Специфичные IOC для этой уязвимости не указаны в предоставленных источниках.

Неспецифичные точки контроля:

  • Аномальные сетевые запросы к системе с включённым netfilter и XFRM
  • Повышенная нагрузка на ядро при обработке пакетов
  • Ошибки в журналах ядра, связанные с памятью или сетевым стеком
  • Неожиданные изменения конфигурации netfilter или XFRM

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


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

  • Мониторинг журналов ядра на ошибки памяти и сетевые сбои
  • Анализ сетевых логов для выявления аномальных пакетов, проходящих через netfilter
  • Проверка конфигурации XFRM и netfilter на предмет нештатных изменений
  • Сравнение версии ядра с известными уязвимыми версиями

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


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

  • uname -r — показывает краткую версию ядра
  • uname -a — показывает полную информацию о системе и ядре
  • cat /proc/version — показывает версию ядра из файла /proc/version

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


Для устранения уязвимости необходимо обновить ядро Linux до версии, содержащей исправление.


Обновите ядро через пакетный менеджер дистрибутива или установите патч вручную.

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


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

  • Отключить netfilter, если это допустимо для архитектуры системы
  • Ограничить доступ к системе с включённым XFRM и netfilter
  • Удалить лишние правила netfilter, которые могут вызывать nf_reset_ct()
  • Мониторинг сетевых запросов на предмет аномальной активности

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


После обновления ядра проверьте:

  • Версию ядра с помощью uname -r или cat /proc/version
  • Наличие исправления в исходном коде xfrm_dev_direct_output()
  • Отсутствие ошибок в журналах ядра при обработке пакетов
  • Функциональность XFRM и netfilter для подтверждения корректной работы

Вывод​


CVE-2026-92489 представляет серьёзную угрозу для систем с включённым netfilter и XFRM. Ошибка double-free в xfrm_dev_direct_output() может быть использована для получения контроля над системой.

Обновление ядра до версии с исправлением является основным способом устранения уязвимости. До обновления рекомендуется ограничить доступ к системе и мониторить сетевую активность.

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


  1. NVD — CVE-2026-92489
  2. FIRST EPSS — CVE-2026-92489
  3. xfrm: Fix skb double-free in xfrm_dev_direct_output() - kernel/git/stable/linux.git - Linux kernel stable tree
  4. xfrm: Fix skb double-free in xfrm_dev_direct_output() - kernel/git/stable/linux.git - Linux kernel stable tree
  5. xfrm: Fix skb double-free in xfrm_dev_direct_output() - kernel/git/stable/linux.git - Linux kernel stable tree
  6. xfrm: Fix skb double-free in xfrm_dev_direct_output() - kernel/git/stable/linux.git - Linux kernel stable tree
  7. xfrm: Fix skb double-free in xfrm_dev_direct_output() - kernel/git/stable/linux.git - Linux kernel stable tree
  8. CVEs — The Linux Kernel documentation

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


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