Поделиться через


Как реализуется механизм целостности в Windows Vista

Механизм целостности Windows используется в Windows Vista несколькими способами. Его main целью является ограничение разрешений доступа приложений, работающих под той же учетной записью пользователя, которые менее надежны. Этот механизм не позволяет менее надежному коду изменять объекты на более высоком уровне. Большинство объектов, которыми управляет группа "Администраторы" или "Система", имеют дискреционный список управления доступом (DACL), который обычно предоставляет разрешение на полный доступ администраторам и системе, а также разрешение на чтение и выполнение пользователям, прошедшим проверку подлинности. Примерами ресурсов, которые находятся под контролем группы "Администраторы" и "Система", являются каталог Program Files для приложений или куст HKEY_LOCAL_MACHINE реестра. Механизм целостности не повышает безопасность объектов, которые уже правильно настроены для ограничения доступа к ним различных учетных записей пользователей или групп. Основной целью механизма целостности является решение различных разрешений для программ на доступ к ресурсам под полным контролем одного и того же субъекта безопасности пользователя.

Ресурсы, находящиеся под контролем одного и того же субъекта безопасности пользователя, которым требуется дополнительная защита, в основном находятся в профиле пользователя (каталог C:\Users\<username> и HKEY_CURRENT_USER куст в реестре) и приложениями, которые в настоящее время выполняются от имени этого пользователя. Windows Vista использует механизм целостности следующим образом.

  • В UAC ограничивается доступ между процессами, выполнящимися с правами обычного пользователя, и процессами с повышенными привилегиями, выполняемыми с полными правами администратора в режиме утверждения Администратор.
  • Безопасность COM учитывает уровни целостности и не позволяет клиентам с более низкой степенью целостности выполнять привязку к экземплярам класса, работающим на более высоком уровне целостности.
  • В параметрах безопасности по умолчанию он ограничивает доступ к корневой папке системного тома.
  • В защищенном режиме интернет-Обозреватель он ограничивает возможность кода, выполняемого в браузере, изменять данные пользователя или параметры профиля пользователя.
  • Чтобы разрешить приложениям, работающим с низкой целостностью, иметь расположение файлов, доступных для записи, он назначает определенным папкам в профиле пользователя низкий уровень целостности.

Механизм целостности является частью архитектуры безопасности Windows Vista. Со временем конкретные приложения, которые обрабатывают ненадежные входные данные (в основном с выходом в Интернет), обновляются, чтобы воспользоваться преимуществами возможности запуска на низком уровне целостности. Личные приложения для повышения производительности прекрасно работают на среднем уровне целостности, если пользователи знают источник входных данных. Для большинства приложений механизм целостности полностью прозрачен и не влияет на функции приложения. Службы приложений можно обновить, чтобы обеспечить лучшую изоляцию ресурсов сервера для клиентских процессов на разных уровнях целостности.

Уровни целостности и контроль учетных записей

UAC в Windows Vista запускает несколько программ на разных уровнях доступа на одном рабочем столе при использовании режима утверждения Администратор. Программы имеют разные привилегии в зависимости от маркера доступа безопасности, назначенного процессу при создании процесса. Пользователи с учетными записями, которые являются стандартными пользователями, имеют только один маркер доступа безопасности, созданный во время входа. Стандартному маркеру доступа пользователя назначается средний уровень целостности. Стандартный маркер доступа пользователя со средним уровнем целостности назначается почти всем процессам приложений, выполняемым пользователем. Некоторые приложения, такие как защищенный режим интернет-Обозреватель, являются исключением, которые описаны ниже.

У пользователей с учетными записями, которые являются членами группы "Администраторы", при входе в систему создаются два маркера доступа безопасности, которые связаны друг с другом. Один маркер доступа — это стандартный маркер доступа пользователя, которому назначен средний уровень целостности, в котором группа администраторов используется только для запрета проверок доступа, а некоторые административные привилегии удалены. Второй маркер доступа — это маркер с полными правами доступа с повышенными привилегиями, которому назначается высокий уровень целостности, так как в маркере доступа присутствуют права администратора и права администратора. Маркеры доступа связаны, так как они связаны с тем же интерактивным входом для этой учетной записи пользователя. Оба маркера доступа имеют одинаковый идентификатор безопасности пользователя и одни и те же глобальные группы из Active Directory (за исключением отфильтрованных групп для доменных и корпоративных Администратор).

