AppIDFlags
Um conjunto de sinalizadores que controlam o comportamento de ativação de um servidor COM.
Entrada do Registro
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AppID
{AppID_GUID}
AppIDFlags = flags
Comentários
Este é um valor REG_DWORD .
Valor da Bandeira | Constante |
---|---|
0x1 | APPIDREGFLAGS_ACTIVATE_IUSERVER_INDESKTOP |
0x2 | APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND |
0x4 | APPIDREGFLAGS_ISSUE_ACTIVATION_RPC_AT_IDENTIFY |
Descrição APPIDREGFLAGS_ACTIVATE_IUSERVER_INDESKTOP
Se o sinalizador APPIDREGFLAGS_ACTIVATE_IUSERVER_INDESKTOP estiver limpo em AppIDFlags ou se AppIDFlags não estiver presente, o cliente em uma sessão do servidor de terminal fazendo uma solicitação de ativação para um servidor COM de usuário interativo, ou iniciará e vinculará ao servidor COM na área de trabalho "padrão" da estação de janela "winsta0" da sessão na solicitação de ativação. Por exemplo, se o cliente estiver executando "winsta0\desktop1" da sessão 3, a solicitação de ativação para a sessão 3 será vinculada ou iniciará e vinculará ao servidor COM em "winsta0\default" da sessão 3, mesmo se uma instância do servidor COM já estiver sendo executada em "winsta0\desktop1" da sessão 3.
Se o sinalizador APPIDREGFLAGS_ACTIVATE_IUSERVER_INDESKTOP estiver definido no valor AppIDFlags, o COM se associará ou iniciará e vinculará ao processo do servidor em execução na área de trabalho do cliente e à sessão na solicitação de ativação. Por exemplo, se o cliente estiver executando "winsta0\desktop1" na sessão 3, a solicitação de ativação para a sessão 3 será vinculada ou iniciará e vinculará ao servidor COM em "winsta0\desktop1" na sessão 3, mesmo se uma instância do servidor COM já estiver sendo executada em "winsta0\default" na sessão 3.
O cliente pode usar o moniker de sessão para especificar uma sessão diferente da sessão do cliente quando ele faz a solicitação de ativação.
O sinalizador APPIDREGFLAGS_ACTIVATE_IUSERVER_INDESKTOP aplica-se somente a servidores COM configurados para RunAs "Usuário interativo".
Descrição APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND
Se o sinalizador APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND estiver definido em AppIDFlags, os servidores COM configurados para RunAs "Activator" serão iniciados com um descritor de segurança de processo que permite PROCESS_ALL_ACCESS ao SID LogonID do token de processo. Além disso, o proprietário do descritor de segurança será definido como o SID LogonID do token de processo.
Se o sinalizador APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND estiver definido em AppIDFlags, os servidores COM configurados para RunAs "Este Usuário" serão iniciados com um descritor de segurança de processo que permite PROCESS_ALL_ACCESS no SID LogonID do token de processo. Além disso, o proprietário do descritor de segurança será definido como o SID LogonID do token de processo. Além disso, o COM Service Control Manager (SCM) modifica o token do processo do servidor COM da seguinte maneira:
- Ele adiciona um SID APPID ao token. Ele concede ao SID APPID acesso total na lista de controle de acesso discricionário (DACL) padrão do token. No Windows Vista e em versões posteriores do Windows, ele concede ao SID OwnerRights READ_CONTROL permissão na DACL padrão do token. Em versões anteriores ao Windows Vista do Windows, ele define o proprietário do token como o SID APPID.
As seguintes considerações de segurança devem ser levadas em conta ao usar o sinalizador APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND:
- O sinalizador APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND deve ser definido por servidores COM que são iniciados em um dos contextos de segurança de serviço internos, as contas NetworkService ou LocalService. Se os servidores representarem clientes privilegiados e se o sinalizador de APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND não estiver definido, o código mal-intencionado em execução em outros processos com o mesmo contexto de segurança poderá elevar o privilégio sequestrando os tokens de representação dos clientes privilegiados do processo do servidor COM.
- Quando o sinalizador APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND é definido, COM protege o descritor de segurança do objeto de processo no caso de servidores COM RunAs "Activator". Para esses servidores, espera-se que o cliente COM proteja o token que ele usa para a ativação COM.
- Quando o sinalizador APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND é definido, COM protege o descritor de segurança do objeto de processo no caso de servidores COM RunAs "This User". Ele também protege o token de processo do servidor COM, já que o SCM COM é a entidade que cria o token.
O sinalizador de APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND é suportado no Windows XP, Windows Server 2003, Windows Vista e Windows Server 2008 somente quando o patch de MSRC8322 (boletim de segurança MS09-012) é aplicado. É suportado nativamente no Windows 7 e versões posteriores do Windows.
O sinalizador APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND aplica-se somente a servidores COM configurados para RunAs "Activator" ou "This User". Ele não se aplica a servidores COM que são serviços NT.
Descrição APPIDREGFLAGS_ISSUE_ACTIVATION_RPC_AT_IDENTIFY
Se o sinalizador APPIDREGFLAGS_ISSUE_ACTIVATION_RPC_AT_IDENTIFY estiver definido em AppIDFlags, o SCM COM emitirá solicitações de ativação de objeto para o processo do servidor COM usando um nível de representação de RPC_C_IMP_LEVEL_IDENTIFY.
Se o sinalizador APPIDREGFLAGS_ISSUE_ACTIVATION_RPC_AT_IDENTIFY não estiver definido, o SCM COM emitirá solicitações de ativação de objeto para os processos do servidor COM usando um nível de representação de RPC_C_IMP_LEVEL_IMPERSONATE.
As seguintes considerações de segurança devem ser levadas em conta ao usar o sinalizador APPIDREGFLAGS_ISSUE_ACTIVATION_RPC_AT_IDENTIFY:
- O sinalizador APPIDREGFLAGS_ISSUE_ACTIVATION_RPC_AT_IDENTIFY destina-se a ser usado por servidores COM que não executam trabalho em nome de clientes em solicitações de ativação de objeto. Para esses servidores, ter o SCM COM emitindo solicitações de ativação de objeto em RPC_C_IMP_LEVEL_IDENTIFY minimiza as chances de tokens privilegiados com SE_IMPERSONATE_NAME nível aparecerem no processo.
O sinalizador APPIDREGFLAGS_ISSUE_ACTIVATION_RPC_AT_IDENTIFY é suportado no Windows 7 e versões posteriores do Windows.
Tópicos relacionados