Microsoft предложил систему управления доступом IPE для ядра Linux

Компания выставила на обсуждение в списке рассылки разработчиков ядра Linux код LSM-модуля с реализацией механизма IPE (Integrity Policy Enforcemen), расширяющего существующие системы мандатного управления доступом. Вместо привязки к меткам и путям в IPE решение о разрешении или запрете операции принимается на основе постоянных свойств системного компонента с которым выполняется операция. Модуль позволяет определить общую политику обеспечения целостности для всей системы, указывающую какие операции допустимы и каким способом следует верифицировать подлинность компонентов.

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

Предложенный механизм может применяться в прошивках для встраиваемых устройств, в которых всё программное обеспечение и настройки специально собираются и предоставляются владельцем, например, в датацентрах Microsoft IPE применяется в оборудовании для межсетевых экранов. От других систем проверки целостности, таких как IMA, IPE отличается независимостью от метаданных в ФС — все свойства, определяющие допустимость операций, хранятся непосредственно в ядре.

Правила задаются в текстовой форме с использование наборов ключ-значение. Базовыми являются ключ «op», определяющий операцию к которой применяется правило (например, op=EXECUTE сработает при попытке выполнения процесса), и «action», определяющий действие (например, «action=DENY» для блокировки). Правила привязываются к свойствам, предоставляемым внешними подсистемами, такими как dm-verity и fs-verity.

Например, правила


   op=EXECUTE boot_verified=TRUE action=ALLOW
   op=EXECUTE dmverity_signature=FALSE action=DENY
   op=EXECUTE fsverity_digest=sha256:401fce...0dec146938 action=DENY

разрешит только загрузку с верифицированного раздела, запретит запуск файлов с разделов, для которых отсутствуют проверочные хэши dm-verity, а также выборочно запретит выполнение файла с хэшем «401fce…0dec146938».

Начальный набор загрузочных правил определяется при помощи настройки SECURITY_IPE_BOOT_POLICY и включается в состав сборки ядра, а остальные правила добавляются по мере необходимости через файл
/sys/kernel/security/ipe/new_policy. Передаваемые правила шифруются с использованием сертификата, определённого в SYSTEM_TRUSTED_KEYRING.

На системах общего назначения предлагается применять IPE в сочетании с механизмом DIGLIM, развиваемым компанией HUAWEI. DIGLIM реализован при помощи eBPF и позволяет легко реализовать контроль целостности на уровне отдельных файлов в обычных дистрибутивах, не требуя их переработки (преподносится как вариант Secure Boot, работающий на прикладном уровне). Суть DIGLIM в поддержании пула проверочных хэшей для файлов и метаданных, и предоставления доступа к исполняемым файлам только если его хэш присутствует в пуле. Список хэшей может быть получен от пакетного менеджера RPM или вручную сгенерирован пользователем.

Источник: http://www.opennet.ru/opennews/art.shtml?num=60695