Windows Обозреватель (также известная как оболочка) и всем задачам без прав администратора назначается стандартный пользователь, маркер доступа со средним уровнем целостности. Для учетной записи пользователя, которая входит в группу Администраторы, почти все приложения выполняются с маркером доступа со средним уровнем целостности. Политика целостности NO_WRITE_UP не ограничивает разрешения на доступ процессов среднего уровня для доступа к объектам, имеющим неявную метку среднего объекта. Механизм целостности является прозрачным для приложений на среднем уровне целостности, если они не предназначены для управления другими процессами, которые могут выполняться на более высоком уровне привилегий. Автоматизация пользовательского интерфейса Windows — это пример приложения, предназначенного для управления другими процессами.

UAC Администратор режим утверждения позволяет пользователю запускать административные задачи и приложения после предоставления согласия с маркером с полными привилегиями с повышенным уровнем доступа. Операционная система должна ограничить возможность процесса с более низкими привилегиями (обычного пользователя) напрямую с помощью процесса с более высокими привилегиями (администратор), работающего с тем же идентификатором безопасности пользователя. Механизм целостности Windows ограничивает разрешения на доступ, которые может иметь процесс средней целостности в процессе с высокой степенью целостности. Диспетчер процессов (часть ядра Windows) назначает обязательные параметры политики NO_READ_UP и NO_WRITE_UP, чтобы ограничить процессы с более низкой целостностью от открытия процесса с более высокой целостностью для доступа на чтение или запись.

Процесс с более низкой целостностью имеет только общий доступ на выполнение. Универсальный доступ на выполнение включает следующее:

  • SYNCHRONIZE, PROCESS_QUERY_LIMITED_INFORMATION
  • PROCESS_TERMINATE

Общий доступ на чтение к процессу с более высоким уровнем целостности (PROCESS_VM_READ доступ к виртуальной памяти процесса и PROCESS_QUERY_INFORMATION) ограничен, чтобы запретить процессам с более низкими привилегиями доступ на чтение к памяти, которая может содержать данные пароля или другой материал ключа, используемый для проверки подлинности. Общий доступ на запись к процессу с более высоким уровнем целостности блокируется политикой NO_WRITE_UP. Общие права доступа к процессу записи включают:

  • PROCESS_CREATE_THREAD
  • PROCESS_VM_OPERATION
  • PROCESS_VM_WRITE
  • PROCESS_DUP_HANDLE
  • PROCESS_SET_QUOTA
  • PROCESS_SET_INFORMATION
  • PROCESS_SET_PORT

Куст текущего реестра пользователей

Большинству объектов в профиле пользователя не назначена явная обязательная метка и, следовательно, неявный уровень целостности по умолчанию — средний. Это относится к кусту HKEY_CURRENT_USER (HKCU) реестра. Ключи, созданные в HKCU, имеют неявный средний уровень целостности. Это означает, что для пользователей, входящих в группу "Администраторы", куст HKCU может записываться приложениями, работающими с маркером доступа стандартного пользователя средней целостности или маркером полного доступа администратора с высоким уровнем целостности. Это необходимо для обеспечения совместимости приложений. Напомним, что куст HKEY_LOCAL_MACHINE (HKLM) имеет политику безопасности по умолчанию, которая предоставляет администраторам и системе полный контроль, а также доступ на чтение и выполнение пользователями. Куст HKLM можно изменить только процессами с повышенными привилегиями, которым назначен полный маркер доступа администратора. Куст HKLM не защищен меткой с высоким уровнем обязательности.

