Exportar (0) Imprimir
Expandir Todos

Melhoramentos de Segurança DCOM

Qual a função do DCOM?

O COM (Component Object Model) da Microsoft é um sistema orientado para objectos, distribuído e independente da plataforma, para criar componentes de software binários que podem interagir. O DCOM (Distributed Component Object Model) permite uma distribuição adequada e lógica das aplicações entre localizações. O protocolo de rede DCOM fornece, de modo transparente, suporte para comunicações fiáveis, seguras e eficientes entre componentes COM. Para mais informações, consulte a página sobre COM (Component Object Model) no Web site da Microsoft, em http://go.microsoft.com/fwlink/?LinkId=20922.

A quem se aplica esta função?

Se só utilizar o COM para componentes COM em execução, esta secção não se aplica a si.

Esta função aplica-se aos utilizadores que têm uma aplicação de servidor COM que cumpre um dos seguintes critérios:

  • A permissão de acesso à aplicação é menos rígida do que a permissão de arranque necessária para executá-la.
  • Normalmente, a aplicação é activada por um cliente COM remoto sem a utilização de uma conta administrativa.
  • A aplicação destina-se apenas a utilização local. Isto significa que pode restringir a aplicação do servidor COM de modo a não ser acedida remotamente.

Que nova funcionalidade foi adicionada a esta função no Windows Server 2003 Service Pack 1?

Restrições no âmbito do computador

Descrição detalhada

Foi efectuada uma alteração no COM para fornecer controlos de acesso no âmbito do computador que regem o acesso a todos os pedidos de chamada, activação ou arranque (lançamento) no computador. Considere estes controlos de acesso como uma chamada AccessCheck adicional efectuada relativamente a uma ACL (access control list, lista de controlo de acesso) no âmbito do computador em cada chamada, activação ou arranque de qualquer servidor COM no computador. Se o AccessCheck falhar, o pedido de chamada, activação ou arranque será negado. (Este procedimento ocorre para além de qualquer AccessCheck executado relativamente às ACL específicas do servidor.) Com efeito, fornece um padrão de autorização mínimo que tem de ser cumprido para aceder a qualquer servidor COM no computador. Haverá uma ACL no âmbito do computador para as permissões de arranque, para abranger direitos de activação e arranque, e uma ACL no âmbito do computador para as permissões de acesso, para abranger os direitos de chamada. Poderá configurá-las através de Serviços de Componentes da MMC (Microsoft Management Console, Consola de Gestão da Microsoft).

Estas ACL no âmbito do computador permitem substituir definições de segurança ineficazes especificadas por uma determinada aplicação através de CoInitializeSecurity ou de definições de segurança específicas da aplicação. Isto fornece um padrão de segurança mínimo que tem de ser cumprido, independentemente das definições do servidor específico.

Estas ACL são verificadas quando se acede às interfaces expostas pelo RPCSS. Trata-se de um método que permite controlar quem tem acesso a este serviço do sistema.

Estas ACL fornecem uma localização centralizada onde um administrador pode definir a política de autorização geral aplicável a todos os servidores COM no computador.

Por predefinição, as definições de restrição do computador com o Windows Server 2003 SP1 são as seguintes.

Definições de Restrição do Computador DCOM

Permissão Administrador Utilizadores COM Distribuídos (Grupo Incorporado) Todos Anónimo

Arranque

Arranque Local

Activação Local

Arranque Remoto

Activação Remota

Arranque Local

Activação Local

Arranque Remoto

Activação Remota

Arranque Local

Activação Local

N/A

Acesso

N/A

Acesso Local

Acesso Remoto

Acesso Local

Acesso Remoto

Acesso Local

Acesso Remoto

noteNota
A função Utilizadores COM Distribuídos constitui um novo grupo incorporado incluído no Windows Server 2003 Service Pack 1 para acelerar o processo que consiste em adicionar utilizadores às definições de restrição do computador DCOM.

Porque é que esta alteração é importante?

Muitas aplicações COM incluem código específico de segurança (por exemplo, a chamada de CoInitializeSecurity), mas utilizam definições ineficazes, permitindo frequentemente o acesso não autenticado ao processo. Actualmente, não existe nenhuma forma de um administrador substituir estas definições para obter uma segurança mais eficaz em versões anteriores do Windows.

