AppIDFlags
Ein Satz von Flags, die das Aktivierungsverhalten eines COM-Servers steuern.
Registrierungseintrag
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AppID
{AppID_GUID}
AppIDFlags = flags
Bemerkungen
Dies ist ein REG_DWORD Wert.
Flagwert | Konstant |
---|---|
0x1 | APPIDREGFLAGS_ACTIVATE_IUSERVER_INDESKTOP |
0x2 | APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND |
0x4 | APPIDREGFLAGS_ISSUE_ACTIVATION_RPC_AT_IDENTIFY |
APPIDREGFLAGS_ACTIVATE_IUSERVER_INDESKTOP Beschreibung
Wenn das flag APPIDREGFLAGS_ACTIVATE_IUSERVER_INDESKTOP in AppIDFlags deaktiviert ist oder AppIDFlags nicht vorhanden ist, wird der Client in einer Terminalserversitzung, die eine Aktivierungsanforderung für einen interaktiven Benutzer-COM-Server sendet, entweder an den COM-Server im Standarddesktop der "winsta0"- Fensterstation der Sitzung in der Aktivierungsanforderung gebunden oder gestartet und an ihn gebunden. Wenn auf dem Client beispielsweise "winsta0\desktop1" von Sitzung 3 ausgeführt wird, wird die Aktivierungsanforderung für Sitzung 3 entweder an den COM-Server in "winsta0\default" von Sitzung 3 gebunden oder an diesen gebunden, auch wenn bereits ein instance des COM-Servers in "winsta0\desktop1" von Sitzung 3 ausgeführt wird.
Wenn das APPIDREGFLAGS_ACTIVATE_IUSERVER_INDESKTOP-Flag im AppIDFlags-Wert festgelegt ist, wird COM entweder an den Serverprozess, der auf dem Desktop des Clients ausgeführt wird, und die Sitzung in der Aktivierungsanforderung gebunden oder gestartet und an diesen gebunden. Wenn auf dem Client beispielsweise "winsta0\desktop1" in Sitzung 3 ausgeführt wird, wird die Aktivierungsanforderung für Sitzung 3 entweder an den COM-Server in "winsta0\desktop1" in Sitzung 3 gebunden oder an diesen gebunden, auch wenn in Sitzung 3 bereits ein instance des COM-Servers in "winsta0\default" ausgeführt wird.
Der Client kann den Sitzungsmoniker verwenden, um eine andere Sitzung als die Clientsitzung anzugeben, wenn er die Aktivierungsanforderung stellt.
Das flag APPIDREGFLAGS_ACTIVATE_IUSERVER_INDESKTOP gilt nur für COM-Server, die für RunAs "Interactive User" konfiguriert sind.
APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND Beschreibung
Wenn das APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND-Flag in AppIDFlags festgelegt ist, werden COM-Server, die für RunAs "Activator" konfiguriert sind, mit einem Prozesssicherheitsdeskriptor gestartet, der PROCESS_ALL_ACCESS zur LogonID-SID des Prozesstokens ermöglicht. Darüber hinaus wird der Besitzer des Sicherheitsdeskriptors auf die LogonID-SID des Prozesstokens festgelegt.
Wenn das flag APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND in AppIDFlags festgelegt ist, werden COM-Server, die als Ausführende "Dieser Benutzer" konfiguriert sind, mit einem Prozesssicherheitsdeskriptor gestartet, der PROCESS_ALL_ACCESS in der LogonID-SID des Prozesstokens zulässt. Darüber hinaus wird der Besitzer des Sicherheitsdeskriptors auf die LogonID-SID des Prozesstokens festgelegt. Darüber hinaus ändert der COM Service Control Manager (SCM) das Token des COM-Serverprozesses wie folgt:
- Dem Token wird eine APPID-SID hinzugefügt. Sie gewährt der APPID-SID Vollzugriff in der standardmäßigen dacl (Discretionary Access Control List) des Tokens. In Windows Vista und höheren Versionen von Windows gewährt es der OwnerRights-SID READ_CONTROL Berechtigung in der Tokenstandard-DACL. In Windows-Versionen vor Windows Vista wird der Tokenbesitzer auf die APPID-SID festgelegt.
Die folgenden Sicherheitsüberlegungen müssen bei der Verwendung des APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND-Flags berücksichtigt werden:
- Das APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND-Flag soll von COM-Servern festgelegt werden, die unter einem der integrierten Dienstsicherheitskontexte gestartet werden. entweder das NetworkService- oder das LocalService-Konto. Wenn die Server die Identität privilegierter Clients annehmen und das flag APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND nicht festgelegt ist, kann böswilliger Code, der in anderen Prozessen mit demselben Sicherheitskontext ausgeführt wird, berechtigungen erhöhen, indem die Identitätswechseltoken der privilegierten Clients aus dem COM-Serverprozess übernommen werden.
- Wenn das flag APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND festgelegt ist, härtet COM den Sicherheitsdeskriptor des Prozessobjekts im Fall von RunAs "Activator"-COM-Servern. Für solche Server wird erwartet, dass der COM-Client das Token härtet, das er für die COM-Aktivierung verwendet.
- Wenn das APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND-Flag festgelegt ist, härtet COM den Sicherheitsdeskriptor des Prozessobjekts im Fall von RunAs "This User"-COM-Servern. Außerdem wird das Prozesstoken des COM-Servers härtet, da das COM-SCM die Entität ist, die das Token erstellt.
Das APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND-Flag wird in Windows XP, Windows Server 2003, Windows Vista und Windows Server 2008 nur unterstützt, wenn der MSRC8322-Patch (Security Bulletin MS09-012) angewendet wird. Es wird nativ in Windows 7 und höheren Versionen von Windows unterstützt.
Das flag APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND gilt nur für COM-Server, die für RunAs "Activator" oder "This User" konfiguriert sind. Sie gilt nicht für COM-Server, bei denen es sich um NT-Dienste handelt.
APPIDREGFLAGS_ISSUE_ACTIVATION_RPC_AT_IDENTIFY Beschreibung
Wenn das APPIDREGFLAGS_ISSUE_ACTIVATION_RPC_AT_IDENTIFY-Flag in AppIDFlags festgelegt ist, sendet das COM-SCM Objektaktivierungsanforderungen an den COM-Serverprozess mithilfe einer Identitätswechselebene von RPC_C_IMP_LEVEL_IDENTIFY.
Wenn das APPIDREGFLAGS_ISSUE_ACTIVATION_RPC_AT_IDENTIFY-Flag nicht festgelegt ist, gibt das COM-SCM Objektaktivierungsanforderungen an die COM-Serverprozesse aus, wobei die Identitätswechselebene RPC_C_IMP_LEVEL_IMPERSONATE.
Die folgenden Sicherheitsüberlegungen müssen bei der Verwendung des APPIDREGFLAGS_ISSUE_ACTIVATION_RPC_AT_IDENTIFY-Flags berücksichtigt werden:
- Das APPIDREGFLAGS_ISSUE_ACTIVATION_RPC_AT_IDENTIFY-Flag soll von COM-Servern verwendet werden, die in Objektaktivierungsanforderungen keine Arbeit im Auftrag von Clients ausführen. Für solche Server minimiert die Verwendung von COM SCM-Objektaktivierungsanforderungen bei RPC_C_IMP_LEVEL_IDENTIFY die Wahrscheinlichkeit, dass privilegierte Token mit SE_IMPERSONATE_NAME Ebene im Prozess angezeigt werden.
Das APPIDREGFLAGS_ISSUE_ACTIVATION_RPC_AT_IDENTIFY-Flag wird in Windows 7 und höheren Versionen von Windows unterstützt.
Zugehörige Themen