Описание
Паттерн Privilege Separation
предполагает использование непривилегированных изолированных модулей системы для взаимодействия с клиентами (другими модулями или пользователями), которые не имеют привилегий. Целью паттерна Privilege Separation
является уменьшение количества кода, выполняемого с особыми привилегиями, не влияющее на функциональность программы и не ограничивающее ее.
Паттерн Privilege Separation
является частным случаем паттерна Distrustful Decomposition.
Пример
Неаутентифицированный пользователь подключается к системе, в которой есть функции, требующие повышенных привилегий.
Контекст
В системе есть компоненты с большой поверхностью атаки из-за большого числа связей с ненадежными источниками и/или сложной, потенциально подверженной ошибкам реализации.
Проблема
Когда клиент, имеющий неизвестные привилегии, взаимодействует с привилегированным компонентом системы, возникают риски компрометации данных и функциональности, доступных этому компоненту.
Решение
Взаимодействие с ненадежными клиентами необходимо вести только через специально выделенные компоненты, у которых нет привилегий. Важно, что паттерн Privilege Separation
не изменяет функциональность системы, он лишь разделяет функциональность на компоненты с разными привилегиями.
Работа
Работа паттерна делится на две фазы:
Рекомендации по реализации в KasperskyOS
На этапе Pre-Authentication мастер-процесс может хранить состояние каждого непривилегированного процесса в виде конечного автомата и изменять состояние автомата при аутентификации.
Запросы дочерних процессов к мастер-процессу выполняются с использованием стандартных механизмов IPC. При этом контроль взаимодействий осуществляется с помощью модуля безопасности Kaspersky Security Module.
Следствия
Если атакующий получает контроль над непривилегированным процессом, он не получит доступа ни к каким привилегированным функциям или данным. Если он получает контроль над авторизованным процессом, он получит только привилегии этого процесса.
Кроме того, организованный таким образом код проще проверять и тестировать – особого внимания требует лишь функциональность, работающая с повышенными привилегиями.
Примеры реализации
Пример реализации паттерна Privilege Separation
: Пример Device Access.
Источники
Паттерн Privilege Separation
подробно рассмотрен в следующих работах: