Canonical выпустила обновления ядра Ubuntu, закрывающие как минимум 17 уязвимостей. Обновления вышли через месяц после предыдущей партии, в которой исправлялись две уязвимости высокой опасности. Среди новых — состояние гонки в подсистеме NFC и ошибка в драйвере гибких дисков.

Разберём, чем опасны эти уязвимости, как быстро реагировать и что проверить после обновления.

Что такое состояние гонки

Состояние гонки (race condition) возникает, когда два потока обращаются к общим данным без должной синхронизации. Результат зависит от порядка выполнения, и его трудно воспроизвести. В ядре это может привести к использованию памяти после освобождения (use-after-free).

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

# проверить версию ядра
uname -r
# посмотреть журнал на предмет ошибок
journalctl -k -b -p err | tail -30
dmesg | grep -iE "nfc|floppy|use-after-free" | head

NFC и драйвер гибких дисков

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

Вторая — в драйвере флоппи-дисков. Даже если у вас нет дисковода, модуль может присутствовать в системе. Это напоминание: неиспользуемые драйверы тоже увеличивают поверхность атаки.

# проверить загруженные модули
lsmod | grep -iE "nfc|floppy"
# посмотреть, какие модули можно заблокировать
modinfo floppy 2>/dev/null | head
# временно выгрузить (если не используется)
sudo modprobe -r floppy 2>/dev/null

Блокировка модулей — вспомогательная мера, а не замена обновлению. После перезагрузки модуль может загрузиться снова.

# чёрный список (пример)
echo "blacklist floppy" | sudo tee /etc/modprobe.d/blacklist-floppy.conf
sudo update-initramfs -u

Почему обновления выходят партиями

Ядро Linux — общий код для множества дистрибутивов. Исправления накапливаются, проходят ревью и тестирование, а затем вендоры выпускают пакеты. Партия из 17 уязвимостей — нормальный темп для активной подсистемы.

Canonical поддерживает несколько веток: GA-ядро, HWE, realtime, lowlatency. Обновление приходит в каждую отдельно, поэтому проверяйте, какая ветка у вас.

# определить ветку ядра
dpkg -l | grep -E "linux-image|linux-generic|linux-hwe" | tail -10
apt-cache policy linux-image-generic | head -20

Как обновиться

Стандартный путь: apt update, затем apt full-upgrade или установка конкретного пакета. После обновления нужна перезагрузка, если вы не используете livepatch.

sudo apt update
sudo apt full-upgrade
sudo reboot
# после перезагрузки
uname -r
systemctl --failed

Для серверов с SLA выберите окно обслуживания. Обновление ядра может потребовать перезагрузку, а это простой.

# запланировать перезагрузку
sudo shutdown -r +30 "Обновление ядра, перезагрузка через 30 минут"
# отменить
sudo shutdown -c

Livepatch

Ubuntu Livepatch позволяет применять исправления без перезагрузки. Это удобно для серверов, но не все патчи поддерживаются. Проверьте статус и ограничения.

canonical-livepatch status
canonical-livepatch list 2>/dev/null | head -20
systemctl status canonical-livepatch --no-pager | head

Даже с livepatch периодически нужна перезагрузка: некоторые изменения невозможно применить на лету.

Приоритизация

Не все уязвимости одинаково срочны. Оценивайте вектор атаки: локальный или удалённый, требует ли прав, есть ли публичный эксплойт. Для интернет-доступных сервисов обновляйтесь быстрее.

  1. Критичные уязвимости с удалённой эксплуатацией — в течение суток.
  2. Локальные повышения привилегий — в течение недели.
  3. Отказ в обслуживании — по плану.
  4. Уязвимости в неиспользуемых компонентах — ниже приоритет, но не игнорировать.
# посмотреть, какие сервисы доступны извне
ss -tulpn
sudo ufw status verbose
# проверить открытые порты
sudo nmap -sT -p- --min-rate 1000 localhost 2>/dev/null | head

Проверка после обновления

  1. Загрузилось ли новое ядро.
  2. Работают ли сеть, диск, GPU.
  3. Запустились ли контейнеры и виртуальные машины.
  4. Нет ли ошибок в журнале.
  5. Работают ли резервные копии.
uname -r
ip -br a
df -h
docker ps 2>/dev/null | head
virsh list 2>/dev/null
journalctl -b -p err | tail -30

Если что-то сломалось, вернитесь на предыдущее ядро через GRUB и сохраните логи для разбора.

journalctl -k -b -1 | tail -100
dkms status
lsmod | grep -E "nvidia|vbox|zfs"

Профилактика

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

sudo apt install unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades
# проверить настройки
cat /etc/apt/apt.conf.d/50unattended-upgrades | head -40

Для парка машин используйте канареечный узел: сначала обновляйте его, затем остальные.

Что делать, если обновление ломает драйвер

Иногда новое ядро конфликтует с проприетарным драйвером. Сохраните предыдущее ядро, проверьте DKMS и будьте готовы загрузиться в старое через GRUB. Не удаляйте старые пакеты ядра сразу после обновления.

dkms status
ls /boot/vmlinuz-*
sudo apt install linux-image-$(uname -r) 2>/dev/null

Отчётность

Ведите журнал: какие узлы обновлены, какая версия ядра, когда была перезагрузка. Это помогает при аудите и при разборе инцидентов.

uname -r >> /var/log/kernel-updates.log
date >> /var/log/kernel-updates.log

Итог

Canonical закрыла 17 уязвимостей в ядре Ubuntu, включая состояние гонки в NFC и ошибку в драйвере флоппи-дисков. Обновите ядро, перезагрузитесь и проверьте сервисы. Приоритизируйте патчи по вектору атаки, используйте livepatch где возможно и не забывайте про резервные копии перед массовым развёртыванием.

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 0 / 5. Количество оценок: 0

Оценок пока нет. Поставьте оценку первым.

Поделиться: Telegram ВКонтакте