0
當低完整性進程允許通過COM啓動中/高完整性進程時,是否存在安全風險?安全風險:允許低IL流程啓動提升服務嗎?
當低完整性進程允許通過COM啓動中/高完整性進程時,是否存在安全風險?安全風險:允許低IL流程啓動提升服務嗎?
那麼,根據this documentation
的CoCreateInstance和完整性級別
的CoCreateInstance的行爲在Windows Vista已經改變,以防止低IL客戶從默認綁定到COM服務器。服務器必須通過指定SACL來明確允許這樣的綁定。是CoCreateInstance的變化如下:
- 當啓動一個COM服務器過程中,服務器進程令牌的IL被設置成客戶端或服務器令牌IL的較低者。
- 默認情況下,COM將阻止低IL客戶端綁定到正在運行的任何COM服務器實例。要允許綁定,COM服務器的啓動/激活安全描述符必須包含一個SACL,該SACL指定低IL標籤(請參閱前面的示例代碼以創建此類安全描述符)。
因此,啓動一個COM服務器的新實例時,它也將以低完整性運行。 可以附加到現有的高完整性服務,但必須在SACL中明確啓用。我猜這是潛在的安全風險,因爲如果COM服務器中存在緩衝區溢出(例如),攻擊代碼將最終以高完整性運行。這就是Microsoft爲什麼明確啓用此功能的原因,並且很可能只是爲了提供向後兼容性。