CVE-2026-98432: временный nftables-фильтр с автооткатом

Временная мера против CVE-2026-98432 уже развернута на 26 серверах. Ниже — порядок применения nftables‑фильтра: от проверки пакета ядра до отката и загрузки правила после перезапуска.
Команды рассчитаны на Ubuntu с nftables и systemd, для входящего трафика самого хоста. Для трафика, пересылаемого контейнерам или другим узлам, нужно отдельно выбрать цепочку фильтрации.
1. Проверьте статус исправления
Узнайте запущенное ядро:
uname -rНа странице Canonical найдите свой релиз и пакет ядра. Work in progress означает, что исправление готовится; указанная рядом версия — плановая, пакет еще не выпущен.
Если исправление уже доступно для вашей ветки, запланируйте обновление и загрузку в исправленное ядро. Временный фильтр нужен на период ожидания. Red Hat предлагает отбрасывать IPv4 TCP‑пакеты с IP‑options: это снижает экспозицию, но не заменяет исправление ядра.
2. Подготовьте один сервер и откат
Начните с одного узла. Сохраните действующие правила и подготовьте доступ к консоли хостера на случай потери SSH.
Посмотрите текущую конфигурацию:
(umask 077; sudo nft list ruleset > "$HOME/nft-before.txt")
sudo nft list table inet cve_2026_98432Ошибка об отсутствии таблицы на этом шаге ожидаема. Если таблица cve_2026_98432 уже существует, сначала разберитесь, кто ее установил. Повторно создавать ее и удалять чужое правило не нужно.
Подготовьте команду отката; выполняйте ее только при необходимости снять новую таблицу:
sudo nft delete table inet cve_2026_98432Она снимает только добавленный фильтр.
3. Подготовьте правило
Сохраните пример из бюллетеня Red Hat в файл cve-2026-98432.nft:
table inet cve_2026_98432 {
chain input {
type filter hook input priority -310; policy accept;
ip protocol tcp ip hdrlength > 5 counter drop
}
}Условие ip hdrlength > 5 относится к заголовку IPv4. Обычные TCP‑options, например MSS и timestamps, находятся в TCP‑заголовке и под это условие не попадают.
Проверьте синтаксис:
sudo nft --check --file cve-2026-98432.nftИсправьте ошибки до применения. Не очищайте существующие таблицы через flush ruleset.
4. Взведите автооткат и примените фильтр
До загрузки правила поставьте таймер на пять минут. Сначала убедитесь, что command -v nft возвращает полный путь к программе:
nft_bin=$(command -v nft)
sudo systemd-run --collect --unit=cve-98432-rollback --on-active=5m \
"$nft_bin" delete table inet cve_2026_98432
sudo systemctl is-active cve-98432-rollback.timerПродолжайте, только если таймер успешно создан и находится в состоянии active. Если имя службы занято или путь к программе не найден, сначала устраните причину.
Загрузите правило и проверьте его наличие:
sudo nft --file cve-2026-98432.nft
sudo nft list table inet cve_2026_984325. Проверьте доступ и сервисы
Откройте новое SSH‑подключение с другой машины. Затем проверьте прикладной трафик: HTTPS, API или реальное подключение клиентом вашего сервиса. Сравните прежние правила с сохраненной конфигурацией.
После успешной проверки отмените таймер и еще раз убедитесь, что таблица остается на месте:
sudo systemctl stop cve-98432-rollback.timer cve-98432-rollback.service
sudo nft list table inet cve_2026_98432Если таблицы уже нет, автооткат мог сработать.
Если связь нарушилась, дайте таймеру сработать либо удалите только эту таблицу через консоль.
После любого отката остановите таймер и его службу командой из предыдущего блока. Затем повторите процедуру с шага 4, заново взведя таймер.
6. Настройте загрузку и повторите на остальных узлах
Добавьте применение отдельной таблицы в действующую схему запуска firewall. Загрузчик фильтра должен добавлять только свою таблицу, сохраняя правила основного firewall. Если ими управляют ufw, Docker или другой менеджер, не включайте ради этой таблицы nftables.service с flush ruleset в конфигурации. Проверьте и обратный порядок: основной firewall при загрузке не должен стирать фильтр.
Перед перезагрузкой проверьте все измененные файлы загрузки через nft --check --file. Например, для штатной конфигурации:
sudo nft --check --file /etc/nftables.confВ согласованное окно перезагрузите пилот. После загрузки проверьте успешный запуск службы основного firewall, наличие новой таблицы и сохранность прежних таблиц, цепочек и правил по снимку ~/nft-before.txt; счетчики пакетов и динамические элементы наборов могут измениться. Затем откройте новое SSH‑подключение и проверьте сервис. После приемки пилота повторяйте процедуру на остальных узлах, с отдельным автооткатом для каждого.
После выпуска исправления обновите ядро и загрузитесь в него. Сопоставьте запущенную версию с исправленным пакетом своей ветки. Затем уберите загрузку временной таблицы из конфигурации и снова проверьте измененные файлы через nft --check --file. После этого удалите саму таблицу.
KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.