База Знаний Простые инструкции по работе с сервисом ProfitServer
Главная База Знаний Критическая уязвимость ядра Linux CVE-2026-98432: как проверить и обновить свой сервер

Критическая уязвимость ядра Linux CVE-2026-98432: как проверить и обновить свой сервер


В октябре 2026 года в ядре Linux нашли критическую уязвимость CVE-2026-98432 с оценкой 9,8 из 10 по шкале CVSS. Она затрагивает обработку входящих TCP-соединений по IPv4 и в определённых условиях позволяет удалённо получить права root на сервере — без пароля и без каких-либо действий со стороны администратора.

Ниже — кого это касается, как проверить свой сервер и как его защитить. Все команды выполняются от root или через sudo.

Коротко об уязвимости

  • Что это: ошибка use-after-free в коде установки TCP-соединений по IPv4, вызванная состоянием гонки. Атакующий отправляет специально подготовленные пакеты на любой открытый TCP-порт.
  • Какие ядра затронуты: все версии начиная с Linux 4.4, то есть практически любой актуальный дистрибутив.
  • IPv6 основной ошибкой не затронут.
  • Насколько это реально: исследователи Anthropic продемонстрировали рабочую цепочку эксплуатации, которая получила root-доступ на сервере с включённым Multipath TCP (MPTCP) примерно за 53 минуты. Код эксплойта не опубликован.
  • Атаки в реальной среде: по состоянию на 1 ноября 2026 года сообщений об эксплуатации нет. Это повод обновиться спокойно, но не повод откладывать.

Отдельный риск — сервисы на Go. Начиная с Go 1.24 серверные программы на Linux по умолчанию слушают порты через MPTCP, если ядро это позволяет. Администратор может даже не знать, что его сервер принимает такие соединения. Среди популярных программ так работает, например, Xray — разработчики уже выпустили экстренную версию v26.10.31, в которой MPTCP отключён по умолчанию.

Каждый VPS работает на собственном ядре, поэтому обновлять ядро внутри сервера нужно вам. Узлы виртуализации мы обновляем сами.

Есть ли исправление для вашей системы

Статус на 1 ноября 2026 года. Исправления выходят почти каждый день, актуальное состояние смотрите по ссылкам в конце статьи.

Система Статус Исправленное ядро
Debian 13 Исправлено linux 6.12.113-1
Debian 12 Исправлено linux 6.1.190-1
Ubuntu 22.04, 24.04, 26.04 Исправление готовится Пока нет — используйте временную защиту
AlmaLinux 8, 9, 10 Исправление в тестовом репозитории 8: 4.18.0-553.180.2.el8_10
9: 5.14.0-687.61.2.el9_8
10: 6.12.0-211.69.2.el10_2
Rocky Linux, RHEL 8, 9, 10 Исправления пока нет Используйте временную защиту
Oracle Linux 7–10 (UEK) Исправлено Через стандартное обновление
SUSE / openSUSE Leap 16 Исправлено Через стандартное обновление

Шаг 1. Проверьте, какое ядро у вас работает

Узнайте версию работающего ядра:

uname -r

Номер версии сам по себе ничего не говорит: дистрибутивы переносят исправления в свои ядра, не меняя основную версию. Надёжнее проверить журнал изменений пакета ядра — если в нём есть номер CVE, исправление уже установлено.

Debian и Ubuntu:

apt changelog linux-image-$(uname -r) 2>/dev/null | grep CVE-2026-98432

На Debian полную версию пакета работающего ядра также показывает команда uname -v: сравните её с таблицей выше.

AlmaLinux, Rocky Linux, RHEL, Oracle Linux:

rpm -q --changelog kernel-core-$(uname -r) | grep CVE-2026-98432

Если команда ничего не вывела — работающее ядро уязвимо.

Затем проверьте, какие службы принимают соединения через MPTCP. Именно такие серверы использовались в продемонстрированной атаке:

ss -lnMp

Пустой вывод означает, что MPTCP-слушателей нет.

Шаг 2. Установите исправленное ядро

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

Debian 12 и 13

Исправленные ядра лежат в репозитории безопасности. Убедитесь, что он подключён:

grep -r security.debian.org /etc/apt/sources.list /etc/apt/sources.list.d/

Если строка не нашлась, добавьте репозиторий security.debian.org для своей версии. Затем обновите систему:

apt update
apt full-upgrade
reboot

Ubuntu

Исправленные ядра пока не выпущены. Проверяйте наличие обновлений:

apt update
apt list --upgradable | grep linux-image

Если сервер подключён к Ubuntu Pro, можно проверить план исправления:

pro fix CVE-2026-98432 --dry-run

Когда исправление выйдет, установите его и перезагрузитесь:

apt update
apt full-upgrade
reboot

До этого момента обязательно примените временную защиту из шага 3.

AlmaLinux 8, 9, 10

Исправленные ядра пока доступны только в тестовом репозитории. Устанавливайте их, если готовы к этому на рабочем сервере, и обязательно сделайте снимок перед обновлением:

dnf install -y almalinux-release-testing
dnf update 'kernel*' --enablerepo=almalinux-testing
dnf config-manager --disable almalinux-testing
reboot

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