Так как уровень целостности по умолчанию для объектов без явной обязательной метки является средним, очевидно, что пользователи, являющиеся членами группы администраторов, могут запускать программы с разными уровнями привилегий (средний и высокий), которые совместно используют HKCU и данные профиля пользователя. Windows Vista не устанавливает строгую границу между процессами средней и высокой целостности. Процесс с высокой степенью целостности допускается для чтения. Обычно приложения, работающие с маркером доступа с полными правами и высоким уровнем целостности, считывают сведения о конфигурации из HKCU или принимают входные файлы, влияющие на поведение процесса высокой целостности. Приложения, которые выполняются с полными привилегиями, должны использовать HKLM для хранения сведений о конфигурации, которые могут изменяться только администраторами. Приложения с полными привилегиями также должны убедиться, что введенные пользователем данные правильно сформированы перед обработкой изменяемых пользователем файлов.

COM учитывает целостность

COM — это платформа для создания компонентов приложений и служб объектов. Com-инфраструктура учитывает уровень целостности клиента, вызывающего CoCreateInstance, и серверный процесс, на котором выполняется экземпляр класса. Функциональные возможности COM, в которых уровни целостности влияют на поведение:

  • Моникер повышения привилегий COM позволяет клиентам запускать службы с повышенными привилегиями на высоком уровне целостности после того, как администратор предоставит согласие или стандартный пользователь предоставляет явные учетные данные администратора.
  • Классы серверов, которые выполняются выше среднего уровня целостности, должны иметь CLSID, определенный в кусте реестра HKLM.
  • COM запрещает клиентам с более низким уровнем целостности привязку к запущенным экземплярам серверов на более высоком уровне целостности, если сервер программно не разрешает доступ с более низких клиентов.

Моникер повышения привилегий COM позволяет приложениям с низким или средним уровнем целостности запускать com-службы в процессе, работающем с повышенными правами при высокой целостности. Моникер повышения прав позволяет выполнять определенные задачи, предназначенные для выполнения с повышенными привилегиями и не предназначенные для полной совместимости приложений. Повышение уровня COM интегрировано с повышением прав UAC. Процессу COM-сервера с повышенными привилегиями назначается маркер с полными привилегиями с повышенными правами доступа с высокой степенью целостности. COM не позволяет клиентам на более низком уровне выполнять привязку к работающему экземпляру сервера на более высоком уровне целостности.

Если COM-сервер предназначен для поддержки подключений от клиентов с низкой целостностью, сервер может программно изменить разрешения на запуск и активацию в реестре для CLSID, чтобы разрешить привязку из клиента с более низкой целостностью. COM использует обязательную политику NO_EXECUTE_UP в обязательной метке ACE, чтобы контролировать, разрешено ли клиентам выполнять привязку к экземпляру сервера на более высоком уровне целостности. Разрешения на запуск и активацию COM сопоставляются с общими правами доступа на выполнение в GENERIC_MAPPING, используемых COM для проверки активации. Уровень целостности в обязательной метке, связанной с объектом , определяет самый низкий уровень целостности клиента, которому разрешено выполнить привязку к серверу. Как и в случае с доступом к файловой системе, неявная обязательная политика по умолчанию позволяет клиентам со средним уровнем целостности выполнять привязку к серверам.

Для COM-серверов, предназначенных для привязки клиента с низкой целостностью к экземпляру сервера, разрешения на активацию COM задаются кодом сервера.

Разрешение привязки клиента с низким уровнем целостности к серверу

  1. Определите обязательную метку с политикой NO_EXECUTE_UP (NX) для низкого уровня целостности. SdDL для дескриптора безопасности объекта с обязательной политикой меток для низкой целостности:

    O:BAG:BAD:(A;;0xb;;;WD)S:(ML;;NX;;;LW)

  2. Преобразуйте дескриптор безопасности строки в двоичный дескриптор безопасности.

  3. Задайте разрешения на запуск для CLSID сервера CLSID с помощью дескриптора двоичного дескриптора безопасности.

Пользовательский интерфейс безопасности COM, dcomcfg.exe, не поддерживает уровни целостности.

Примеры кода для настройки политики обязательного разрешения на запуск COM см. в разделе Ресурсы механизма целостности Windows для получения дополнительных сведений о поддержке COM и уровня целостности.

