限制对进程管道的访问(Windows)

时间:2016-05-25 09:42:34

标签: c windows kernel driver

是否可以通过进程限制对命名管道的访问(图像名称或进程ID可以工作)?

这里的上下文是一个Filter Minidriver,它必须与可以完成大部分业务逻辑的用户空间服务进行通信。由于此通信对安全性敏感,因此我希望保护它免受外部干扰,而默认情况下,驱动程序创建的命名管道似乎可以通过任何用户空间进行通信知道管道名称的过程(通过静态或动态分析很容易发现)。

这就是我所知道的:管道是Windows中的安全对象,因此,它们具有安全描述符。此安全描述符可以包含DACL,它应该限制对对象的访问。我已经广泛搜索了有条件的ACE的文档和示例,我希望它可以做我想要的,但我找不到任何相关的内容。

编辑:我接受了MSalters'回答。通常认为SYSTEM == ring0并且虽然代码签名可能看起来很重要,但SYSTEM可以轻松禁用代码签名,因此不需要来自{的权限提升{1}} SYSTEM - 他们已经相同了。另一方面,即使是默认安全描述符(在minifilter驱动程序上下文中 - 请参阅ring0)也包含限制,因此只有FltBuildDefaultSecurityDescriptor和管理员才能访问该对象,因此无需进一步操作(或可能,似乎)。

1 个答案:

答案 0 :(得分:2)

无论如何图像名称都不受保护,任何人都可以创建一个" Notepad.EXE"。进程ID只是一个数字,可以重复使用,因此也没有保护。此外,您可以通过多种方式将DLL移植到另一个进程中,因此即使您知道特定进程正在运行EXE,您仍然不知道它是否正在运行只是你的EXE。

Windows安全模型使用安全主体(用户和系统帐户)的概念。这些是由ACL直接支持的,并且这些都受到保护以免受欺骗。如果你的过滤器驱动程序拒绝与任何人交谈,但是它愿意与用户X的进程A交谈,它应该愿意与用户X的任何进程通信,这是有道理的。