Livepatch (живое обновление ядра)
Livepatch (от live kernel patching, живое обновление ядра) это механизм ядра Linux, заменяющий уязвимые функции в работающем ядре, и построенные на нём инструменты вендоров: Canonical Livepatch Service в Ubuntu и kpatch в семействе RHEL. Он закрывает отдельные уязвимости ядра без перезагрузки, но не заменяет обновление пакетов и плановые перезагрузки.
Что такое Livepatch и как сочетаются три его части
Слово «livepatch» объединяет три связанные вещи. Первая это механизм в самом ядре Linux. Документация ядра описывает его как перенаправление вызовов с уязвимой функции на исправленную на основе ftrace, при этом каждая задача переключается только тогда, когда это безопасно. Вторая это Canonical Livepatch Service, доступный через Ubuntu Pro. По данным Canonical, он нацелен на уязвимости ядра с критической и высокой оценкой, которые можно безопасно исправить в памяти. Третья это kpatch: документация Red Hat называет его единственным поддерживаемым инструментом live patching для RPM-модулей, патчи поставляются пакетами kpatch-patch.
У всех трёх общая граница: они меняют отдельные функции ядра и больше ничего. Canonical отмечает, что пользовательские библиотеки вроде OpenSSL или glibc не затрагиваются, поэтому они по-прежнему приходят через unattended-upgrades или обычное обновление пакетов. Сама идея разобрана на странице live patching ядра, а здесь речь об инструментах.
Как включить Livepatch и проверить его состояние
В Ubuntu, как сказано в руководстве Canonical по клиенту Pro, Livepatch включён по умолчанию после подключения Ubuntu Pro, а при ручном включении устанавливается snap-пакет canonical-livepatch. В семействе RHEL руководство Red Hat предлагает установить плагин kpatch-dnf, подписать все установленные ядра на live-патчи и поставить патч для работающего ядра.
# Ubuntu (токен берётся в панели Ubuntu Pro)
sudo pro attach TOKEN
sudo pro enable livepatch
pro status
sudo canonical-livepatch status --verbose
# Семейство RHEL
sudo dnf install kpatch-dnf
sudo dnf kpatch auto
sudo dnf install "kpatch-patch = $(uname -r)"
kpatch list
В выводе Canonical строка kernel state показывает, покрыта ли серия вашего ядра, а строка patch state: применены ли патчи или их для этого ядра ещё нет. Проблемы пишет в журнал служба snap: journalctl -f -u snap.canonical-livepatch.canonical-livepatchd.
Ограничения и подводные камни
- Привязка к ядру. Патчи Canonical привязаны к версии ядра. На неподдерживаемом ядре службу можно включить и ничего не получать, а
pro statusпокажет предупреждение. С FIPS-сертифицированными и real-time ядрами Livepatch несовместим. - Строка версии не меняется. Red Hat предупреждает, что
uname -rпосле live-патча остаётся прежним, поэтому внешние сканеры могут по-прежнему помечать базовое ядро.kpatch listпоказывает загруженные и установленные модули, а начиная с kpatch 0.9.10 ещё и CVE, исправленные каждым загруженным модулем. - Откат только с перезагрузкой. Red Hat не поддерживает откат live-патчей без перезагрузки и просит не использовать SystemTap и kprobe во время и после загрузки патча.
- Покрытие заканчивается. При стандартной подписке Red Hat доступ к новым патчам для текущего минорного релиза прекращается, когда выходит следующий минорный релиз.
- Переход может затянуться. В апстриме патч переключает задачи по одной. Файл
/sys/kernel/livepatch/<patch>/transitionсодержит1, пока переход идёт. - Общее ядро. На контейнерном VPS ядро принадлежит хосту.
Место Livepatch в укреплении сервера
Относитесь к Livepatch как к временной мере внутри управления обновлениями, а не как к способу его обойти. Canonical прямо пишет, что служба не заменяет перезагрузку, и рекомендует плановые перезагрузки, чтобы сбросить накопленное состояние. Разумный порядок такой: автоматизируйте обновление пакетов, пусть Livepatch закрывает разрыв по высоким и критическим исправлениям ядра, затем установите новое ядро и перезагрузитесь в своём окне обновлений. После перезагрузки убедитесь, что работающее ядро совпадает с установленным.
Скорость реакции определяйте по данным об эксплуатации. Уязвимость ядра, которую уже используют против серверов, на практике становится n-day эксплойтом, а руководство по каталогу CISA KEV объясняет, как расставлять такие исправления по приоритету. Настройте оповещение, если canonical-livepatch status сообщает об ошибке, как описано в руководстве по мониторингу. Полный порядок работы с проверкой результата есть в руководстве по управлению обновлениями сервера, а базовые проверки в чек-листе безопасности VPS.
Связанные термины: Live patching ядра, Управление обновлениями, unattended-upgrades, Окно обновлений, N-day эксплойт.
Часто задаваемые вопросы
Что такое Livepatch?
Livepatch это способ исправить отдельные уязвимости в работающем ядре Linux без перезагрузки. Название объединяет механизм самого ядра, Canonical Livepatch Service в Ubuntu и kpatch в семействе RHEL.
Чем Canonical Livepatch отличается от kpatch?
Canonical Livepatch поставляется через Ubuntu Pro и управляется командами pro и canonical-livepatch. kpatch это поддерживаемый Red Hat инструмент, он ставится через пакеты kpatch-dnf и kpatch-patch, а состояние смотрят командой kpatch list.
Livepatch бесплатный?
Canonical пишет, что для Livepatch нужен Ubuntu Pro, а бесплатный тариф рассчитан на 5 машин для личного использования или ознакомления. Перед использованием на бизнес-сервере проверьте условия Canonical.
Как проверить, что Livepatch работает?
В Ubuntu выполните pro status и sudo canonical-livepatch status и посмотрите строки kernel state и patch state. В семействе RHEL команда kpatch list покажет загруженные и установленные модули патчей.
Значит ли Livepatch, что перезагружаться и обновлять пакеты больше не нужно?
Нет. Canonical пишет, что служба не заменяет перезагрузку, а библиотеки пользовательского уровня вроде OpenSSL или glibc она не патчит. Продолжайте ставить обычные обновления и перезагружайтесь в плановом окне обновлений.
Хотите увидеть, в каком состоянии ваш сервер?
Запустите бесплатную read-only проверку сервера или откройте Security Lab и посмотрите цикл обнаружение, сдерживание, восстановление, проверка в действии.
Получить бесплатную проверку сервераОткрыть Security Lab