Продвинутый

Ubuntu не выпустила патч для 0day RCE в ядре Linux

Алексей Кузнецов
Алексей Кузнецов
Системный администратор4 ноября 2026 г.11 мин чтения

Обсуждение на Hacker News о задержке патча для критической уязвимости RCE в ядре Linux, которая всё ещё не исправлена в Ubuntu.

Ubuntu не выпустила патч для 0day RCE в ядре Linux

Обсуждение на Hacker News о задержке патча для критической уязвимости RCE в ядре Linux, которая всё ещё не исправлена в Ubuntu.

Что известно об уязвимости в ядре Linux

Что известно об уязвимости в ядре Linux

В обсуждении на Hacker News подняли тему задержки патча для критической уязвимости в ядре Linux. CVE-2026-98432 — это, судя по комментариям, уязвимость класса RCE: атакующий может выполнить код с привилегиями ядра, не имея предварительного доступа к системе. Для сервера это означает полный компрометацию хоста, а если на хосте запущены контейнеры — их побег и компрометацию всех соседних сервисов. Я не буду пересказывать неподтверждённые детали, а сосредоточусь на том, что можно проверить прямо сейчас.

CVE-2026-98432: суть проблемы

Из того, что обсуждается на форуме, уязвимость находится в сетевом стеке ядра и позволяет выполнить удалённый код без аутентификации. Точный вектор атаки пока не опубликован полностью, но класс проблемы понятен: ошибка в обработке пакетов или системных вызовов приводит к выполнению кода в режиме «ring 0».

С практической точки зрения, это одна из самых опасных категорий уязвимостей. Если злоумышленник получает выполнение кода в ядре, он обходит любые ограничения пользовательского пространства, включая seccomp, AppArmor и границы контейнеров. На сервере с Docker или LXC это означает, что взлом одного контейнера может привести к компрометации всего хоста.

Обновление ядра — это не замена лампочки, а переукладка фундамента под домом, в котором живут люди. Поэтому проверка версии и планирование обновления стоит начать заранее.

Проверить версию ядра можно командой:

bash
uname -r

И посмотреть подробности:

bash
cat /proc/version

Если вы используете Ubuntu LTS, ядро поставляется через метапакет linux-image-generic-hwe или аналогичный, в зависимости от релиза. Список установленных ядер:

bash
dpkg -l | grep linux-image

На момент написания патча в стабильных репозиториях Ubuntu нет. Это не значит, что уязвимости не существует — значит, Canonical ещё не завершила процесс проверки и выпуска обновления.

Почему Canonical не выпустила патч

Canonical следует процессу SRU (Stable Release Updates). Каждое обновление ядра для LTS проходит через репозиторий -proposed, где его тестируют на регрессии. Ядро — не обычный пакет: оно должно сохранять ABI-совместимость с внешними модулями (драйверами, файловыми системами, модулями безопасности), иначе после обновления могут перестать работать видеокарты, сетевые адаптеры или ZFS.

Во-первых, Canonical должна дождаться исправления из апстрима (основной ветки ядра Linux) или разработать свой бэкпорт. Во-вторых, фикс нужно протестировать на всех поддерживаемых версиях ядра, которые поставляются с разными релизами Ubuntu (например, 5.15, 6.1, 6.8 и более новые). В-третьих, обновление ядра требует перезагрузки, если не используется Canonical Livepatch, а это уже планирование простоев.

Сравнение с другими дистрибутивами не даёт однозначного ответа: Debian может выпустить патч быстрее за счёт меньшего количества тестируемых конфигураций, а RHEL — медленнее из-за строгой сертификации. Canonical выбирает баланс между скоростью и предсказуемостью, и в данном случае, судя по обсуждению, баланс смещён в сторону проверки.

Что можно сделать до выхода патча:

  • Ограничить доступ к уязвимому интерфейсу на уровне брандмауэра, если вектор атаки сетевой.
  • Временно отключить ненужные сетевые службы и модули ядра.
  • Установить мониторинг на аномальное поведение ядра и несанкционированные изменения в /proc и /sys.
  • Подписаться на рассылку безопасности Ubuntu, чтобы не пропустить выпуск патча.

Подробнее о текущем статусе патча можно почитать в материале Патч для 0day RCE в ядре Linux всё ещё не выпущен Ubuntu или в хронологии задержек Задержка патча Ubuntu для 0day RCE в Linux.

Какие системы находятся под угрозой

Какие системы находятся под угрозе

Уязвимость в ядре Linux не выбирает цель — она есть там, где запущена уязвимая версия ядра. Если вы используете Ubuntu, будь то сервер в стойке или виртуальная машина в облаке, первым делом нужно понять, попадает ли ваш релиз под угрозу, и как быстро это проверить без лишней суеты. Детали задержки патча обсуждались на Hacker News и собраны в материале Ubuntu не выпустила патч для 0day RCE в ядре Linux.

