listes Access Control pour COM

Windows Server XP Service Pack 2 (SP2) et Windows Server 2003 Service Pack 1 (SP 1) introduisent des améliorations de sécurité pour le modèle DCOM (Distributed Component Object Model). L’une de ces améliorations est des droits d’accès plus spécifiques à utiliser dans les listes de contrôle d’accès (ACL). Les droits d’accès sont les suivants :

COM_RIGHTS_EXECUTE 1
COM_RIGHTS_EXECUTE_LOCAL 2
COM_RIGHTS_EXECUTE_REMOTE 4
COM_RIGHTS_ACTIVATE_LOCAL 8
COM_RIGHTS_ACTIVATE_REMOTE 16

Pour assurer la compatibilité descendante, une liste de contrôle d’accès peut exister dans le format utilisé avant Windows XP SP 2 et Windows Server 2003 SP 1, qui utilise uniquement le droit d’accès COM_RIGHTS_EXECUTE, ou il peut exister dans le nouveau format utilisé dans Windows XP SP 2 et Windows Server 2003 SP 1, qui utilise COM_RIGHTS_EXECUTE avec une combinaison de COM_RIGHTS_EXECUTE_LOCAL, COM_RIGHTS_EXECUTE_REMOTE, COM_RIGHTS_ACTIVATE_LOCAL et COM_RIGHTS_ACTIVATE_REMOTE.

Notes

COM_RIGHTS_EXECUTE doit toujours être présent; l’absence de ce droit génère un descripteur de sécurité non valide.

 

Vous ne devez pas mélanger l’ancien format et le nouveau format au sein d’une seule ACL ; toutes les entrées de contrôle d’accès (ACE) doivent accorder uniquement le droit d’accès COM_RIGHTS_EXECUTE, ou elles doivent toutes accorder des COM_RIGHTS_EXECUTE avec une combinaison de COM_RIGHTS_EXECUTE_LOCAL, COM_RIGHTS_EXECUTE_REMOTE, COM_RIGHTS_ACTIVATE_LOCAL et COM_RIGHTS_ACTIVATE_REMOTE.

Voici un exemple de liste de contrôle d’accès incorrectement mise en forme :

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)

Notez que la première entrée de contrôle d’accès (ACE) accorde COM_RIGHTS_EXECUTE (0x1) uniquement, tandis que la deuxième ACE accorde COM_RIGHTS_EXECUTE, COM_RIGHTS_EXECUTE_LOCAL et COM_RIGHTS_ACTIVATE_LOCAL (0xb), et la troisième accorde COM_RIGHTS_EXECUTE et COM_RIGHTS_ACTIVATE_LOCAL (0x9).

Pour corriger cela, le premier ACE doit être modifié pour accorder COM_RIGHTS_EXECUTE en combinaison avec l’un des quatre autres droits d’accès, sinon les deuxième et troisième ACE doivent être modifiés pour accorder uniquement COM_RIGHTS_EXECUTE.

Améliorations de la sécurité DCOM dans Windows XP Service Pack 2 et Windows Server 2003 Service Pack 1

Sécurité dans COM