CVE-2026-97417 в Linux Kernel: некорректное чтение TCP-опций и последствия для стабильности ядра

CVE: CVE-2026-97417
Продукт: Linux Kernel
Дата публикации: 24.09.2026
Критичность: HIGH
CVSS: 7.5 (3.1)
EPSS: нет данных; процентиль нет данных
CISA KEV: нет подтверждения в каталоге CISA KEV

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


В Linux Kernel исправлена ошибка в функции tcp_sack() подсистемы nf_conntrack. Быстрый путь обработки timestamp-only опции обращался к потоку TCP-опций как к выровненному по 4 байта, тогда как спецификация TCP не гарантирует такое выравнивание. Исправление заменяет прямое указательное чтение на get_unaligned_be32(), что устраняет риск чтения за пределами ожидаемой структуры или некорректного интерпретирования данных при обработке сетевых пакетов.

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


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

  • Тип ошибки: некорректное обращение к памяти при чтении TCP-опций из-за отсутствия проверки выравнивания
  • CVSS: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H — оценка 7.5, HIGH
  • Вектор атаки: удалённый доступ к сетевому интерфейсу, без необходимости авторизации или взаимодействия пользователя
  • Факт эксплуатации: в переданных источниках нет подтверждения реального массового использования или публичного эксплойта
  • EPSS: данные отсутствуют; процентиль отсутствует

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


Затронут Linux Kernel с подсистемой netfilter/nf_conntrack и обработкой TCP SACK. Исправление входит в стабильные ветки ядра.


Точный список версий дистрибутивов не раскрыт в переданных источниках. Для проверки актуальности ядра используйте команды из раздела «Проверка версии».

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


Ошибка находится в функции tcp_sack() файла net/netfilter/nf_conntrack_proto_tcp.c.

Быстрый путь для timestamp-only опции проверял длину и содержимое опции через прямое указательное чтение:

C:
*(__be32 *)ptr == htonl(...)

Это выражение предполагает, что указатель ptr выровнен по 4 байта. TCP-опции в потоке не гарантируют такого выравнивания, поэтому чтение могло происходить из позиции, не соответствующей ожидаемой структуре.

Исправление заменяет прямое обращение на get_unaligned_be32(ptr), которое безопасно читает значение без требования выравнивания и возвращает данные в host byte order. Из-за этого вызов htonl() для константы сравнения больше не нужен.

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


Атака реализуется через отправку TCP-пакетов с опциями, которые попадают в быстрый путь обработки timestamp-only опции в tcp_sack().

Путь данных выглядит так:

  1. Ядро получает TCP-пакет.
  2. Подсистема nf_conntrack обрабатывает TCP-опции.
  3. Функция tcp_sack() проверяет длину опции и содержимое timestamp-only блока.
  4. При выполнении условия length == TCPOLEN_TSTAMP_ALIGNED выполняется чтение 32-битного значения из ptr.
  5. Если выравнивание не соответствует ожиданиям, чтение может интерпретировать соседние байты как значение опции.

После сравнения с ожидаемой константой функция либо возвращает управление без дальнейшей обработки, либо переходит в обычный цикл обработки опций. Некорректное чтение само по себе не изменяет логику соединения, но нарушает предположение о структуре данных и может привести к непредсказуемому поведению ядра.

Исправление устраняет зависимость от выравнивания, заменяя прямое указательное чтение на безопасную функцию get_unaligned_be32().

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


Для взаимодействия с уязвимым кодом необходимо:

  • иметь возможность отправить TCP-пакеты в систему с установленным ядром Linux;
  • чтобы подсистема nf_conntrack была активна и обрабатывала TCP-соединения;
  • чтобы пакет содержал TCP-опции, попадающие в условие timestamp-only fast path.

Данные из источников не подтверждают необходимость локального доступа или специальных прав. Вектор CVSS указывает на удалённый доступ без авторизации: AV:N/AC:L/PR:N/UI:N/S:U.

Не раскрыто:

  • конкретные версии ядра, где ошибка присутствует;
  • точный набор пакетов, вызывающий сбой;
  • наличие публичного эксплойта или PoC.

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

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


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

Атакующий направляет TCP-пакет с опциями, где timestamp-only блок занимает ожидаемую длину. В tcp_sack() выполняется проверка длины и чтения 32-битного значения из ptr.

Если выравнивание ptr не соответствует 4 байтам, чтение может получить значение, отличное от ожидаемого константы. Это приводит к пропуску быстрого пути и переходу в обычный цикл обработки опций или к некорректной интерпретации данных.