A infra-estrutura COM inclui o RPCSS, um serviço de sistema executado durante o arranque do sistema e sempre posteriormente. Gere a activação dos objectos COM e a tabela de objectos em execução e fornece serviços de ajuda ao DCOM remoto. Expõe as interfaces RPC que podem ser chamadas remotamente. Uma vez que alguns servidores COM permitem o acesso remoto não autenticado (conforme explicado na secção anterior), estas interfaces podem ser chamadas por qualquer utilizador, incluindo os não autenticados. Como resultado, o RPCSS pode ser atacado por utilizadores mal intencionados utilizando computadores remotos não autenticados.

Nas versões anteriores do Windows, não havia forma de um administrador compreender o nível de exposição dos servidores COM num computador. O administrador podia ter uma ideia do nível de exposição verificando sistematicamente as definições de segurança configuradas para todas as aplicações COM registadas no computador; mas, pelo facto de existirem cerca de 150 servidores COM numa instalação predefinida do Windows, tratava-se de uma tarefa desencorajadora. Não havia forma de visualizar as definições de um servidor que incorpora segurança no software, a não ser revendo o código fonte desse software.

As restrições no âmbito do computador DCOM atenuam estes três problemas. Também permitem que o administrador desactive chamadas de acesso, arranque e activação DCOM a receber.

O que funciona de maneira diferente?

Por predefinição, são concedidas permissões de arranque local, activação local e acesso local ao grupo Todos. Isto deverá permitir que todos os cenários locais funcionem sem modificação do software ou sistema operativo.

Por predefinição, são concedidas permissões de acesso remoto aos grupos Todos e Anónimo. Isto possibilita a maioria dos cenários de cliente COM, incluindo o caso comum em que um cliente COM transmite uma referência local a um servidor remoto, tornando efectivamente o cliente num servidor.

Também por predefinição, apenas são concedidas permissões de activação e arranque remotos aos membros do grupo Administradores. Deste modo, não são permitidas as activações remotas por não administradores em servidores COM instalados.

Como posso resolver estes problemas?

Se implementar um servidor COM e pretender suporte de activação remota por um cliente COM não administrativo ou por chamadas remotas não autenticadas, deverá ter em consideração se o risco associado à activação deste processo é aceitável, ou se deve modificar a implementação de modo a não requerer a activação remota por um cliente COM não administrativo.

Se o risco for aceitável e desejar permitir a activação remota por um cliente COM não administrativo, terá de alterar a configuração predefinida desta função.

Pode alterar as definições da configuração utilizando Serviços de Componentes da Consola de Gestão da Microsoft (MMC) ou o registo do Windows.

Se utilizar o snap-in Serviços de Componentes da MMC, estas definições podem ser configuradas no separador Segurança COM da caixa de diálogo Propriedades do computador que está a ser gerido. O separador Segurança COM foi modificado de modo a permitir a definição de limites no âmbito do computador para além das predefinições padrão dos servidores COM. Além disso, pode fornecer definições de ACL separadas para o acesso local e remoto tanto em termos de limites como de predefinições.

Em alternativa, pode configurar estas definições de ACL utilizando o registo.

Estas ACL estão armazenadas no registo nas seguintes localizações:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Ole\MachineAccessRestriction= ACL
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Ole\MachineLaunchRestriction= ACL

Estes são valores com nome do tipo REG_BINARY, que contém dados descritivos da ACL dos principais que podem aceder a qualquer classe COM ou objecto COM no computador. Os direitos de acesso na ACL são os seguintes:

COM_RIGHTS_EXECUTE 1
COM_RIGHTS_EXECUTE_LOCAL 2
COM_RIGHTS_EXECUTE_REMOTE 4
COM_RIGHTS_ACTIVATE_LOCAL 8
COM_RIGHTS_ACTIVATE_REMOTE 16

É possível criar estas ACL utilizando as funções normais de segurança.

