1

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

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

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

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

例如,

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

4

1 回答 1

3

在 Vista 中添加了强制完整性控制,有 6 个主要的完整性级别,但其中只有 3 个用于正常用户进程;低、中、高。

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

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

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

从用户的角度来看,在中等 IL 上运行的应用程序是受信任的,您不必担心保护自己免受它们的侵害。用户/管理员和机器信任高 IL 应用程序。你不应该在高 IL 下运行,除非你需要它附带的那些额外的权限。低 IL 适用于 Web 浏览器和 PDF 阅读器等高风险应用程序。

这在任何地方都没有记录,但当前的实现允许您创建自己的级别,因此您可以以介于低和中等之间的完整性级别运行您的应用程序。

于 2018-02-10T19:10:25.487 回答