Изучение обновлений системы Linux и схем защиты целостности

На ELC 2017 Патрик Оли (Intel Patrick Ohly) исследует преимущества и недостатки механизмов обновления системы и схем защиты целостности для проекта Yocto.

Учитывая растущие атаки вредоносных программ на устройства IoT на базе Linux, растет интерес к схемам защиты целостности, а также к механизмам обновления системы, которые поддерживают беспроводные (OTA) полевые обновления.
На недавней конференции по встраиваемым Linux-технологиям Патрик Охли, инженер-программист из Intel GmbH, Германия, работающий над проектом Yocto и комплектом справочных ОС IoT для архитектуры Intel , рассмотрел обе темы и объяснил, как они взаимосвязаны.

В связи с ростом числа атак разработчикам встраиваемых систем необходимо сочетать упреждающую защиту со схемами защиты целостности и регулярными обновлениями системы, а также другие меры безопасности .
«Защита целостности гарантирует, что ваше устройство работает только с программным обеспечением, которое было проверено на отсутствие изменений», - сказал Охли.
«Но вы не можете рассчитывать на то, что поймаете все заранее, и появятся новые уязвимости и методы атак, поэтому вам нужны обновления системы».


На ELC 2017 Патрик Олай объясняет проблемы совместимости между обновлением системы и механизмами защиты целостности

(щелкните изображение, чтобы увеличить)

Большая часть беседы Оли была посвящена преимуществам и недостаткам схем обновления и защиты, доступных для Yocto / OpenEmbedded.
Ohly является хранителем мета-целостности и meta-swupd - двух уровней, которые делают схему защиты целостности Linux Integrity Measurement Architecture (IMA) и механизм обновления Clear Linux OS swupd доступными в Yocto / OE.
Опыт привел его увидеть преимущества swupd, а также проблемы с IMA.

Охли объяснил различия между механизмами обновления системы на основе блоков (swupdate, Mender.io) и файловыми (swupd, OSTree).
Затем он сравнил три схемы защиты целостности: IMA с расширенным модулем проверки (EVM) или IMA / EVM, а также шифрование всего диска с секретным ключом для каждой машины и dm-verity.

Выбор механизма обновления системы может повлиять на выбор схемы защиты целостности.
IMA / EVM работает только с файловыми swupd и OSTree, а dm-verity работает только с блочными Mender.io и swupdate.
Шифрование всего диска, тем временем, работает со всеми четырьмя.
Хотя этот доклад относится только к Yocto, все компоненты, кроме этих, могут работать с другими встроенными средами Linux, за возможным исключением более специфичного для Yocto swupdate.

В конце беседы Охли подробно рассказал о недавнем проекте, в котором он взял dm-verity и интегрировал его с шифрованием всего диска в IoT Refkit.
«Мы пытаемся использовать это, чтобы распространить Yocto на дополнительные варианты использования», - сказал он.
Здесь мы лишь кратко ссылаемся на проект, который включает в себя интеграцию LUKS (Linux Unified Key Setup) и настройку QEMU для правильной эмуляции TPM.
Если вам интересно, обсуждение начинается примерно через 33 минуты после 51-минутного разговора.

Обновление системы плюсы и минусы

Прежде чем сравнивать схемы обновления системы, доступные разработчикам Yocto / OE, Охли отметил, что «у них у всех есть свои плюсы и минусы, а в некоторых случаях требуется дальнейшая работа». Первое решение заключается в том, следует ли использовать механизм на основе блоков или файлов. ,
Блочные схемы, такие как swupdate и Mender.io, поставляются на разные устройства с разными жесткими дисками, потому что они должны быть разделены одинаково », - сказал Охли.
Механизмы на основе файлов, такие как swupd и OSTree, «облегчают поддержку различных устройств», добавил он.

Кроме того, обновление выбранных файлов вместо целых разделов происходит намного быстрее.
«Swupd, в частности, очень усердно работает, чтобы выполнить минимальный объем работы для обновлений», - сказал Охли.

Два файловых механизма имеют дополнительные различия.
«OSTree создает альтернативное дерево с использованием жестких ссылок, а затем во время перезагрузки переключается на новый корень», - сказал Охли.
«Это немного более атомарно, чем swupd, но ему все еще нужна записываемая корневая файловая система».

Еще одна точка сравнения заключается в разметке разделов.
Подход с одним разделом является режимом по умолчанию для OSTree и swupd и поддерживается swupdate.
Mender.io, напротив, требует настройки A / B, в которой у вас есть как активный раздел, так и резервный раздел.
Подход A / B позволяет переопределить резервный раздел и после перезагрузки переключиться на другой раздел.

«Наличие второго раздела - это хорошо, если вы получаете повреждение файловой системы», - сказал Охли.
Разделение A / B является необязательным для swupdate и возможно для OSTree и swupd, хотя это потребует гораздо больше работы, добавил он.

Другие вопросы касаются интеграции с процессом загрузки.
«Если у вас есть настройка A / B, как вы выбираете, в какой раздел загружаться?», - сказал Охли.
«Может ли хакер заставить нас загрузиться в то, что нам не нужно?» Для решения этой проблемы механизмы, которые в настоящее время поддерживают настройку A / B, полагаются на загрузчик U-Boot и устанавливают переменные U-Boot, которые должны храниться аппаратные средства такие, что злоумышленник не может вмешаться в их работу.

