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

Тестовая средаСемейство RHELAlmaLinux 9.8LightsailЯдро 5.14.0-687.55.1.el9_8 → 5.14.0-687.64.1.el9_8Проверено 2026-11-03
Строки версий и номер порта SSH — примерные значения; только исправленное ядро 5.14.0-687.64.1.el9_8 указано по объявлению AlmaLinux

CVE-2026-98432 — уязвимость ядра Linux, при которой код ядра, принимающий TCP-соединения по IPv4, повторно читает уже освобождённую память; команда CVE ядра Linux оценила её как Critical. Поскольку уязвимость можно атаковать удалённо без аутентификации, мы обновили сервер Lightsail на AlmaLinux 9.8 с Nginx и Apache до пакетов исправленного ядра, перезагрузили его и проверили патч по версии работающего ядра.

1️⃣ Уязвимость ядра Linux CVE-2026-98432: как устроена ошибка и что она затрагивает

Когда приходит запрос на TCP-соединение (SYN) с параметрами IPv4, ядро хранит копию этих параметров вместе с ожидающим соединением, чтобы вернуть их в ответе (SYN-ACK). Когда соединение установлено, эта копия без дублирования передаётся прямо в сокет нового соединения.

Если клиент тем временем снова отправит SYN, другой процессор может как раз собирать SYN-ACK с теми же параметрами. Если в этот момент новое соединение закроется, а ядро сразу освободит память параметров, код, собиравший SYN-ACK, прочитает уже освобождённую память — это use-after-free.

Этот код выполняется на этапе, когда ядро обрабатывает запрос на соединение, ещё до того как приложение увидит соединение. Поэтому, какая бы служба ни открыла порт, если он слушает по TCP IPv4, атака может достичь его удалённо без учётных данных, а оценка по CVSS 3.1 составляет 9.8.

Ошибка существует с Linux 4.4, поэтому затронуто большинство серверов на Linux. Среди блюпринтов Lightsail руководство AWS называет AlmaLinux 9, CentOS Stream 9, Debian, openSUSE Leap, Ubuntu, Amazon Linux 2 и Amazon Linux 2023. В объявлении AlmaLinux затронутыми названы версии 8, 9 и 10, а блюпринты приложений Lightsail, такие как WordPress и LAMP, тоже работают на Debian или Ubuntu и поэтому также затронуты.

FreeBSD и Windows Server, которые не используют ядро Linux, не затронуты.

Серверам с выключенным MPTCP (Multipath TCP) патч тоже нужен. Опубликованная атака была нацелена на серверы с открытым слушателем MPTCP, но сама ошибка находится в обычном коде TCP для IPv4, поэтому в объявлении AlmaLinux сказано, что системы без MPTCP тоже нужно исправить.

Исправленное ядро освобождает память параметров только после окончания периода ожидания RCU (grace period), поэтому память сохраняется, пока другой процессор читает параметры, собирая SYN-ACK.

🧩 CVE-2026-98432 use-after-free 흐름
설명 다이어그램
🔍 단계
🌐 클라이언트
📨SYN + IPv4 옵션
🔁SYN 다시 보냄
➜
🐧 커널
🧾IPv4 옵션 사본대기 중인 연결과 함께 보관복제 없이 새 연결의 소켓으로 넘어감새 연결이 닫히며 곧바로 해제RCU 유예 시간이 지난 뒤 해제
⚙️CPU 1새 연결을 맡음새 연결을 닫으며 옵션 해제새 연결을 닫고 해제는 미룸
⚙️CPU 2같은 옵션으로 SYN-ACK 만드는 중해제된 메모리를 읽음읽기를 마친 뒤 해제됨
SYN에 붙은 IPv4 옵션 사본을 대기 중인 연결에 보관합니다.
사본이 새 소켓으로 넘어간 사이, CPU 2가 같은 옵션으로 SYN-ACK를 만듭니다.
CPU 1이 연결을 닫으며 옵션을 해제하고, CPU 2는 해제된 메모리를 읽습니다.
해제를 RCU 유예 시간 뒤로 미뤄, CPU 2가 다 읽은 뒤에 해제합니다.