В исходном коде исправление заменяет прямое указательное чтение на get_unaligned_be32(ptr). После этого значение читается независимо от выравнивания, а сравнение выполняется без htonl().

Последствия зависят от архитектуры и контекста чтения: возможны некорректные решения в обработке опций, нестабильность ядра или нарушение логики nf_conntrack. В переданных источниках нет подтверждения конкретных последствий для реальных систем.

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


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

Исправление опубликовано в стабильных ветках Linux Kernel:


Отсутствие публичного эксплойта в источниках не означает, что эксплуатация невозможна. Для оценки риска проверяйте версию ядра и наличие исправления в дистрибутиве.

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


Специфичные индикаторы компрометации для CVE-2026-97417 не раскрыты в предоставленных источниках.

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

  • аномальные сетевые соединения с TCP-опциями, особенно timestamp-only блоками;
  • неожиданные сбои или зависания ядра при высокой нагрузке на nf_conntrack;
  • рост количества ошибок в журналах netfilter и conntrack;
  • некорректные значения в статистике TCP SACK;
  • аномальные задержки обработки пакетов с опциями.

Эти признаки не являются подтверждёнными IOC для данной уязвимости. Они подходят только для общей диагностики сетевых проблем и стабильности ядра.

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


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

  • мониторинг журналов ядра на ошибки в netfilter, nf_conntrack и TCP;
  • анализ сетевых логов на аномальные TCP-опции с timestamp-only блоками;
  • проверку стабильности conntrack при нагрузке с опциями;
  • сравнение версии ядра с наличием исправления.

Команды проверки:

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

Для поиска ошибок в логах можно использовать стандартные утилиты: dmesg, journalctl. Конкретные шаблоны правил не раскрыты в источниках.

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


Проверьте версию ядра с помощью:

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

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

Пример для Debian/Ubuntu:

Bash:
apt list --installed 2>/dev/null | grep linux-image
apt-cache policy linux-image-generic

Пример для RHEL/CentOS:

Bash:
rpm -qa | grep kernel-core
yum list installed kernel-core

Замените имя пакета на актуальный пакет ядра вашего дистрибутива. Точные номера версий с исправлением не раскрыты в предоставленных источниках.

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


Основное исправление — обновление Linux Kernel до версии, содержащей commit d3bf9eae486490832bd08fd62ab0ac601f346bd4 или стабильные ветки с ним.


Для дистрибутивов:

  • установите обновлённый пакет ядра из официального репозитория;
  • перезагрузите систему после обновления;
  • проверьте версию ядра командой uname -r.

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

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


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

  • ограничить входной трафик с TCP-опциями на уровне сетевого фильтра;
  • отключить nf_conntrack, если это допустимо для архитектуры сети;
  • использовать NAT или прокси, которые нормализуют TCP-опции перед передачей в ядро;
  • снизить нагрузку на conntrack и ограничить количество одновременных соединений.

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

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


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

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

Убедитесь, что версия ядра соответствует обновлённой версии дистрибутива.

Проверьте наличие ошибок в логах:

Bash:
dmesg | grep -i conntrack
dmesg | grep -i tcp
journalctl -k | grep -i conntrack

Если ошибки прекратились и версия ядра обновлена, исправление применено. Для подтверждения наличия конкретного commit в ядре можно использовать:

Bash:
git log --oneline | grep d3bf9eae486490832bd08fd62ab0ac601f346bd4

Команда применима, если исходники ядра доступны локально.

Вывод​


CVE-2026-97417 — ошибка в Linux Kernel, связанная с некорректным чтением TCP-опций в функции tcp_sack(). Исправление заменяет прямое указательное чтение на get_unaligned_be32(), устраняя зависимость от выравнивания.

Обновление ядра до версии с commit d3bf9eae486490832bd08fd62ab0ac601f346bd4 является основным способом устранения риска. До обновления используйте меры снижения нагрузки на nf_conntrack и мониторинг сетевых логов.

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

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


  1. NVD — CVE-2026-97417
  2. netfilter: nf_conntrack: use get_unaligned_be32() in tcp_sack() - kernel/git/stable/linux.git - Linux kernel stable tree
  3. netfilter: nf_conntrack: use get_unaligned_be32() in tcp_sack() - kernel/git/stable/linux.git - Linux kernel stable tree
  4. netfilter: nf_conntrack: use get_unaligned_be32() in tcp_sack() - kernel/git/stable/linux.git - Linux kernel stable tree
  5. CVEs — The Linux Kernel documentation

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


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