noteNota
Os direitos COM_RIGHTS_EXECUTE têm de estar sempre presentes, uma vez que a sua ausência gerará um descritor de segurança inválido. Estas definições só podem ser modificadas por utilizadores com direitos de Administrador.

Que funcionalidade existente foi alterada no Windows Server 2003 Service Pack 1?

Execução do RPCSS como um serviço de rede

Descrição detalhada

O RPCSS é um serviço de chaves para a infra-estrutura Mapeador de ponto final RPC/DCOM com ligação à rede. Nas versões anteriores do Windows, este serviço era executado como um Sistema Local. Para reduzir a superfície de ataque do Windows e permitir uma defesa rigorosa, a funcionalidade do serviço RPCSS foi dividida em dois serviços. O serviço RPCSS com toda a funcionalidade original que não requeria privilégios de Sistema Local é agora executado na conta do Serviço de Rede. Um novo serviço DCOMLaunch com funcionalidade que requer privilégios de Sistema Local é executado na conta do Sistema Local, no entanto, este serviço não tem ligação à rede.

Porque é que esta alteração é importante?

Esta alteração reduz a superfície de ataque e permite uma defesa rigorosa do serviço RPCSS, uma vez que a elevação de privilégios no serviço RPCSS está agora limitada ao privilégio de Serviço de Rede.

O que funciona de maneira diferente?

Esta alteração deverá ser transparente para os utilizadores, uma vez que a combinação dos serviços RPCSS e DCOMLaunch é equivalente ao serviço RPCSS das versões anteriores do Windows.

Permissões COM mais específicas

Descrição detalhada

As aplicações de servidor COM têm dois tipos de permissões: permissões de arranque e permissões de acesso. As permissões de arranque controlam a autorização para iniciar um servidor COM durante a activação COM, caso o servidor ainda não esteja em execução. Estas permissões são definidas como descritores de segurança especificados nas definições do registo. As permissões de acesso controlam a autorização para chamar um servidor COM em execução. Estas permissões são definidas como descritores de segurança fornecidos à infra-estrutura COM através da API CoInitializeSecurity ou utilizando as definições do registo. As permissões de arranque e acesso autorizam ou negam o acesso com base nos principais, não fazendo distinção entre um autor de chamada local ou remoto para o servidor.

A primeira alteração distingue os direitos de acesso COM, com base na distância. As duas distâncias definidas são Local e Remota. Uma mensagem COM Local chega através do protocolo LRPC (Lightweight Remote Procedure Call, Chamada de Procedimento Remoto Ligeira), enquanto uma mensagem COM Remota chega através de um protocolo anfitrião RPC (Remote Procedure Call, chamada de procedimento remoto), tal como o protocolo TCP (transmission control protocol, protocolo de controlo de transmissão).

A activação COM consiste em obter um proxy da interface COM num cliente chamando CoCreateInstance ou uma das respectivas variantes. Como efeito secundário deste processo de activação, por vezes é necessário iniciar um servidor COM para satisfazer o pedido do cliente. Uma ACL de permissões de arranque declara quem está autorizado a iniciar um servidor COM. Uma ACL de permissões de acesso declara quem está autorizado a activar um objecto COM ou a chamar esse objecto quando o servidor COM já estiver em execução.

A segunda alteração consiste na separação dos direitos de chamada e activação, para reflectir duas operações distintas e mover o direito de activação da ACL de permissão de acesso para a ACL de permissão de arranque. Uma vez que tanto a activação como o arranque estão relacionados com a obtenção de um apontador de interface, os direitos de acesso de activação e arranque devem, logicamente, pertencer ambos à mesma ACL. Uma vez que as permissões de arranque são sempre especificadas através da configuração (em comparação com as permissões de acesso, frequentemente especificadas de modo programático), a colocação dos direitos de activação na ACL de permissão de arranque permite ao administrador controlar a activação.

As ACE (access control entries, entradas de controlo de acesso) de Permissão de Arranque estão divididas em quatro direitos de acesso:

  • Arranque Local (LL)
  • Arranque Remoto (RL)
  • Activação Local (LA)
  • Activação Remota (RA)