2️⃣ Проверка версии ядра Linux: исправлено ли ядро

Нужен ли патч, зависит от версии работающего ядра, поэтому перед обновлением мы сначала проверили дистрибутив и версию ядра.

cat /etc/os-release
NAME="AlmaLinux"
VERSION="9.8 (Olive Jaguar)"
ID="almalinux"
ID_LIKE="rhel centos fedora"
VERSION_ID="9.8"
PLATFORM_ID="platform:el9"
PRETTY_NAME="AlmaLinux 9.8 (Olive Jaguar)"
ANSI_COLOR="0;34"
LOGO="fedora-logo-icon"
CPE_NAME="cpe:/o:almalinux:almalinux:9::baseos"
HOME_URL="https://almalinux.org/"
DOCUMENTATION_URL="https://wiki.almalinux.org/"
BUG_REPORT_URL="https://bugs.almalinux.org/"

ALMALINUX_MANTISBT_PROJECT="AlmaLinux-9"
ALMALINUX_MANTISBT_PROJECT_VERSION="9.8"
REDHAT_SUPPORT_PRODUCT="AlmaLinux"
REDHAT_SUPPORT_PRODUCT_VERSION="9.8"
SUPPORT_END=2032-06-01
uname -r
5.14.0-687.55.1.el9_8.x86_64
nft --version
-bash: nft: command not found

Дистрибутив — AlmaLinux 9.8, работающее ядро — 5.14.0-687.55.1.el9_8. Команды nft, которую использует временное правило блокировки, тоже не было, значит пакет nftables не был установлен.

rpm -q kernel
kernel-5.14.0-611.30.1.el9_7.x86_64
kernel-5.14.0-687.49.1.el9_8.x86_64
kernel-5.14.0-687.55.1.el9_8.x86_64

[rpm -q kernel] выводит список установленных ядер, но до перезагрузки реально работает только одно — то, которое показывает [uname -r]. Сравните эту версию с исправленной версией из объявления AlmaLinux.

ДистрибутивВерсия исправленного ядра (эта версия или новее)
AlmaLinux 8kernel-4.18.0-553.182.1.el8_10
AlmaLinux 9kernel-5.14.0-687.64.1.el9_8
AlmaLinux 10kernel-6.12.0-211.72.1.el10_2

5.14.0-687.55.1.el9_8 ниже исправленной версии для AlmaLinux 9 — 5.14.0-687.64.1.el9_8, поэтому требовалось обновление.

Чтобы понять, открыт ли путь для атаки, мы проверили слушающие TCP-порты IPv4 и состояние MPTCP.

ss -lnt4
State  Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0      128          0.0.0.0:22        0.0.0.0:*
LISTEN 0      511          0.0.0.0:443       0.0.0.0:*
LISTEN 0      511          0.0.0.0:80        0.0.0.0:*
sysctl net.mptcp.enabled
net.mptcp.enabled = 0
ss -lnM
State Recv-Q Send-Q Local Address:Port Peer Address:Port

TCP-порты IPv4, которые слушали на всех адресах (0.0.0.0), — это 80 и 443 веб-сервера и 22 для SSH.

[net.mptcp.enabled] был равен 0, и сокетов MPTCP не было, поэтому путь MPTCP, использованный в опубликованной атаке, был закрыт. Но ошибка начинается с обычных TCP-соединений по IPv4, поэтому серверу, который слушает три порта IPv4, патч всё равно нужен.

3️⃣ Обновление ядра Linux: семь пакетов ядра и перезагрузка

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

🔲 Симулятор снимков Lightsail

📍 Lightsail › 인스턴스 › AlmaLinux-9-1 › 스냅샷
AmazonLightsail문서 검색홈example (000000000000)▼
보안 업데이트를 권장합니다.

Linux 기반 블루프린트를 사용하는 인스턴스에 취약점(CVE-2026-98432)이 발생할 수 있습니다. 인스턴스가 영향을 받는지 확인하고 사용 중인 Linux 배포판에 최신 보안 업데이트를 적용하는 것이 좋습니다.