Ubuntu LTS и промежуточные выпуски

LTS-релизы (например, 22.04 Jammy и 24.04 Noble) получают обновления безопасности в течение пяти лет, а промежуточные выпуски — всего девять месяцев. Проблема в том, что патч для 0day RCE пока не вышел, поэтому системы на уязвимой версии ядра остаются открытыми до официального релиза из репозитория ubuntu-security.

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

Во-первых, проверьте, какая версия ядра сейчас запущена:

bash
uname -r

Пример вывода:

6.8.0-45-generic

Если в названии пакета встречается hwe, значит используется аппаратная поддержка (HWE) — ядро обновляется чаще, чем базовое для LTS. Убедитесь, что репозиторий безопасности подключен:

bash
grep -E 'security|updates' /etc/apt/sources.list

Ожидаемая строка:

deb http://archive.ubuntu.com/ubuntu/ jammy-security main restricted

Проверьте, не отключены ли автоматические обновления безопасности:

bash
cat /etc/apt/apt.conf.d/50unattended-upgrades

Если секция Unattended-Upgrade::Allowed-Origins закомментирована, патч не установится сам. Подробнее о текущем состоянии патча можно почитать здесь: Патч для 0day RCE в ядре Linux всё ещё не выпущен Ubuntu.

Контейнеры и виртуальные машины

Контейнеры и виртуальные машины относятся к разным категориям риска, и путать их нельзя.

Контейнер делит ядро с хостом. Если хост под управлением Ubuntu не пропатчен, уязвимость доступна и изнутри любого контейнера на этом хосте. Проверка изнутри контейнера покажет версию хоста:

bash
docker run --rm ubuntu:24.04 uname -r

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

Виртуальная машина работает с собственным ядром. Хост может быть пропатчен, а гостевая Ubuntu внутри VM — остаться уязвимой. Список машин в Proxmox, например, смотрим так:

bash
qm list

Или через libvirt:

bash
virsh list --all

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

Если вы используете виртуализацию с отдельным ядром на гостевой системе, проверяйте каждую ноду и каждую VM по отдельности. Обсуждение задержки патча на сообществе доступно здесь: Задержка патча Ubuntu для 0day RCE в Linux.

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

Временные меры защиты до выхода патча

Когда патча ещё нет, остаётся только снижать поверхность атаки и ловить признаки эксплуатации. Ниже — что можно сделать на уровне хоста и сети, не дожидаясь релиза Ubuntu.

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

Во-первых, нужно понять, какой именно интерфейс ядра уязвим. Если уязвимость проявляется через конкретный системный вызов или загружаемый модуль, проще всего ограничить к нему доступ.

Если уязвимый код находится в модуле ядра, который не нужен для работы сервера, выгрузите его и запретите загрузку (имена модуля и системного вызова ниже — примеры, подставьте актуальные для вашей уязвимости):

bash
sudo modprobe -r уязвимый_модуль
echo "install уязвимый_модуль /bin/true" | sudo tee /etc/modprobe.d/blacklist-уязвимость.conf

С практической точки зрения, сетевой уровень ограничивает круг потенциальных атакующих. Если уязвимость эксплуатируется по сети, закройте ненужные порты на межсетевом экране:

bash
sudo ufw default deny incoming
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable

Для контейнеризованных сред стоит ограничить системные вызовы через seccomp или AppArmor. Пример профиля AppArmor, который запрещает доступ к чувствительным интерфейсам ядра:

apparmor
#include <tunables/global>

