Udostępnij za pośrednictwem


Listy ACL dla COM

System Windows Server XP z dodatkiem Service Pack 2 (SP 2) i Windows Server 2003 z dodatkiem Service Pack 1 (SP 1) wprowadza ulepszenia zabezpieczeń modelu obiektów składników rozproszonych (DCOM). Jednym z tych ulepszeń jest bardziej szczegółowe prawa dostępu do użycia na listach kontroli dostępu (ACL). Prawa dostępu to:

COM_RIGHTS_EXECUTE 1
COM_RIGHTS_EXECUTE_LOCAL 2
COM_RIGHTS_EXECUTE_REMOTE 4
COM_RIGHTS_ACTIVATE_LOCAL 8
COM_RIGHTS_ACTIVATE_REMOTE 16

Aby zapewnić zgodność wsteczną, lista ACL może istnieć w formacie używanym przed Windows XP SP2 i Windows Server 2003 SP1, który używa tylko prawa dostępu COM_RIGHTS_EXECUTE, lub może istnieć w nowym formacie używanym w Windows XP SP2 i Windows Server 2003 SP1, który używa COM_RIGHTS_EXECUTE razem z kombinacją COM_RIGHTS_EXECUTE_LOCAL, COM_RIGHTS_EXECUTE_REMOTE, COM_RIGHTS_ACTIVATE_LOCAL i COM_RIGHTS_ACTIVATE_REMOTE.

Notatka

COM_RIGHTS_EXECUTE zawsze musi być obecny; brak tego prawa generuje nieprawidłowy deskryptor zabezpieczeń.

 

Nie można mieszać starego formatu i nowego formatu w pojedynczej liście ACL; wszystkie wpisy kontroli dostępu (ACE) muszą przyznawać jedynie prawo dostępu COM_RIGHTS_EXECUTE lub wszystkie muszą przyznawać COM_RIGHTS_EXECUTE razem z kombinacją COM_RIGHTS_EXECUTE_LOCAL, COM_RIGHTS_EXECUTE_REMOTE, COM_RIGHTS_ACTIVATE_LOCAL i COM_RIGHTS_ACTIVATE_REMOTE.

Poniżej przedstawiono przykład niepoprawnie sformatowanej listy ACL:

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)

Należy pamiętać, że pierwszy wpis kontroli dostępu (ACE) przyznaje tylko COM_RIGHTS_EXECUTE (0x1), podczas gdy drugi wpis ACE przyznaje COM_RIGHTS_EXECUTE, COM_RIGHTS_EXECUTE_LOCAL i COM_RIGHTS_ACTIVATE_LOCAL (0xb), a trzeci wpis ACE przyznaje COM_RIGHTS_EXECUTE i COM_RIGHTS_ACTIVATE_LOCAL (0x9).

Aby rozwiązać ten błąd, należy zmienić pierwszy ACE w celu udzielenia COM_RIGHTS_EXECUTE w połączeniu z jednym z pozostałych czterech praw dostępu, a w przeciwnym razie należy zmienić drugie i trzecie ACE w celu udzielenia tylko COM_RIGHTS_EXECUTE.

Ulepszenia zabezpieczeń DCOM w systemie Windows XP z dodatkiem Service Pack 2 i Windows Server 2003 z dodatkiem Service Pack 1

Bezpieczeństwo w COM