AppIDFlags
Набор флагов, управляющих поведением активации COM-сервера.
Параметр реестра
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AppID
{AppID_GUID}
AppIDFlags = flags
Remarks
Это значение REG_DWORD .
Значение флага | Постоянно |
---|---|
0x1 | APPIDREGFLAGS_ACTIVATE_IUSERVER_INDESKTOP |
0x2 | APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND |
0x4 | APPIDREGFLAGS_ISSUE_ACTIVATION_RPC_AT_IDENTIFY |
описание APPIDREGFLAGS_ACTIVATE_IUSERVER_INDESKTOP
Если флаг APPIDREGFLAGS_ACTIVATE_IUSERVER_INDESKTOP очищается в AppIDFlags или если AppIDFlags отсутствует, клиент в сеансе сервера терминала, выполняющий запрос на активацию для com-сервера Interactive User , привязывается или запускается и привязывается, COM-сервер на рабочем столе "по умолчанию" станции окна winsta0 сеанса в запросе активации. Например, если клиент выполняет "winsta0\desktop1" сеанса 3, запрос на активацию сеанса 3 будет либо привязан, либо запускается и привязывается, COM-сервер в winsta0\default сеанса 3, даже если экземпляр COM-сервера уже запущен в сеансе 3 "winsta0\desktop1".
Если флаг APPIDREGFLAGS_ACTIVATE_IUSERVER_INDESKTOP задан в значении AppIDFlags , COM привязывается или запускается и привязывается, серверный процесс, выполняемый на рабочем столе клиента, и сеанс в запросе активации. Например, если клиент работает под управлением winsta0\desktop1 в сеансе 3, запрос на активацию сеанса 3 привязывается к сеансу 3 или запускается и привязывается, COM-сервер в winsta0\desktop1 в сеансе 3, даже если экземпляр COM-сервера уже запущен в "winsta0\default" в сеансе 3.
Клиент может использовать моникер сеанса , чтобы указать сеанс, отличный от сеанса клиента при выполнении запроса на активацию.
Флаг APPIDREGFLAGS_ACTIVATE_IUSERVER_INDESKTOP применяется только к COM-серверам, настроенным для запуска "Интерактивный пользователь".
описание APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND
Если флаг APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND задан в AppIDFlags, COM-серверы, настроенные для запуска от имени "Активатор", будут запущены с помощью дескриптора безопасности процесса, который позволяет PROCESS_ALL_ACCESS идентификатору БЕЗОПАСНОСТИ входа маркера процесса. Кроме того, владельцу дескриптора безопасности будет присвоен идентификатор sid LogonID маркера процесса.
Если флаг APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND задан в AppIDFlags, COM-серверы, настроенные для запуска "Этот пользователь", будут запущены с помощью дескриптора безопасности процесса, который позволяет PROCESS_ALL_ACCESS в идентификаторе безопасности входа маркера процесса. Кроме того, владельцу дескриптора безопасности будет присвоен идентификатор sid LogonID маркера процесса. Кроме того, диспетчер управления службами COM (SCM) изменяет токен процесса COM-сервера следующим образом:
- Он добавляет идентификатор БЕЗОПАСНОСТИ APPID в маркер. Он предоставляет полный доступ к идентификатору БЕЗОПАСНОСТИ APPID в списке управления доступом по умолчанию по умолчанию (DACL). В Windows Vista и более поздних версиях Windows предоставляется разрешение READ_CONTROL sid ownerRights в daCL по умолчанию маркера. В версиях Windows pre-Windows Vista владелец токена задает идентификатор безопасности APPID.
При использовании флага APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND необходимо учитывать следующие аспекты безопасности:
- Флаг APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND должен быть задан COM-серверами, запускаемыми в одном из встроенных контекстов безопасности службы; Учетные записи NetworkService или LocalService. Если серверы олицетворяют привилегированные клиенты и если флаг APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND не задан, вредоносный код, выполняемый в других процессах с тем же контекстом безопасности, может повысить привилегии, перехватив маркеры олицетворения привилегированных клиентов из процесса COM-сервера.
- При установке флага APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND COM ужесточает дескриптор безопасности объекта процесса в случае с COM-серверами RunAs "Активатор". Для таких серверов com-клиент должен ужесточить маркер, который он использует для активации COM.
- При установке флага APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND COM заверяет дескриптор безопасности объекта процесса в случае с COM-серверами RunAs "This User". Он также ужесточает маркер процесса COM-сервера, так как COM SCM является сущностью, создающей маркер.
Флаг APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND поддерживается в Windows XP, Windows Server 2003, Windows Vista и Windows Server 2008 только при применении исправления MSRC8322 (бюллетень по безопасности MS09-012). Она изначально поддерживается в Windows 7 и более поздних версиях Windows.
Флаг APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND применяется только к COM-серверам, настроенным для запуска "Активатор" или "Этот пользователь". Он не применяется к COM-серверам, которые являются службами NT.
Описание APPIDREGFLAGS_ISSUE_ACTIVATION_RPC_AT_IDENTIFY
Если флаг APPIDREGFLAGS_ISSUE_ACTIVATION_RPC_AT_IDENTIFY задан в AppIDFlags, COM SCM выдаст запросы на активацию объектов процессу COM-сервера с помощью уровня олицетворения RPC_C_IMP_LEVEL_IDENTIFY.
Если флаг APPIDREGFLAGS_ISSUE_ACTIVATION_RPC_AT_IDENTIFY не задан, COM SCM выдает запросы на активацию объектов процессам COM-сервера с использованием уровня олицетворения RPC_C_IMP_LEVEL_IMPERSONATE.
При использовании флага APPIDREGFLAGS_ISSUE_ACTIVATION_RPC_AT_IDENTIFY необходимо учитывать следующие факторы безопасности:
- Флаг APPIDREGFLAGS_ISSUE_ACTIVATION_RPC_AT_IDENTIFY предназначен для использования COM-серверами, которые не выполняют работу от имени клиентов в запросах активации объектов. Для таких серверов запросы на активацию объектов com SCM RPC_C_IMP_LEVEL_IDENTIFY минимизирует вероятность получения привилегированных маркеров с SE_IMPERSONATE_NAME уровня, который отображается в процессе.
Флаг APPIDREGFLAGS_ISSUE_ACTIVATION_RPC_AT_IDENTIFY поддерживается в Windows 7 и более поздних версиях Windows.
Связанные темы