簡介
UIPI指 User Interface Privilege Isolation(用戶界面特權隔離),是Windows NT 6.0後(即Vista)引入的一種新的安全特性,是整個UAC機制的有機組成部分,主要用於攔截接受對自身進程MIC等級還低的進程發來的訊息。更加詳細的信息可以參見百度文庫:
基本原理
根據Windows開發規範,用戶自定義訊息都是大於WM_USER的。UIPI的默認規則是:一個進程如果向高於自己MIC等級的進程傳送高於WM_USER的訊息都會失敗,而系統自定義訊息則會進行選擇性的過濾,某些容易引起危險的信息也會被過濾,比如WM_DROPFILES。
MIC分類
上面提到UIPI是基於進程的MIC等級的,而在Windows NT6.0以後的系統裡面,MIC一共可以分為六個等級:
SECURITY_MANDATORY_UNTRUSTED_RID | 不信任的MIC等級 |
SECURITY_MANDATORY_LOW_RID | 低MIC等級,如IE |
SECURITY_MANDATORY_MEDIUM_RID | 中MIC等級,如Explorer |
SECURITY_MANDATORY_HIGH_RID | 高MIC等級,以管理員身份運行的都是這個等級 |
SECURITY_MANDATORY_SYSTEM_RID | 系統MIC等級,服務應用程式 |
SECURITY_MANDATORY_PROTECTED_PROCESS_RID | 受保護進程的MIC等級 |
兼容性問題
UIPI的引進可以比較有效的解決一些和視窗訊息相關的安全性問題,比如視窗粉碎攻擊,惡意視窗信息等,但也帶來了一定的兼容性問題:
1.以往通過視窗訊息進行進程通信的程式很容易碰到這樣那樣的問題。
2.運行在高MIC等級上的進程無法接受一些常用的系統信息,如前面提到的檔案拖曳訊息。