Rocky Linux и другие системы на базе RHEL

Исправления пока нет. Следить за его появлением можно так:

dnf --refresh updateinfo info --all --cves CVE-2026-98432

Когда исправление выйдет:

dnf update kernel
reboot

После обновления: перезагрузка обязательна

Новое ядро начинает работать только после перезагрузки. Проверить, нужна ли она:

# Debian и Ubuntu
[ -f /var/run/reboot-required ] && echo "Нужна перезагрузка"

# AlmaLinux, Rocky, RHEL
needs-restarting -r

После перезагрузки повторите проверку из шага 1.

Шаг 3. Временная защита, пока нет исправленного ядра

Эти меры снижают риск, но не заменяют обновление ядра.

Заблокируйте пакеты-триггеры

Атака использует TCP-пакеты с IP-опциями в заголовке IPv4. В обычном трафике они практически не встречаются, а рекомендация RFC 7126 и так советует их отбрасывать. Правило nftables ниже отбрасывает все входящие TCP-пакеты IPv4 с опциями и не затрагивает IPv6, UDP и ICMP. Оно работает параллельно с ufw и firewalld.

Установите nftables, если его нет:

# Debian и Ubuntu
apt install -y nftables

# AlmaLinux, Rocky, RHEL
dnf install -y nftables

Создайте файл с правилом:

cat > /etc/cve-2026-98432.nft <<'EOF'
table ip cve_2026_98432 {
    chain pre {
        type filter hook prerouting priority -300; policy accept;
        meta l4proto tcp ip hdrlength gt 5 counter drop
    }
}
EOF

Чтобы правило восстанавливалось после перезагрузки, создайте службу systemd:

cat > /etc/systemd/system/cve-2026-98432.service <<'EOF'
[Unit]
Description=Mitigation for CVE-2026-98432
After=network-pre.target nftables.service firewalld.service ufw.service

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStartPre=-/usr/sbin/nft delete table ip cve_2026_98432
ExecStart=/usr/sbin/nft -f /etc/cve-2026-98432.nft
ExecStop=/usr/sbin/nft delete table ip cve_2026_98432

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable --now cve-2026-98432.service

Проверьте, что правило загружено:

nft list table ip cve_2026_98432

Если вы перезапускаете службу nftables с общим правилом flush ruleset, после этого выполните systemctl restart cve-2026-98432.

Важно: не применяйте это правило в сетях с метками CIPSO (SELinux или Smack NetLabel) — там IP-опции используются штатно. Если сервер маршрутизирует трафик других машин, правило отбросит и их TCP-пакеты с IP-опциями.

Отключите MPTCP, если он вам не нужен

sysctl -w net.mptcp.enabled=0
echo "net.mptcp.enabled = 0" > /etc/sysctl.d/99-disable-mptcp.conf

Эта настройка запрещает только создание новых MPTCP-сокетов. Уже работающие службы продолжат слушать через MPTCP, поэтому перезапустите все службы из вывода ss -lnMp и убедитесь, что вывод стал пустым.

На AlmaLinux MPTCP по умолчанию выключен, если вы не включали его сами.

Отключите MPTCP в программах на Go

Для служб на Go 1.24 и новее можно отключить MPTCP переменной окружения. Например, для службы myservice:

systemctl edit myservice

Добавьте в открывшийся файл:

[Service]
Environment=GODEBUG=multipathtcp=0

И перезапустите службу:

systemctl restart myservice

Обновите Xray

Если на сервере работает Xray, обновите его до версии v26.10.31 или новее. Предыдущая версия v26.10.29 отозвана разработчиками. Это обновление отключает MPTCP, но не исправляет ядро, поэтому обновление ядра по-прежнему нужно.

Проверьте ещё одну настройку

Второй, более узкий путь эксплуатации требует включённой миграции запросов. По умолчанию она выключена — убедитесь в этом:

sysctl net.ipv4.tcp_migrate_req

Команда должна вывести 0.

Ограничьте доступ к сервисам

Закройте в файрволе все порты, которые не должны быть доступны из интернета. Административные сервисы — SSH, панели управления, базы данных — по возможности открывайте только для доверенных IP-адресов.

Шаг 4. После установки исправленного ядра

  1. Перезагрузите сервер и убедитесь командами из шага 1, что работает исправленное ядро.
  2. Временное правило можно удалить:
    systemctl disable --now cve-2026-98432.service
    rm /etc/systemd/system/cve-2026-98432.service /etc/cve-2026-98432.nft
    systemctl daemon-reload

  3. Если MPTCP вам нужен, верните настройку: удалите файл /etc/sysctl.d/99-disable-mptcp.conf и выполните sysctl -w net.mptcp.enabled=1.

Если что-то пошло не так

Если после обновления ядра сервер не загружается, подключитесь через VNC-консоль в панели управления и выберите предыдущее ядро в меню загрузчика. Если не уверены в своих силах или нужна помощь с обновлением — напишите в нашу поддержку.


Задайте вопрос

Мы всегда готовы ответить на Ваши вопросы в любое время суток.