O descritor de segurança da Permissão de Acesso está dividido em dois direitos de acesso:

  • Chamadas de Acesso Local (LC)
  • Chamadas de Acesso Remoto (RC)

Isto permite ao administrador aplicar configurações de segurança muito específicas. Por exemplo, pode configurar um servidor COM de modo a aceitar chamadas locais de todos os utilizadores, embora aceite apenas chamadas remotas provenientes de Administradores. Estas distinções podem ser especificadas através de alterações aos descritores de segurança de Permissões COM.

Porque é que esta alteração é importante? Que ameaças ajuda a atenuar?

As versões anteriores da aplicação de servidor COM não têm nenhuma forma de restringir uma aplicação de modo a que só possa ser utilizada localmente, sem expor a aplicação na rede através de DCOM. Quando um utilizador tem acesso a uma aplicação de servidor COM, tem acesso tanto para utilização local como remota.

É possível que uma aplicação de servidor COM pretenda expor-se a utilizadores não autenticados para implementar um cenário de chamada de retorno COM. Neste cenário, a aplicação tem igualmente de expor a respectiva activação a utilizadores não autenticados, o que poderá não ser desejável, uma vez que esse cenário poderá ser utilizado por utilizadores mal intencionados para obter acesso não autorizado a esse servidor.

A utilização de permissões COM precisas oferece flexibilidade ao administrador para controlar a política de permissão COM de um computador. Estas permissões activam a segurança dos cenários descritos.

O que funciona de maneira diferente? Existem dependências?

Para fornecer retro-compatibilidade, os descritores de segurança COM existentes são interpretados para autorizar ou negar o acesso local e remoto simultaneamente. Ou seja, uma entrada de controlo de acesso autorizará tanto o acesso local como remoto, ou negará ambos.

Não existem problemas de retro-compatibilidade para os direitos de chamada ou de arranque. Contudo, existe um problema de compatibilidade relacionado com os direitos de activação. Se, nos descritores de segurança existentes para um servidor COM, as permissões de arranque configuradas forem mais restritivas do que as permissões de acesso e mais restritivas do que o minimamente necessário para cenários de activação de clientes, a ACL de Permissões de Arranque tem de ser modificada, de modo a conceder as permissões de activação adequadas aos clientes autorizados.

Relativamente às aplicações COM que utilizam as predefinições de segurança, não existem problemas de compatibilidade. Quanto às aplicações iniciadas dinamicamente utilizando a activação COM, a maioria não apresentará problemas de compatibilidade, uma vez que as permissões de arranque já têm de incluir todos os utilizadores que podem activar um objecto. Caso contrário, essas aplicações teriam dado origem a falhas na activação antes mesmo de se aplicar o Service Pack 1, quando os autores das chamadas sem permissão de arranque tentam activar um objecto e o servidor COM ainda não se encontra em execução.

As aplicações mais preocupantes em termos de compatibilidade são as aplicações COM já iniciadas através de qualquer outro mecanismo, tal como o Explorador do Windows ou o Gestor de Controlo de Serviços. Estas aplicações também podem ser iniciadas através de uma activação COM prévia, que substitui as permissões de acesso e arranque predefinidas e especifica permissões de arranque mais restritivas do que as permissões de chamada. Para obter mais detalhes sobre como lidar com este problema de compatibilidade, consulte "Como posso resolver estes problemas?" na secção seguinte.

Se instalar um service pack anterior num sistema que tenha sido actualizado para o Windows Server 2003 Service Pack 1, qualquer entrada de controlo de acesso que tenha sido editada para permitir o acesso local, o acesso remoto, ou ambos, será interpretada de modo a permitir tanto o acesso local como remoto. Qualquer ACE que tenha sido editada para negar o acesso local, o acesso remoto, ou ambos, será interpretada de modo a negar tanto o acesso local como remoto. Sempre que desinstalar um service pack, deverá garantir que nenhuma ACE recentemente definida faça com que as aplicações deixem de funcionar.

Como posso resolver estes problemas?

