Для ядра Linux предложен livepatch, механизм обновления без перезагрузки
Как известно, в настоящее время на включение в ядро претендуют технологии обновления ядра на лету kpatch от компании Red Hat и kGraft от компании SUSE, которые похожи по используемым методам применения обновлений, но отличаются деталями реализации и способами подготовки патчей. В kGraft патч может формироваться непосредственно на основе исходных текстов, без манипуляций c объектным кодом. В kpatch патч генерируется на основе сравнения двух бинарных сборок ядра. Обе системы являются свободными и достаточно жестко конкурируют между собой, что затрудняет выбор, какую из них принять в основной состав ядра.
Проект livepatch попытался объединить работающие на уровне ядра Linux части технологий kpatch и kGraft в универсальный базовый компонент, который стал бы приемлем для включения в основной состав ядра. По аналогии с kpatch и kgraft в livepatch используется метод замены функций в ядре целиком и перенаправления на новую функцию при помощи штатной подсистемы ftrace. Патч оформляется в форме модуля ядра, осуществляющего необходимую подстановку кода функций. Наиболее существенным достоинством livepatch является возможность использования подобных модулей-патчей, подготовленных как инструментарием kpatch, так и kGraft. Сам livepatch, при этом, предоставляет лишь базовый интерфейс для регистрации и активации патчей в ядре, и реализован в форме управляющего модуля livepatch.ko.
Из областей, которые ещё требуют доработки отмечается реализация средств для обеспечения целостности системы в процессе применения патча. В kpatch и kGraft используются собственные механизмы для защиты от одновременного вызова старого и нового кода в пограничные моменты. В 90% патчей, устраняющих уязвимости, подобные механизмы не требуются, так как в них просто добавляется дополнительная условная проверка. Возможность полноценной подмены функций планируется реализовать в одном из следующих выпусков livepatch.
Источник: http://www.opennet.ru/opennews/art.shtml?num=41021
|
0 | Tweet | Нравится |
|