Listas de controle de acesso para COM

O Windows Server XP Service Pack 2 (SP 2) e o Windows Server 2003 Service Pack 1 (SP 1) introduzem aprimoramentos de segurança para o DCOM (Distributed Component Object Model). Um desses aprimoramentos são direitos de acesso mais específicos para uso em listas de controle de acesso (ACLs). Os direitos de acesso são:

COM_RIGHTS_EXECUTE 1
COM_RIGHTS_EXECUTE_LOCAL 2
COM_RIGHTS_EXECUTE_REMOTE 4
COM_RIGHTS_ACTIVATE_LOCAL 8
COM_RIGHTS_ACTIVATE_REMOTE 16

Para fornecer compatibilidade com versões anteriores, uma ACL pode existir no formato usado antes do Windows XP SP 2 e Windows Server 2003 SP 1, que usa apenas o direito de acesso COM_RIGHTS_EXECUTE, ou pode existir no novo formato usado no Windows XP SP 2 e Windows Server 2003 SP 1, que usa COM_RIGHTS_EXECUTE juntamente com uma combinação de COM_RIGHTS_EXECUTE_LOCAL, COM_RIGHTS_EXECUTE_REMOTE, COM_RIGHTS_ACTIVATE_LOCAL e COM_RIGHTS_ACTIVATE_REMOTE.

Observação

COM_RIGHTS_EXECUTE deve estar sempre presente; A ausência desse direito gera um descritor de segurança inválido.

 

Você não deve misturar o formato antigo e o novo formato em uma única ACL; ou todas as entradas de controle de acesso (ACEs) devem conceder apenas o direito de acesso COM_RIGHTS_EXECUTE, ou todas elas devem conceder COM_RIGHTS_EXECUTE juntamente com uma combinação de COM_RIGHTS_EXECUTE_LOCAL, COM_RIGHTS_EXECUTE_REMOTE, COM_RIGHTS_ACTIVATE_LOCAL e COM_RIGHTS_ACTIVATE_REMOTE.

A seguir está um exemplo de uma ACL formatada incorretamente:

Revision 1
Sbz1 0
Control 0x8004
    SE_DACL_PRESENT
    SE_SELF_RELATIVE
Owner: S-1-5-21-1597522630-148096252-1166023319-500 (no name mapped)
Group: S-1-5-21-1597522630-148096252-1166023319-500 (no name mapped)
DACL:
    AclRevision 2
    Sbz1 0
    AclSize 128
    AceCount 4
    Sbz2 0
    Ace[0]
        AceType 0: ACCESS_ALLOWED_ACE_TYPE
        AceFlags 0
        AceSize 36
        AccessMask 0x1
        S-1-5-21-1597522630-148096252-1166023319-500 (no name mapped)
    Ace[1]
        AceType 0: ACCESS_ALLOWED_ACE_TYPE
        AceFlags 0
        AceSize 20
        AccessMask 0xb
        S-1-5-18 (Well Known Group: NT AUTHORITY\SYSTEM)
    Ace[2]
        AceType 0: ACCESS_ALLOWED_ACE_TYPE
        AceFlags 0
        AceSize 20
        AccessMask 0x9
        S-1-5-11 (Well Known Group: NT AUTHORITY\Authenticated Users)
SACL:
    (null)

Observe que a primeira entrada de controle de acesso (ACE) concede COM_RIGHTS_EXECUTE (0x1) apenas, enquanto a segunda ACE concede COM_RIGHTS_EXECUTE, COM_RIGHTS_EXECUTE_LOCAL e COM_RIGHTS_ACTIVATE_LOCAL (0xb), e a terceira concede COM_RIGHTS_EXECUTE e COM_RIGHTS_ACTIVATE_LOCAL (0x9).

Para corrigir isso, a primeira ACE deve ser alterada para conceder COM_RIGHTS_EXECUTE em combinação com um dos outros quatro direitos de acesso, ou então a segunda e a terceira ACEs devem ser alteradas para conceder apenas COM_RIGHTS_EXECUTE.

Aprimoramentos de segurança DCOM no Windows XP Service Pack 2 e Windows Server 2003 Service Pack 1

Segurança em COM