Выбор механизма обновления может повлиять на интеграцию с OTA-сервером обновлений.
«Если у вас много устройств, вы можете обновить подмножество, которое зависит от того, какие устройства проверяют наличие обновлений», - сказал Охли.

Swupd и OSTree требуют, чтобы клиенты извлекали обновления анонимно, поэтому им потребуется дополнительная телеметрия для проверки состояния обновлений.
Для сравнения, Mender.io предлагает выделенный сервер обновлений.
«Это позволяет вам осуществлять реальное управление устройствами, чтобы вы знали, обновилось ли устройство», - сказал Охли.
Swupdate, тем временем, поддерживает hawkBit , который делает нечто подобное.

Защита целостности за и против

Затем Огли сравнил три схемы защиты целостности: IMA / EVM, шифрование всего диска и dm-verity.
В предыдущем проекте с основанным на Yocto Ostro Project , Ohly использовал IVA / EVM, который, подобно dm-verity, теперь встроен в ядро ​​Linux.
Однако у него было много проблем с тем, чтобы сделать IVA / EVM более безопасным.

«Я пришел к выводу, что IVA / EVM еще не готов к производству», - сказал Охли.
При разрешении записи файлов повышается риск того, что файлы станут нечитаемыми после внезапной потери питания.
IMA полагается на хэширование измененного содержимого файла после записи и проверяет контрольную сумму при повторном открытии файла.
Эта перефразировка происходит только в методе close (), который не вызывается долго выполняющимися процессами, которые поддерживают базу данных sqlite открытой.
Даже когда происходит перефразировка, контрольная сумма и фактические данные не обязательно записываются на диск вместе ».

Другая проблема с IMA / EVM - отсутствие защиты каталогов.
«Есть известные атаки, потому что IMA / EVM не защищает целостность каталога», - сказал Охли.
«Это позволяет злоумышленнику удалить файл конфигурации и заменить его ссылкой на что-то незащищенное.
Были исправления, чтобы решить эту проблему, но они еще не были объединены ».

По сравнению с этим, по словам Охли, шифрование всего диска с использованием секретного ключа для каждой машины «намного более развито», чем IMA / EVM.
На целом диске, когда устройство выключено, злоумышленник видит только «мусор» в разделе, добавил он.
«Если у злоумышленника нет доступа к секретному ключу и он пытается изменить раздел, как только устройство загрузится снова, некоторые блоки будут полностью изменены, поэтому нет никакого способа редактировать выделенные файлы».

Шифрование всего диска прекрасно работает на ноутбуках, но во встроенной области эта схема ставит непростую задачу, заключающуюся в том, как надежно хранить ключ шифрования.
«На ноутбуке пользователь вводит что-то или подключает USB-накопитель, но это не работает во встроенном», - сказал Охли.


Ohly описывает свое обновление и код целостности для IoT Ref Kit

(щелкните изображение, чтобы увеличить)

Код Ohly для IoT Ref Kit добавляет дополнительный уровень безопасности для всего шифрования диска, используя Trusted Platform Module (TPM) для хранения секретного ключа.
«Это не идеальное решение, так как у кого-то все еще есть устройство с ключом в руках, но это немного более безопасно, чем просто сбросить ключ на жесткий диск», - сказал Охли.
«Когда вы комбинируете это с безопасной загрузкой, злоумышленнику очень трудно получить ключ».

Наконец, Ohly изучил dm-verity , которая изначально была разработана для Chrome OS и поддерживается Android .
В отличие от других схем, dm-verity не позволит вам писать и изменять файлы.
Механизм проверяет целостность каждого блока в разделе только для чтения, поэтому любые изменения немедленно приводят к ошибке чтения.

«Преимущество dm-verity по сравнению с шифрованием всего диска заключается в том, что вы получаете действительно конкретную ошибку чтения, которая говорит о том, что этот блок нечитабелен», - сказал Охли.
Одним из преимуществ является возможность обнаружения повреждения USB-накопителя.
«Это общая проблема», - сказал Охли.
«Вы что-то прошиваете, и это не работает, а на флешке это немного переворачивается».

Наконец, если вам интересно, почему на первом изображении Олай носит шляпу Санта-Клауса, имейте в виду, что это скорее «настоящая шляпа гномов из угольных шахт Шварцвальда». Шляпа напоминает Оли, что большая часть его работы на основе существующего открытого исходного кода.
«Я чувствую, что я гном, стоящий на плечах гигантов», - сказал он.

Однако Огли снял шляпу, обсуждая аспекты решения IoT Refkit, которые он написал сам.
«Здесь становится жарко, - добавил он.

Полное видео доступно ниже:

Видео «Выживание в пустыне: защита целостности и обновление системы»

Эта статья защищена авторским правом © 2017 Linux.com и была первоначально опубликована здесь .
Он был воспроизведен этим сайтом с разрешения его владельца.
Пожалуйста, посетите Linux.com для получения последних новостей и статей о Linux и open source.