Обязательный контроль целостности ( MIC ) — это основная функция безопасности Windows Vista и более поздних версий , которая добавляет обязательный контроль доступа к запущенным процессам на основе их уровня целостности (IL). IL представляет уровень надежности объекта. Цель этого механизма — ограничить разрешения на доступ для потенциально менее надежных контекстов (процессов, файлов и других защищаемых объектов) по сравнению с другими контекстами, запущенными под той же учетной записью пользователя, которые являются более надежными.
Обязательный контроль целостности определяется с использованием нового типа записи управления доступом (ACE) для представления IL объекта в его дескрипторе безопасности . В Windows списки управления доступом (ACL) используются для предоставления прав доступа (разрешений на чтение, запись и выполнение) и привилегий пользователям или группам. IL назначается токену доступа субъекта при инициализации. Когда субъект пытается получить доступ к объекту (например, файлу), монитор ссылок безопасности сравнивает уровень целостности в токене доступа субъекта с уровнем целостности в дескрипторе безопасности объекта . Windows ограничивает разрешенные права доступа в зависимости от того, выше или ниже IL субъекта, чем у объекта, и в зависимости от флагов политики целостности в новой записи управления доступом (ACE). Подсистема безопасности реализует уровень целостности как обязательную метку, чтобы отличить его от дискреционного доступа под контролем пользователя, который предоставляют ACL.
Windows Vista определяет четыре уровня целостности: низкий ( SID : S-1-16-4096), средний ( SID: S-1-16-8192), высокий ( SID: S-1-16-12288) и системный ( SID: S-1-16-16384). [1] По умолчанию процессы, запущенные обычным пользователем, получают средний IL, а процессы с повышенным уровнем целостности — высокий IL. [2] Вводя уровни целостности, MIC позволяет изолировать классы приложений, что позволяет реализовывать такие сценарии, как изолирование потенциально уязвимых приложений (например, приложений, выходящих в Интернет ). Процессы с низким IL называются процессами с низкой целостностью, которые имеют меньший доступ, чем процессы с более высокими IL, где в Windows реализован контроль доступа.
Объекты со списками контроля доступа, такие как именованные объекты , включая файлы , ключи реестра или даже другие процессы и потоки , имеют запись в списке контроля доступа системы, регулирующем доступ к ним, которая определяет минимальный уровень целостности процесса, который может использовать объект. Windows гарантирует, что процесс может записывать или удалять объект только в том случае, если его уровень целостности равен или выше запрошенного уровня целостности, указанного объектом. [2] Кроме того, по соображениям конфиденциальности объекты процессов с более высоким IL находятся вне границ даже для доступа на чтение из процессов с более низким IL. [3]
Следовательно, процесс не может взаимодействовать с другим процессом, имеющим более высокий IL. Поэтому процесс не может выполнять такие функции, как внедрение DLL в процесс с более высоким IL с помощью CreateRemoteThread()
функции [4] API Windows или отправка данных другому процессу с помощью функции [5]WriteProcessMemory()
.
В то время как процессы наследуют уровень целостности процесса, который его породил, уровень целостности может быть настроен во время создания процесса. Помимо определения границы для оконных сообщений в технологии изоляции привилегий пользовательского интерфейса (UIPI), обязательный контроль целостности используется такими приложениями, как Adobe Reader , Google Chrome , Internet Explorer и Windows Explorer , для изоляции документов от уязвимых объектов в системе. [1]
Internet Explorer 7 представляет параметр «Защищенный режим» на основе MIC для управления открытием веб-страницы как процесса с низкой целостностью или нет (при условии, что операционная система поддерживает MIC), на основе настроек зоны безопасности, тем самым предотвращая некоторые классы уязвимостей безопасности. Поскольку Internet Explorer в этом случае работает как процесс с низким IL, он не может изменять объекты системного уровня — вместо этого виртуализируются операции с файлами и реестром. Adobe Reader 10 и Google Chrome — два других заметных приложения, которые внедряют эту технологию для снижения своей уязвимости к вредоносному ПО. [6]
Microsoft Office 2010 представил изолированную среду песочницы «Protected View» для Excel, PowerPoint и Word, которая запрещает потенциально небезопасным документам изменять компоненты, файлы и другие ресурсы в системе. [7] Protected View работает как процесс с низкой степенью целостности и в Windows Vista и более поздних версиях Windows использует MIC и UIPI для дальнейшего ограничения песочницы. [8]
Однако в некоторых случаях процессу с более высоким IL необходимо выполнить определенные функции против процесса с более низким IL, или процессу с более низким IL необходимо получить доступ к ресурсам, к которым может получить доступ только процесс с более высоким IL (например, при просмотре веб-страницы в защищенном режиме сохраните файл, загруженный из Интернета, в папку, указанную пользователем). [1] Процессы с высоким IL и низким IL по-прежнему могут взаимодействовать друг с другом с помощью файлов, именованных каналов , LPC или других общих объектов. Общий объект должен иметь уровень целостности такой же низкий, как и процесс с низким IL, и должен совместно использоваться как процессами с низким IL, так и с высоким IL. [3] Поскольку MIC не препятствует процессу с низким IL совместно использовать объекты с процессом с более высоким IL, это может вызвать недостатки в процессе с более высоким IL и заставить его работать от имени процесса с низким IL, тем самым вызывая атаку Squatting . [3] Однако атаки Shatter можно предотвратить с помощью изоляции привилегий пользовательского интерфейса , которая использует преимущества MIC.