用戶界面特權隔離

用戶界面特權隔離(User Interface Privilege Isolation,簡稱UIPI),是從Windows NT 6.0開始引入的技術。其目的在於防止粉碎窗口攻擊英語Shatter attack。通過結合強制完整性控制,用戶界面特權隔離阻止較低等完整性級別(Integrity level)的進程向較高等完整性級別進程的窗口發送消息,但也有一些消息不被阻止。[1] Windows消息是一種進程間通信機制,可被低等完整性級別的惡意軟件利用,在較高等完整性級別的進程上下文裡執行任意代碼,可能允許特權提升。

用戶界面特權隔離和強制完整性控制都不是安全邊界,它並不能完全抵擋粉碎窗口攻擊。用戶界面輔助功能程序可以通過在它們的應用程序清單(manifest)文件中將「uiAccess」設為TRUE來繞過用戶界面特權隔離。這些程序必須位於Program Files或Windows文件夾中,且必須擁有有效的數字簽名。此外,一些消息仍然被允許,例如WM_KEYDOWN,以便低完整性級別的程序發送輸入到提升後的命令提示符。最後,函數ChangeWindowMessageFilter允許中完整性級別的進程改變高完整性級別的進程能從低完整性級別的進程接收什麼消息。

注釋和參考

編輯