Службам назначен уровень целостности системы

Диспетчер управления службами (SCM) запускает процессы обслуживания с помощью специальной учетной записи службы или имени пользователя и пароля. К специальным учетным записям служб относятся LocalSystem, LocalService и NetworkService. Службы, работающие под одной из этих учетных записей служб, имеют особые привилегии, такие как привилегия SE_IMPERSONATE_NAME, которая позволяет службе выполнять действия при олицетворении других пользователей. Windows Vista назначает объекту процесса уровень целостности системы для служб, работающих под одной из специальных учетных записей служб. На следующем изображении процесса Обозреватель показан уровень целостности системы, назначенный маркеру доступа для специальных учетных записей служб.

Рис. 6 Уровень целостности системы для служб

Хотя процесс обслуживания имеет уровень целостности системы, защищаемым объектам, созданным этими субъектами, не назначается системная обязательная метка. Объекты, созданные службами (за исключением дочерних процессов, потоков, маркеров доступа и заданий), имеют неявный средний уровень целостности.

Изменения служб для Windows Vista описывают изменения в службах для повышения безопасности, надежности и управляемости. Изменения в службах повышают безопасность системы, изолируя службы в сеансе 0 и изолируя ресурсы, к которым службы могут получать доступ с помощью идентификаторов безопасности служб. Уровень целостности системы для специальных учетных записей служб соответствует целям изоляции служб. Процессы служб, выполняемые на уровне целостности системы, защищены от доступа к с помощью процесса с более низкой степенью целостности. Права доступа к процессу, доступные процессам с более низкой целостностью для открытия процесса службы, ограничены следующими:

  • SYNCHRONIZE
  • PROCESS_QUERY_LIMITED_INFORMATION
  • PROCESS_TERMINATE

Некоторые приложения разрабатываются с использованием нескольких совместных процессов, которые могут выполняться в одной или нескольких учетных записях служб. Большинство механизмов межпроцессного взаимодействия (IPC) между процессами и службами, например RPC, не ограничены уровнем целостности. Службам необходимо соблюдать особую осторожность для проверки входных данных от клиентов с низкой целостностью.

Повторяющиеся дескрипторы между службами

Приложения-службы, использующие несколько процессов, иногда предназначены для дублирования дескрипторов для объектов, таких как файлы, между серверными процессами. Если все процессы выполняются с одной и той же специальной учетной записью службы, то безопасность по умолчанию для процессов обслуживания не накладывает ограничений. DaCL по умолчанию для процессов службы, выполняемых под специальными учетными записями служб, не предоставляет PROCESS_DUP_HANDLE доступ, необходимый для вызовов DuplicateHandle. Разработчики служб приложений должны реализовать функциональные возможности для предоставления PROCESS_DUP_HANDLE доступа к объекту процесса службы другой учетной записи пользователя, используемой совместным процессом, чтобы совместно использовать дескрипторы между процессами приложений, которые выполняются под разными учетными записями пользователей. Но если служба, в которую требуется дублировать дескриптор, является специальной учетной записью службы, работающей на уровне целостности системы, совместный процесс, выполняющийся на высоком или среднем уровне целостности, не сможет получить PROCESS_DUP_HANDLE из-за обязательной политики меток. Даже если DACL предоставляет доступ PROCESS_DUP_HANDLE, политика обязательных меток не разрешает доступ вызывающим абонентам с более низким уровнем целостности. Если эта ситуация влияет на структуру приложения-службы, код службы приложения необходимо будет изменить, чтобы процесс, инициирующий DuplicateHandle, был на уровне целостности выше, чем уровень целостности процесса, который является источником дескриптора. То есть служба с более высокой целостностью может дублировать дескриптор в собственный процесс в качестве целевого из процесса с более низкой целостностью в качестве источника дескриптора.

Политика олицетворения

Привилегия SE_IMPERSONATE_NAME позволяет серверным процессам олицетворять контекст безопасности клиентского процесса. Привилегия "Олицетворения" является мощной привилегией. Механизм целостности связывает олицетворения привилегии с маркерами доступа с высоким уровнем целостности или уровнем целостности системы. Механизм целостности применяет политику, согласно которой субъект может олицетворять клиента на более высоком уровне целостности, только если у него есть привилегия "Олицетворить".