Se implementar um servidor COM e substituir as predefinições de segurança, certifique-se de que a ACL de permissões de arranque específicas da aplicação concede a permissão de activação aos utilizadores correctos. Se isso não acontecer, terá de alterar a ACL de permissão de arranque específica da aplicação de modo a conceder direitos de activação aos utilizadores correctos, evitando assim a falha das aplicações e componentes do Windows que utilizam DCOM. Estas permissões de arranque específicas da aplicação são armazenadas no registo.

É possível criar ou modificar as ACL COM utilizando as funções normais de segurança.

Quais as definições adicionadas ou alteradas no Windows Server 2003 Service Pack 1?

CautionAtenção
A utilização incorrecta destas definições poderá provocar a falha das aplicações e componentes do Windows que utilizam DCOM.

Na tabela a seguir, são utilizadas as abreviaturas seguintes:

LL - Arranque Local

LA - Activação Local

RL - Arranque Remoto

RA - Activação Remota

LC - Chamadas de Acesso Local

RC - Chamadas de Acesso Remoto

Definições DCOM

Nome da definição Localização Valor predefinido anterior Valor predefinido Valores possíveis

Restrição MachineLaunch

HKEY_LOCAL_MACHINE \SOFTWARE \Microsoft\Ole\

Todos: LL, LA, RL, RA

Anónimo: LL, LA, RL, RA

(É uma chave de registo nova. Com base no comportamento existente, estes seriam os valores efectivos.)

Administrador: LL, LA, RL, RA

Todos: LL, LA

Utilizadores COM distribuídos: LL, LA, RL, RA

ACL

Restrição MachineAccess

HKEY_LOCAL_MACHINE \SOFTWARE \Microsoft\Ole\

Todos: LC, RC

Anónimo: LC, RC

(É uma chave de registo nova. Com base no comportamento existente, estes seriam os valores efectivos.)

Todos: LC, RC

Anónimo: LC, RC

ACL

CallFailure LoggingLevel

HKEY_LOCAL_MACHINE \SOFTWARE \Microsoft \Ole\

Não aplicável.

Esta chave de registo não está presente; contudo, uma chave ou valor em falta é interpretado como 2.

Por predefinição, este evento não é registado. Se alterar este valor para 1 de modo a começar a registar estas informações para futura resolução de problemas, não se esqueça de monitorizar o tamanho do registo de eventos, uma vez que este evento em particular pode gerar um elevado número de entradas.

1 - Registar sempre falhas no registo de eventos quando a infra-estrutura COM encontrar um descritor de segurança inválido.

2 - Nunca registar falhas no registo de eventos quando a infra-estrutura COM encontrar um descritor de segurança inválido.

LoggingLevel do Descritor InvalidSecurity

HKEY_LOCAL_MACHINE \SOFTWARE \Microsoft\Ole\

Não aplicável.

Esta chave de registo não está presente; contudo, uma chave ou valor em falta é interpretado como 1.

Por predefinição, este evento é registado. Deverá ocorrer raramente.

1 - Registar sempre falhas no registo de eventos quando a infra-estrutura COM encontrar um descritor de segurança inválido.

2 - Nunca registar falhas no registo de eventos quando a infra-estrutura COM encontrar um descritor de segurança inválido.

DCOM: Restrições de Lançamento de Computador na Sintaxe de SDDL (Security Descriptor Definition Language, Linguagem de Definição de Descritor de Segurança)

(Objecto de Política de Grupo) Configuração do Computador \Definições do Windows \Políticas Locais \Opções de Segurança

Não aplicável.

Não definido.

Lista de Controlo de Acesso em Formato SDDL. A existência desta política substitui os valores em Restrição MachineLaunch, acima.

DCOM: Restrições de Acesso de Computador na Sintaxe de SDDL (Security Descriptor Definition Language, Linguagem de Definição de Descritor de Segurança)

(Objecto de Política de Grupo) Configuração do Computador \Definições do Windows \Políticas Locais \Opções de Segurança

Não aplicável.

Não definido.

Lista de Controlo em Formato SDDL. A existência desta política substitui os valores em Restrição MachineAccess, acima.

Considera isto útil?
(1500 caracteres restantes)
Obrigado pelos seus comentários

Conteúdo da Comunidade

Mostrar:
© 2014 Microsoft