【发布时间】:2012-11-14 22:03:58
【问题描述】:
我有一个基于 C# 中的 WPF 的程序,我想删除用户调试应用程序的权限 (SeDebugPrivilege)(至少在发布模式下)。最好的方法是什么?我在需要对非托管代码进行不安全调用的代码中找到了几种方法。我更喜欢纯粹在 C# 中执行此操作,或者更好的是,通过应用程序清单或其他方式来阻止用户在执行我的应用程序期间完全拥有 SeDebugPrivilege。是否有声明一个 Windows 组并撤销整个组的特权?这样做的动机是通过遵循最小特权原则来更好地保护我的应用程序的一部分。还有其他权限我确定我想稍后删除,但我想一次只担心一件事。
【问题讨论】:
-
您是否试图阻止用户调试应用程序,或使用您的应用程序执行调试活动?
-
@Iridium 在我看来,这个想法是为了减轻应用程序中任何漏洞的影响。如果应用程序有
SeDebugPrivilege,那么它可以为所欲为,其中包括任何碰巧以某种方式蔓延的恶意代码。 -
@Iridium 我本来打算是前者。我弄错了 SeDebugPrivilege 的用途。我想在这一点上,我想知道如何撤销用户或组对 SeDebugPrivilege 的使用
-
AFAIK 如果没有任何本机/不安全代码,就无法做到这一点...删除此特权不会产生太大影响 IMO...您的目标到底是什么?也许还有其他选择...
-
SeDebugPrivilege不是“调试程序的能力”——它是“调试其他用户拥有的程序的能力”。即使是有限的用户也完全可以调试他们拥有的进程。
标签: c# security privileges least-privilege