Сценарий, в котором применяется это ограничение политики, будет, когда процесс с низкой целостностью подделывает пользовательский интерфейс, чтобы убедить пользователя-администратора ввести учетные данные администратора. Вредоносный код использует учетные данные для вызова LsaLogonUser и ImpersonateLoggedOnUser, чтобы попытаться запустить процесс с более высоким уровнем привилегий. Политика механизма целостности для маркеров доступа для олицетворения заключается в том, что уровень целостности маркера доступа, возвращаемого LsaLogonUser, должен быть не выше уровня целостности вызывающего процесса.

Корневая папка с высоким уровнем целостности

Корневая папка системного раздела, обычно C:\ , исторически использовалась в качестве удобного места для хранения программ или временных файлов, хотя такая практика не рекомендуется. Программы установки, требующие прав администратора, часто копируются в корневую папку перед запуском. Политика безопасности по умолчанию для корневой папки позволяет пользователям, прошедшим проверку подлинности, создавать вложенные папки в корневой папке, но разрешать только администраторам создавать файлы в корневой папке. Кроме того, в идеале политика не позволяет пользователям без прав администратора изменять файлы в папке, созданной администраторами. Эту политику трудно определить, используя только список управления доступом для корневой папки.

Установив обязательную метку с высоким уровнем целостности, которая применяется к дочерним объектам, но не к дочерним контейнерам, безопасность корневой папки по умолчанию соответствует этой политике. Обычные пользователи, запускающие программы на среднем уровне целостности, не могут изменять файлы, созданные администраторами в корневой папке, даже если ACL предоставляет пользователям доступ на изменение. Корневая папка имеет наследуемую обязательную метку с высоким уровнем целостности, которая является наследуемым объектом и не распространяется на вложенные папки.

На следующем рисунке показаны параметры безопасности по умолчанию для C:\ корневая папка, в том числе объект наследует обязательную метку при высокой целостности. В таблице 9 показаны определения сокращений на изображении.

Сокращение изображений в таблице 9

Сокращение Определение

(OI)

Наследование объекта

(NP)

Отсутствие распространения

(операции ввода-вывода)

Только наследовать

(NW)

Без записи

Рис. 7. Обязательная метка в корневой папке

Защищенное интернет-Обозреватель с низкой целостностью

Интернет-Обозреватель — это пример приложения, предназначенного для приема произвольных данных и расширяемого кода из Интернета. Так как источник интернет-содержимого редко проходит проверку подлинности (подписывается), мы должны предположить, что все входные данные из Интернета ненадежны. Атаки на интернет-Обозреватель или любой другой интернет-браузер демонстрируют ненадежный характер динамического содержимого и данных, доступных из Интернета. С точки зрения безопасности мы предполагаем, что сам процесс интернет-Обозреватель скомпрометирован и недоверен, и мы ищем решения, ограничивающие потенциальный ущерб, нанесенный атаками на браузер. Некоторые предлагаемые решения для атак на основе браузера пытаются полностью изолировать веб-браузер от других приложений и данных. К сожалению, полная изоляция браузера оказывает значительное влияние на работу пользователя, например возможность автоматического запуска программ для чтения файлов различных типов, таких как файлы .pdf. Полная изоляция препятствует обычным взаимодействиям пользователей, таким как отправка изображений на веб-сайты, если браузер не имеет доступа на чтение к файлам данных пользователя.

Цель защищенного режима интернет-Обозреватель заключается в сокращении прав доступа, доступных процессу, чтобы ограничить возможности эксплойтов, запущенных в браузере, создавать нежелательные файлы запуска, изменять файлы данных пользователя, вносить неприятные изменения в параметры конфигурации браузера или управлять поведением других программ, работающих на рабочем столе. Весь код, выполняемый в защищенном режиме в Интернете Обозреватель в процессе с низкой целостностью, считается ненадежным. Средний уровень целостности по умолчанию для объектов не позволяет браузеру открывать какие-либо каталоги, файлы или разделы реестра для доступа на запись, за исключением тех, которые явно помечены с низкой целостностью. UIPI не позволяет коду браузера с низкой целостностью отправлять любые потенциально опасные сообщения окна в другие приложения, работающие на рабочем столе.