자세히 알아보기
AlmaLinux-9-1 정보
삭제재부팅중지
2 GB RAM, 2 vCPU, 60 GB SSD 플랜 변경
알마리눅스
AWS 리전
버지니아, 영역 A
(us-east-1a)
인스턴스 유형
범용
네트워킹 유형
듀얼 스택
네트워킹 유형 변경
고정 IP 주소
203.0.113.10
프라이빗 IPv4 주소
192.0.2.10
퍼블릭 IPv6 주소
2001:db8:1234:5678::a1b2
인스턴스 상태
실행 중
시스템 상태 확인
통과됨
인스턴스 상태 확인
통과됨
연결지표스냅샷스토리지네트워킹도메인고급도움말 및 지원
수동 스냅샷

스냅샷을 생성하여 인스턴스, 해당 시스템 디스크 및 연결된 디스크를 백업할 수 있습니다.

스냅샷을 생성 중…“”
2026년 11월 3일, 20:01 (UTC+0:00)“AlmaLinux-9-1-1762200000”
1 스냅샷 중 1 표시
자동 스냅샷
자동 스냅샷이 활성화됨

일일 스냅샷 시간은 오전 5:00 GMT+0입니다.Amazon은 가장 최근의 스냅샷 7개를 저장합니다.

🔲 Проверка обновления ядра Linux и перезагрузки

Исправленную версию ядра, опубликованную в репозитории, мы проверили списком dnf.

dnf --showduplicates list available kernel kernel-core kernel-modules kernel-modules-core kernel-tools kernel-tools-libs kernel-headers
kernel.x86_64                 5.14.0-687.64.1.el9_8   baseos
kernel-core.x86_64            5.14.0-687.64.1.el9_8   baseos
kernel-modules.x86_64         5.14.0-687.64.1.el9_8   baseos
kernel-modules-core.x86_64    5.14.0-687.64.1.el9_8   baseos
kernel-tools.x86_64           5.14.0-687.64.1.el9_8   baseos
kernel-tools-libs.x86_64      5.14.0-687.64.1.el9_8   baseos
kernel-headers.x86_64         5.14.0-687.64.1.el9_8   appstream
dnf download kernel-core-5.14.0-687.64.1.el9_8

Скачивает в текущую папку только файл пакета kernel-core и не устанавливает его.

rpm -Kv kernel-core-5.14.0-687.64.1.el9_8.x86_64.rpm
    V4 RSA/SHA256 Signature, key ID b86b3716: OK
rpm -qp --changelog kernel-core-5.14.0-687.64.1.el9_8.x86_64.rpm | grep CVE-2026-98432
- ipv4: free inet_opt and ireq_opt after an RCU grace period (CKI Backport Bot) [RHEL-295635] {CVE-2026-98432}

Подпись была OK, а в журнале изменений была строка с исправлением CVE-2026-98432. В бюллетенях безопасности dnf (updateinfo), которые мы проверили 3 ноября, этого CVE ещё не было, поэтому получить это ядро через [dnf upgrade --security] было нельзя.

Поэтому мы установили семь пакетов ядра, указав и версию.

dnf install -y kernel-5.14.0-687.64.1.el9_8 kernel-core-5.14.0-687.64.1.el9_8 kernel-modules-5.14.0-687.64.1.el9_8 kernel-modules-core-5.14.0-687.64.1.el9_8 kernel-tools-5.14.0-687.64.1.el9_8 kernel-tools-libs-5.14.0-687.64.1.el9_8 kernel-headers-5.14.0-687.64.1.el9_8
================================================================================
 Package                Architecture Version                    Repository    Size
================================================================================
Installing:
 kernel                 x86_64    5.14.0-687.64.1.el9_8      baseos       1.1 M
 kernel-core            x86_64    5.14.0-687.64.1.el9_8      baseos        17 M
 kernel-modules         x86_64    5.14.0-687.64.1.el9_8      baseos        40 M
 kernel-modules-core    x86_64    5.14.0-687.64.1.el9_8      baseos        31 M
