最小特权原则与用户界面权限隔离

时间:2018-02-10 17:47:35

标签: winapi win32gui win32-process least-privilege

这一直让我很困惑。这是一个陈述“最小特权原则”的陈述,而另一个陈述陈述,使用UIPI来保护应用程序免受低完整性级别进程的影响。

作为一个应用程序,我可能不会进行任何特权操作,但为了保护我的UI(使用UIPI),我将被迫将我的应用程序提升到高度完整性。

矛盾。有没有人对此有更好的解释?

我知道这些之间的区别。我不是在寻找这些是什么。我正在研究如何平衡这些。

例如,

我正在开发一个应用程序,我没有进行任何特权操作,因此我的应用程序可以在低完整性级别运行。因此,根据最小特权原则,我很乐意以低完整性级别执行我的应用程序。但如果我以低完整性级别运行我的应用程序,我很容易受到UIPI的攻击。任何人都可以发送消息并导致DOS攻击。这让我想到,我是否应该继续将我的应用程序作为高完整性启动,这样其他任何中等完整性应用程序都无法攻击我的应用程序。但这违背了“最小特权原则”

1 个答案:

答案 0 :(得分:3)

在Vista中添加了

Mandatory Integrity Control,它有6个主要的完整性级别,但只有3个用于正常的用户进程;低,中,高。

默认情况下,Win32进程以中等完整性级别运行(从资源管理器等启动时),因此大多数Win32应用程序已经受到低完整性级别进程(UWP应用程序,Edge,IE和Chrome)的保护。

UIPI检查发送方和接收方的完整性级别,如果发送方> =接收方,则允许进行交互。有一些例外。系统目录中已签名的UIAccess应用程序具有特殊访问权限,您可以根据需要在应用程序中手动添加特定消息的异常。

您可以使用Process Explorer查看流程完整性级别。

从用户的角度来看,以中等IL运行的应用程序是受信任的,您不必担心保护自己免受这些攻击。高IL应用程序受用户/管理员和机器的信任。除非您需要随附的其他权限,否则不应运行高IL。低IL适用于Web浏览器和PDF阅读器等高风险应用程序。

这在任何地方都没有记录,但是当前的实现允许您创建自己的级别,因此您可以在低级和中级之间的某种程度上运行应用程序。