这一直让我很困惑。这是一个陈述“最小特权原则”的陈述,而另一个陈述陈述,使用UIPI来保护应用程序免受低完整性级别进程的影响。
作为一个应用程序,我可能不会进行任何特权操作,但为了保护我的UI(使用UIPI),我将被迫将我的应用程序提升到高度完整性。
矛盾。有没有人对此有更好的解释?
我知道这些之间的区别。我不是在寻找这些是什么。我正在研究如何平衡这些。
例如,
我正在开发一个应用程序,我没有进行任何特权操作,因此我的应用程序可以在低完整性级别运行。因此,根据最小特权原则,我很乐意以低完整性级别执行我的应用程序。但如果我以低完整性级别运行我的应用程序,我很容易受到UIPI的攻击。任何人都可以发送消息并导致DOS攻击。这让我想到,我是否应该继续将我的应用程序作为高完整性启动,这样其他任何中等完整性应用程序都无法攻击我的应用程序。但这违背了“最小特权原则”
答案 0 :(得分:3)
Mandatory Integrity Control,它有6个主要的完整性级别,但只有3个用于正常的用户进程;低,中,高。
默认情况下,Win32进程以中等完整性级别运行(从资源管理器等启动时),因此大多数Win32应用程序已经受到低完整性级别进程(UWP应用程序,Edge,IE和Chrome)的保护。
UIPI检查发送方和接收方的完整性级别,如果发送方> =接收方,则允许进行交互。有一些例外。系统目录中已签名的UIAccess应用程序具有特殊访问权限,您可以根据需要在应用程序中手动添加特定消息的异常。
您可以使用Process Explorer查看流程完整性级别。
从用户的角度来看,以中等IL运行的应用程序是受信任的,您不必担心保护自己免受这些攻击。高IL应用程序受用户/管理员和机器的信任。除非您需要随附的其他权限,否则不应运行高IL。低IL适用于Web浏览器和PDF阅读器等高风险应用程序。
这在任何地方都没有记录,但是当前的实现允许您创建自己的级别,因此您可以在低级和中级之间的某种程度上运行应用程序。