У жовтні 2026 року в ядрі Linux було виявлено критичну вразливість CVE-2026-98432 , яка отримала рейтинг 9.8 з 10 за шкалою CVSS. Вона впливає на обробку вхідних TCP-з’єднань IPv4 і за певних умов дозволяє зловмиснику отримати root-доступ до сервера віддалено — без пароля та без дій адміністратора.
Нижче описано, кого це стосується, як перевірити ваш сервер і як його захистити. Усі команди виконуються від імені root або з sudo.
Коротко про вразливість
- Що це: помилка типу «використання після звільнення» в коді, яка налаштовує 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 року. Виправлення з’являються майже щодня — перегляньте посилання в кінці цієї статті, щоб дізнатися про поточний стан.
| SYSTEM | Статус | Виправлене ядро |
|---|---|---|
| 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 |
| Рокі Лінукс, RHEL 8, 9, 10 | Виправлення поки що немає | Використовуйте тимчасовий захист |
| Oracle Linux 7–10 (UEK) | Виправлено | Через стандартне оновлення |
| SUSE / openSUSE Leap 16 | Виправлено | Через стандартне оновлення |
Крок 1. Перевірте, яке ядро ви використовуєте
Дізнайтеся версію запущеного ядра:
uname -r
Сам по собі номер версії нічого вам не говорить: дистрибутиви портують виправлення у власні ядра, не змінюючи базову версію. Надійніше перевірити журнал змін пакета ядра — якщо в ньому згадується номер CVE, виправлення вже встановлено.
Дебіан та Убунту:
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. Встановіть виправлене ядро
Зробіть резервну копію або знімок вашого сервера перед оновленням ядра.
Дебіан 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 and Ubuntu
[ -f /var/run/reboot-required ] && echo "Reboot required"
# AlmaLinux, Rocky, RHEL
needs-restarting -r
Після перезавантаження повторіть перевірку з кроку 1.
Крок 3. Тимчасовий захист, доки не стане доступним виправлене ядро
Ці заходи зменшують ризик, але не замінюють оновлення ядра.
Блокування тригерних пакетів
Атака використовує TCP-пакети з IP-опціями в заголовку IPv4. Вони практично ніколи не з'являються у звичайному трафіку, і RFC 7126 вже рекомендує їх відкидати. Правило nftables, наведене нижче, відкидає всі вхідні TCP-пакети IPv4 з опціями та не впливає на IPv6, UDP або ICMP. Воно працює разом з ufw та firewalld.
Встановіть nftables, якщо він ще не встановлений:
# Debian and 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
Цей параметр лише запобігає new Сокети 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, оновіть його до версії 26.10.31 або пізнішої. Попередню версію, 26.10.29, було відкликано її розробниками. Це оновлення вимикає MPTCP, але не виправляє ядро, тому оновлення ядра все ще потрібне.
Перевірте ще один параметр
Другий, вужчий шлях експлуатації вимагає ввімкнення міграції запитів. За замовчуванням вона вимкнена — переконайтеся в цьому:
sysctl net.ipv4.tcp_migrate_req
Команда повинна вивести 0.
Обмежте доступ до своїх послуг
Закрийте кожен порт брандмауера, до якого не потрібно мати доступ з Інтернету. По можливості відкривайте адміністративні служби — SSH, панелі керування, бази даних — лише для довірених IP-адрес.
Крок 4. Після встановлення виправленого ядра
- Перезавантажте сервер і скористайтеся командами з кроку 1, щоб підтвердити, що виправлене ядро працює.
- Ви можете видалити тимчасове правило:
systemctl disable --now cve-2026-98432.service
rm /etc/systemd/system/cve-2026-98432.service /etc/cve-2026-98432.nft
systemctl daemon-reload - Якщо вам потрібен MPTCP, відновіть налаштування: видалити
/etc/sysctl.d/99-disable-mptcp.confі біжиsysctl -w net.mptcp.enabled=1.
Якщо щось піде не так
Якщо ваш сервер не завантажується після оновлення ядра, підключіться через консоль VNC на панелі керування та виберіть попереднє ядро в меню завантаження. Якщо ви не впевнені, що можете зробити це самостійно, або вам потрібна допомога з оновленням, зверніться до нашої служби підтримки.