profile /usr/bin/приложение flags=(attach_disconnected) {
  #include <abstractions/base>

  network inet stream,
  network inet6 stream,

  deny @{PROC}/sys/kernel/** r,
  deny @{PROC}/sys/vm/** r,

  capability,
  ptrace deny,
}

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

Мониторинг подозрительной активности

Пока патча нет, задача администратора — заметить эксплуатацию до того, как атакующий закрепится в системе. Для этого достаточно стандартного набора инструментов Linux.

Во-первых, настройте аудит системных вызовов. auditd позволяет фиксировать попытки доступа к уязвимым интерфейсам:

bash
sudo auditctl -a exit,always -F arch=b64 -S уязвимый_системный_вызов -k rce_monitor

Посмотреть записи можно так:

bash
sudo ausearch -k rce_monitor

Следите за логами ядра. Внезапные ошибки, паники и сегментационные сбои часто предшествуют попытке эксплуатации:

bash
sudo journalctl -k -p 3 -xb

С практической точки зрения, полезно отслеживать аномалии в сетевом трафике. Если уязвимость проявляется через сетевой стек, резкий рост входящих соединений на нестандартных портах — повод проверить хост:

bash
sudo ss -tunap | grep ESTAB

Для более глубокой видимости можно использовать eBPF и bpftrace, но это уже отдельная история. Начните с auditd и journald — этого достаточно для обнаружения большинства признаков активной эксплуатации.

Если мы посмотрим на обсуждение на Hacker News, многие администраторы отмечают, что временные меры не заменяют патч. Они только дают время. Поэтому как только Ubuntu выпустит обновление, примените его в первую очередь — см. Патч для 0day RCE в ядре Linux всё ещё не выпущен Ubuntu и Задержка патча Ubuntu для 0day RCE в Linux.

Что делать после выпуска обновления

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

Проверка версии ядра

Сначала убедитесь, что уязвимая версия ядра действительно установлена. В Ubuntu текущую версию можно посмотреть одной командой:

bash
uname -r

Вывод будет примерно таким:

6.5.0-27-generic

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

bash
dpkg -l | grep linux-image

Затем проверьте, есть ли доступные обновления для ядра:

bash
apt list --upgradable 2>/dev/null | grep linux-image

С практической точки зрения, я всегда сверяю версию ядра с Ubuntu Security Notices. Если в бюллетене указан номер, который выше установленного — патч уже доступен. Если нет — обновления ещё нет, и остаётся либо ждать, либо принимать меры по изоляции уязвимого узла. Подробнее о задержке с патчем можно почитать в связанных материалах: Патч для 0day RCE в ядре Linux всё ещё не выпущен Ubuntu и Задержка патча Ubuntu для 0day RCE в Linux.

План тестирования и развёртывания

Когда патч появится, не разворачивайте его сразу на всех серверах. Предсказуемость конфигураций — это не про скорость, а про отсутствие сюрпризов.

Во-первых, протестируйте обновление на тестовом стенде или хотя бы на одной некритичной ноде. Установите ядро:

bash
sudo apt update
sudo apt install linux-image-$(uname -r)

Перезагрузите сервер и проверьте, что система поднялась с новым ядром:

bash
sudo reboot
# после перезагрузки
uname -r

Во-вторых, после перезагрузки убедитесь, что критические сервисы стартовали. Я проверяю через systemd:

bash
systemctl status nginx
systemctl status docker
systemctl status postgresql

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

В-третьих, разворачивайте обновление волнами: сначала одна нода, потом группа, потом остальной кластер. Между волнами проверяйте мониторинг — Prometheus и Alertmanager должны молчать. Если алерты посыпались, останавливаете каток и разбираетесь.

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

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

bash
dmesg | grep -i error

Если вывод чист — инфраструктура снова в норме.

Часто задаваемые вопросы

Как проверить, уязвим ли мой сервер под управлением Ubuntu?

Сначала узнайте версию ядра: uname -r. Затем сравните её с версией, в[NBSP]которой Canonical выпустила исправление — эта информация публикуется в Ubuntu Security Notices (USN). Если патча ещё нет, команда apt update && apt list --upgradable | grep linux-image покажет, есть ли в[NBSP]репозиториях более новая версия ядра. Если нет — сервер остаётся под угрозой до выхода официального обновления.

Можно ли временно защитить сервер, не обновляя ядро?

Полноценной замены патчу нет, но можно снизить поверхность атаки. Во-первых, ограничьте доступ к[NBSP]сетевым сервисам через ufw или iptables, оставив только необходимые порты. Во-вторых, если уязвимость связана с[NBSP]сетевым стеком, отключите ненужные протоколы и модули ядра. С практической точки зрения, это не лечение, а лишь временное снижение риска до выхода официального обновления.

Защитят ли Docker и AppArmor от эксплуатации этой уязвимости?

Нет. Уязвимость класса RCE в[NBSP]ядре позволяет выполнить код в[NBSP]режиме ring 0, что обходит любые ограничения пользовательского пространства. AppArmor, seccomp и границы контейнеров не остановят атаку, если злоумышленник уже выполняет код внутри[NBSP]ядра. На сервере с[NBSP]Docker или LXC это означает реальную угрозу побега из контейнера и компрометации всего хоста.

Стоит ли ставить ядро из сторонних репозиториев или компилировать его вручную?

Я не рекомендую это делать на продакшене без тщательного тестирования. Сборка ядра из исходников или установка mainline-ветки ломает гарантии совместимости с[NBSP]метапакетами Ubuntu и может привести к тому, что система не загрузится после следующего обновления. Если Canonical предлагает Canonical Livepatch для вашего релиза — это более предсказуемый путь, чем ручная замена ядра.

Через сколько времени обычно выходит патч для таких уязвимостей?

Сроки зависят от того, была ли уязвимость под эмбарго и насколько сложен бэкпорт исправления в[NBSP]стабильной ветке Ubuntu. В[NBSP]среднем на выпуск патча уходит от нескольких дней до пары недель после публичного раскрытия. Лучший способ не пропустить обновление — подписаться на рассылку Ubuntu Security Notices и регулярно проверять вывод apt update.

Поделиться:TelegramX / TwitterVK

Читайте также