Upgrading:
 kernel-headers         x86_64    5.14.0-687.64.1.el9_8      appstream    2.6 M
 kernel-tools           x86_64    5.14.0-687.64.1.el9_8      baseos       1.3 M
 kernel-tools-libs      x86_64    5.14.0-687.64.1.el9_8      baseos       1.1 M
Removing:
 kernel                 x86_64    5.14.0-611.30.1.el9_7      @baseos        0
 kernel-core            x86_64    5.14.0-611.30.1.el9_7      @baseos       64 M
 kernel-modules         x86_64    5.14.0-611.30.1.el9_7      @baseos       33 M
 kernel-modules-core    x86_64    5.14.0-611.30.1.el9_7      @baseos       27 M

Transaction Summary
================================================================================
Install  4 Packages
Upgrade  3 Packages
Remove  4 Packages

Total download size: 94 M

Complete!

Были установлены четыре новых пакета ядра, обновлены три пакета kernel-headers, kernel-tools и kernel-tools-libs, а другие пакеты не изменились. Из-за параметра [installonly_limit=3], который хранит до трёх установленных ядер, были удалены четыре пакета самого старого ядра 5.14.0-611.30.1.el9_7; от загрузки до завершения прошло 74 секунды.

Официальная команда из объявления AlmaLinux заново получает данные репозиториев, а затем обновляет все пакеты, для которых есть обновления.

sudo dnf clean metadata && sudo dnf upgrade

Поскольку вместе с ядром обновляются и другие пакеты, порядок обновления всей версии дистрибутива описан в статье Обновление Alma Linux: 9.4 → 9.8 в LightSail.

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

systemctl reboot

После того как сервер снова включился, мы по очереди проверили работающее ядро, установленные ядра и ядро по умолчанию.

uname -r
5.14.0-687.64.1.el9_8.x86_64
rpm -q kernel
kernel-5.14.0-687.49.1.el9_8.x86_64
kernel-5.14.0-687.55.1.el9_8.x86_64
kernel-5.14.0-687.64.1.el9_8.x86_64
grubby --default-kernel
/boot/vmlinuz-5.14.0-687.64.1.el9_8.x86_64

Сервер снова включился меньше чем через минуту после команды перезагрузки, и работающее ядро, и ядро по умолчанию для следующей загрузки сменились на 5.14.0-687.64.1.el9_8. Прежнее ядро 5.14.0-687.55.1.el9_8 осталось, поэтому если с новым ядром возникнут проблемы, ядро по умолчанию можно вернуть.

ПараметрДо патчаПосле патча
Работающее ядро (uname -r)5.14.0-687.55.1.el9_85.14.0-687.64.1.el9_8
Ядро по умолчанию (grubby)5.14.0-687.55.1.el9_85.14.0-687.64.1.el9_8
Установленные ядра (rpm -q kernel)5.14.0-611.30.1.el9_7, 5.14.0-687.49.1.el9_8, 5.14.0-687.55.1.el9_85.14.0-687.49.1.el9_8, 5.14.0-687.55.1.el9_8, 5.14.0-687.64.1.el9_8

4️⃣ Временная блокировка до перезагрузки: правила nft и их ограничения

Если перезагрузить сервер сразу нельзя, до установки исправленного ядра можно временным правилом заблокировать пакеты, которые запускают ошибку. Команды этого раздела мы сами не выполняли; они взяты из официальных рекомендаций (объявлений AlmaLinux и AWS).

На сервере Lightsail с AlmaLinux 9.8, Nginx и Apache перезагрузка занимает всего несколько минут, поэтому мы сразу обновили ядро без временной блокировки.

Ошибка запускается только запросами на TCP-соединение с параметрами IPv4. Обычный трафик почти не использует параметры IPv4, поэтому если блокировать только TCP-пакеты IPv4 с параметрами, обычные соединения продолжат работать как прежде.

sudo dnf install -y nftables

Команда nft входит в пакет nftables, который устанавливается вместе с firewalld. Если на вашем сервере этой команды нет, сначала установите пакет.

sudo nft -f - <<'EOF'
add table ip cve_2026_98432
delete table ip cve_2026_98432
table ip cve_2026_98432 {
    chain prerouting {
        type filter hook prerouting priority -300; policy accept;
        meta l4proto tcp ip hdrlength > 5 counter drop
    }
}
EOF

