【发布时间】:2021-09-06 12:15:17
【问题描述】:
在 C#/.NET 中使用 System.Diagnostics.Process 时,您收到的 Process HANDLE 是 PROCESS_ALL_ACCESS。这可能允许外部应用程序窃取 HANDLE 并拥有对目标进程的完全访问权限并滥用信任关系。
如此处所示,.NET 只是默认为完全访问:https://referencesource.microsoft.com/#system/services/monitoring/system/diagnosticts/Process.cs,167
如何减少 Process HANDLE 的权限?使用非托管代码使用调用 openprocess() 创建一个新的 Process 类应该如何完成?还是反射?
谢谢!
【问题讨论】:
-
这可以允许外部应用程序窃取 HANDLE。如果您的进程可以打开另一个具有所有访问权限的进程,并且有人可以使用重复的句柄访问权限打开您的进程 - 几乎总是可以并直接打开目标进程。没有人会更快地从您的流程中窃取句柄