Браузер, работающий с низкой целостностью, имеет доступ на чтение к файлам данных пользователя. Поскольку механизм целостности Windows не обеспечивает конфиденциальность, он не ограничивает поток информации. Процесс также может использовать учетные данные по умолчанию для запуска сетевых подключений, таких как сетевой прокси-сервер (требуется, если для подключения к Интернету требуется проверка подлинности) или сетевое устройство принтера для печати веб-страницы. Процесс низкой целостности также может инициировать подключение с проверкой подлинности к другим сетевым службам и таким образом пройти проверку подлинности на этих серверах в качестве текущего пользователя.

Разработка приложений интернет-Обозреватель требует некоторой реструктуризации для запуска в защищенном режиме на низком уровне целостности. Основное изменение заключается в том, что некоторые операции программы были перемещены в отдельный процесс, известный как процесс брокера, выполняющийся на среднем уровне целостности. Процесс брокера запускается на среднем уровне целостности, когда пользователь щелкает значок интернет-Обозреватель или ссылку URL-адреса. Брокер проверяет url-адрес и политику зоны и запускает дочерний процесс, iexplore.exe, на низком уровне целостности, чтобы установить подключение к Интернету и отобразить веб-страницу. На следующем рисунке из Обозреватель процесса показаны ieuser.exe, процесс брокера на среднем уровне целостности и процесс iexplore.exe на низком уровне целостности.

Рис. 8. Защищенный режим интернет-Обозреватель процессов

Все, что пользовательский интерфейс в интернет-Обозреватель веб-браузере выполняется в процессе низкой целостности. Некоторые конкретные операции, такие как изменение параметров браузера или диалоговое окно "Сохранить как файл ", обрабатываются процессом брокера. Если URL-адрес является доверенным сайтом на основе параметров политики зоны по умолчанию, процесс брокера запускает другой экземпляр iexplore.exe в процессе средней целостности. Все расширения браузера и элементы ActiveX выполняются в процессе низкой целостности. Это имеет преимущество в том, что любой потенциальный эксплойт расширения браузера также выполняется с низкой целостностью.

Интернет-Обозреватель несколько сложнее, чем другие приложения, так как он размещает расширения браузера и элементы ActiveX, которые не разработаны корпорацией Майкрософт, запускает другие приложения на основе типов MIME для различных расширений файлов и интегрирует клиентское окно из разных приложений в одном родительском окне. Пользователи также скачивают программное обеспечение из Интернета через браузер и сразу же запускают пакет приложения или установщик приложения. Для многих из этих операций требуется помощь от процесса брокера на более высоком уровне целостности, чтобы посредник через пользователя подтвердить операцию. В противном случае код, запущенный в браузере, может установить вредоносное программное обеспечение в системе и попытаться изменить или удалить данные пользователя. Установка элементов ActiveX выполняется с помощью задачи с повышенными привилегиями, запущенной UAC, требующей прав администратора.

Поскольку интернет-Обозреватель поддерживает широкий спектр взаимодействия пользователей между браузером и другими локальными приложениями (копирование и вставка является одним из очевидных примеров), механизм целостности, ограничивающий доступ на запись к объектам, не является механизмом полной изоляции. В разработке защищенного режима интернет-Обозреватель были в центре вложены различные взаимодействия и, в частности, было адаптировано поведение брокера и процесса с низкими правами iexplore.exe для поддержания функциональных возможностей с минимальными привилегиями, обеспечивая при этом широкие возможности совместной работы пользователей.

Дополнительные сведения о защищенном режиме интернет-Обозреватель см. в разделе Основные сведения о работе в защищенном режиме Обозреватель Интернета (https://go.microsoft.com/fwlink/?LinkId=90931).