AppIDFlags
一組旗標,可控制 COM 伺服器的啟用行為。
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AppID
{AppID_GUID}
AppIDFlags = flags
這是REG_DWORD值。
旗標值 | 持續性 |
---|---|
0x1 | APPIDREGFLAGS_ACTIVATE_IUSERVER_INDESKTOP |
0x2 | APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND |
0x4 | APPIDREGFLAGS_ISSUE_ACTIVATION_RPC_AT_IDENTIFY |
如果在 AppIDFlags 中清除APPIDREGFLAGS_ACTIVATE_IUSERVER_INDESKTOP旗標,或 AppIDFlags 不存在,則終端伺服器會話中的用戶端會對互動式使用者 COM 伺服器提出啟用要求,將系結至或啟動並系結至啟用要求中會話 “winsta0” 視窗月臺的 “default” 桌面上的 COM 伺服器。 例如,如果用戶端執行會話 3 的 “winsta0\desktop1” ,會話 3 的啟用要求會系結至會話 3 的 “winsta0\default” 中的 COM 伺服器,即使會話 3 的 “winsta0\desktop1” 實例已在會話 3 的 “winsta0\desktop1” 中執行。
如果在 AppIDFlags 值中設定APPIDREGFLAGS_ACTIVATE_IUSERVER_INDESKTOP旗標,COM 將會繫結至或啟動並系結至用戶端桌面執行的伺服器進程,以及啟用要求中的會話。 例如,如果用戶端在會話 3 中執行 「winsta0\desktop1」,會話 3 的啟用要求會系結至會話 3 中的 COM 伺服器,或啟動並系結至會話 3 中的 COM 伺服器,即使 COM 伺服器的實例已在會話 3 中的 “winsta0\default” 中執行。
用戶端可以使用 會話 Moniker ,在提出啟用要求時指定與用戶端會話不同的會話。
APPIDREGFLAGS_ACTIVATE_IUSERVER_INDESKTOP旗標僅適用於設定為 RunAs “Interactive User” 的 COM 伺服器。
如果在 AppIDFlags 中設定APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND旗標,則設定為 RunAs “Activator” 的 COM 伺服器將會以允許PROCESS_ALL_ACCESS進程令牌的 LogonID SID 進程安全性描述元啟動。 此外,安全性描述元的擁有者將會設定為進程令牌的LogonID SID。
如果在 AppIDFlags 中設定APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND旗標,則設定為 RunAs 的 COM 伺服器將會使用行程安全性描述元來啟動,允許在進程令牌的 LogonID SID 中PROCESS_ALL_ACCESS。 此外,安全性描述元的擁有者將會設定為進程令牌的LogonID SID。 此外,COM 服務控制管理員 (SCM) 會修改 COM 伺服器進程的令牌,如下所示:
- 它會將APPID SID新增至令牌。 它會在令牌預設的任意訪問控制清單 (DACL) 中授與 APPID SID 完整存取權。 在 Windows Vista 和更新版本的 Windows 中,它會在令牌預設 DACL 中授與 OwnerRights SID READ_CONTROL 許可權。 在 Windows Vista 之前的 Windows 版本中,它會將令牌擁有者設定為 APPID SID。
使用 APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND 旗標時,必須考慮下列安全性考慮:
- APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND旗標是由在其中一個內建服務安全性內容下啟動的 COM 伺服器所設定;NetworkService 或 LocalService 帳戶。 如果伺服器模擬具特殊許可權的用戶端,且 未設定APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND 旗標,則具有相同安全性內容的其他進程中執行的惡意代碼可能會藉由從 COM 伺服器進程劫持特殊許可權客戶端的模擬令牌來提升許可權。
- 設定APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND旗標時,COM 會在 RunAs “Activator” COM 伺服器的情況下強化進程對象的安全性描述元。 對於這類伺服器,COM 用戶端預期會強化它用於 COM 啟用的令牌。
- 設定APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND旗標時,COM 會在 RunAs “This User” COM 伺服器的情況下強化進程對象的安全性描述元。 它也強化 COM 伺服器的進程令牌,因為 COM SCM 是建立令牌的實體。
只有在套用MSRC8322修補程式(安全性公告 MS09-012)時,Windows XP、Windows Server 2003、Windows Vista 和 Windows Server 2008 才支援APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND旗標。 Windows 7 和更新版本的 Windows 原生支援。
APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND旗標僅適用於設定為 RunAs “Activator” 或 “This User” 的 COM 伺服器。 它不適用於NT服務的 COM 伺服器。
如果在 AppIDFlags 中設定APPIDREGFLAGS_ISSUE_ACTIVATION_RPC_AT_IDENTIFY旗標,COM SCM 會使用模擬層級的 RPC_C_IMP_LEVEL_IDENTIFY,對 COM 伺服器進程發出物件啟用要求。
如果未設定APPIDREGFLAGS_ISSUE_ACTIVATION_RPC_AT_IDENTIFY旗標,COM SCM 會使用模擬層級的 RPC_C_IMP_LEVEL_IMPERSONATE,對 COM 伺服器進程發出物件啟用要求。
使用 APPIDREGFLAGS_ISSUE_ACTIVATION_RPC_AT_IDENTIFY 旗標時,必須考慮下列安全性考慮:
- APPIDREGFLAGS_ISSUE_ACTIVATION_RPC_AT_IDENTIFY旗標是要供 COM 伺服器在物件啟用要求中代表用戶端執行工作的 COM 伺服器使用。 針對這類伺服器,在 RPC_C_IMP_LEVEL_IDENTIFY 發出 COM SCM 發出物件啟用要求,可將具有SE_IMPERSONATE_NAME層級出現在進程中的特殊許可權令牌機率降到最低。
Windows 7 和更新版本的 Windows 支援APPIDREGFLAGS_ISSUE_ACTIVATION_RPC_AT_IDENTIFY旗標。