用户界面特权隔离

用户界面特权隔离(User Interface Privilege Isolation,简称UIPI),是从Windows NT 6.0开始引入的技术。其目的在于防止粉碎窗口攻击英语Shatter attack。通过结合强制完整性控制,用户界面特权隔离阻止较低等完整性级别(Integrity level)的进程向较高等完整性级别进程的窗口发送消息,但也有一些消息不被阻止。[1] Windows消息是一种进程间通信机制,可被低等完整性级别的恶意软件利用,在较高等完整性级别的进程上下文里执行任意代码,可能允许特权提升。

用户界面特权隔离和强制完整性控制都不是安全边界,它并不能完全抵挡粉碎窗口攻击。用户界面辅助功能程序可以通过在它们的应用程序清单(manifest)文件中将“uiAccess”设为TRUE来绕过用户界面特权隔离。这些程序必须位于Program Files或Windows文件夹中,且必须拥有有效的数字签名。此外,一些消息仍然被允许,例如WM_KEYDOWN,以便低完整性级别的程序发送输入到提升后的命令提示符。最后,函数ChangeWindowMessageFilter允许中完整性级别的进程改变高完整性级别的进程能从低完整性级别的进程接收什么消息。

注释和参考

编辑