Создаёт таблицу, которая на этапе prerouting отбрасывает TCP-пакеты с длиной заголовка IPv4 больше 5, то есть пакеты с параметрами IPv4. Это правило AlmaLinux проверила на 8, 9 и 10; его можно использовать вместе с firewalld и безопасно запускать несколько раз.

sudo nft list table ip cve_2026_98432

Проверяет, что правило добавлено; значение counter в выводе — число пакетов, отброшенных к этому моменту.

sudo nft delete table ip cve_2026_98432

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

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

Это правило не подходит серверам с приложениями, которые полагаются на параметры IPv4. Пример — сети с метками безопасности CIPSO (NetLabel), которые передаются в параметрах IPv4; в конфигурации по умолчанию они не используются.

Правило защищает хост и контейнеры, получающие трафик через хост (режим по умолчанию в Podman и Docker). Трафик, которым обмениваются контейнеры на одном хосте, может обойти это правило.

В Debian, Ubuntu и openSUSE используйте однострочное правило iptables из руководства AWS. В ядрах AlmaLinux 9 и CentOS Stream 9 нет модуля u32, который использует это правило, поэтому там применяйте правило nft выше.

sudo iptables -I INPUT 1 -p tcp -m u32 --u32 '0>>24&0x0f=6:15' -j DROP

Выражение u32 читает поле длины заголовка IPv4; если значение больше 5, у пакета есть параметры IPv4. После установки исправленного ядра удалите это правило командой ниже.

sudo iptables -D INPUT -p tcp -m u32 --u32 '0>>24&0x0f=6:15' -j DROP

Закрыть в брандмауэре Lightsail неиспользуемые порты и ограничить остальные доверенными IP-адресами — ещё одна мера, которую рекомендует руководство AWS.

🔢 FAQ & рекомендуемые материалы

В объявлениях AlmaLinux и AWS говорится, что основная проблема этой уязвимости не затрагивает соединения по IPv6 и временное правило для них не нужно. Но даже сервер, который, как вы думали, использует только IPv6, уязвим для атаки через TCP-порт IPv4, если SSH или веб-сервер слушает хотя бы один такой порт, поэтому проверьте это командой [ss -lnt4] и всё равно установите патч ядра.

В объявлении AlmaLinux говорится, что похожая проблема возникает, если включена миграция сокетов TCP-запросов (параметр net.ipv4.tcp_migrate_req или BPF-программа, которая переносит запросы). По умолчанию этот параметр выключен; если вы его включили, обновитесь до исправленного ядра, а затем проверьте обновления объявления AlmaLinux.

В руководстве AWS говорится, что поддержка Debian 11 и openSUSE Leap 15 закончилась и они могут не получать обновления ядра. AWS рекомендует сначала применить к таким серверам временное правило брандмауэра и запланировать переход на инстанс с поддерживаемой версией.

🔗 Рекомендуемые материалы
Другой ответ на CVE: OpenSSH Уязвимость OpenSSH CVE-2024-6387: временная блокировка и установка патча Уязвимость OpenSSH CVE-2024-6387 использует сигнал тревоги, который срабатывает, если подключившаяся сторона не завершает вход за 120 секунд. Мы описали порядок: отключить сигнал, чтобы закрыть срочную брешь, исправить код обновлением, а затем вернуть настройку. Читать → Разбор уязвимости OpenSSH CVE-2024-6387

ℹ️ О партнёрских ссылках
Материалы этого сайта содержат партнёрские ссылки. Если посетитель покупает товар или услугу по такой ссылке, сайт получает комиссию от продавца. При этом сумма, которую платит покупатель (при акционных скидках сумма снижается ↓), не увеличивается. Указанные цены, скидки и наличие актуальны на момент написания и могут отличаться, поэтому перед покупкой уточняйте их у продавца. Товары выбираются и оцениваются по нашим собственным критериям, а комиссия не влияет ни на порядок, ни на содержание обзоров.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Докажите, что вы человек: 7   +   6   =