NetNamedPipeBinding 安全吗?

2024-03-28

我想知道 netNamedPipeBinding 是否被认为是安全的:

一方面,NetNamedPipeBinding 仅在传输层上实现安全性,并且它使用 NTLM (source http://msdn.microsoft.com/en-us/library/system.servicemodel.netnamedpipesecurity.mode.aspx) Microsoft 不再推荐(source http://msdn.microsoft.com/en-us/library/cc236715%28v=PROT.10%29.aspx)

另一方面,命名管道无法从远程计算机访问,并且无法窃听用于传输数据的特定开放管道实例,或向其写入数据,除非可以获得特定实例的句柄担心的。

这就是为什么我不知道如何看待这个解决方案的安全性。


您并没有真正提出正确的问题:不可能给出在所有情况下都有效的布尔答案。您应该始终评估整个解决方案的安全性,识别威胁并对相关的安全风险进行建模。

也就是说,WCF NetNamedPipeBinding 确实具有安全特性,这使得它与基于网络协议的绑定有些不同:

  • 与任何网络协议相比,NetNamedPipeBinding 本质上更安全,可以抵御传输连接上的通信威胁。在命名管道的情况下,消息不是通过网络传输,而是通过一种机制进行交换,该机制涉及将数据字节(通过操作系统 API)传入和传出由单个计算机上的操作系统内核管理的内存。消息流不可能被窃听,除非攻击者已经拥有在内核模式下运行的特权代码(如果这样的攻击者已经在你的操作系统的内部,他可能已经可以对你的应用程序进程做任何他喜欢的事情了) )。因此,WCF“运输安全”或多或少与消息流的安全性无关,并且应该经常在配置中禁用以避免不必要的运行时开销 https://web.archive.org/web/20120903180026/http://blogs.charteris.com/blogs/chrisdi/archive/2010/11/24/talking-to-wcf-over-named-pipes-3-do-we-need-all-this-security.aspx.
  • 命名管道绑定用于向潜在客户端发布服务端点的机制本质上也比基于网络的协议更安全:它基于命名共享内存对象,因此无法从任何远程计算机进行访问。
  • 用于消息交换的命名管道以 GUID 命名,该 GUID 每次服务器重新启动时都会更改,并受到 ACL 的进一步保护,防止任何远程用户打开它,即使他们能够以某种方式发现管道名称的当前 GUID 。

另一方面,由于基于通过 API 访问的操作系统设施,而不是基于网络通信的公共标准,因此存在一些基于网络的绑定不会出现的特定安全漏洞:

  • 服务器“抢注”攻击,其中除预期 WCF 服务主机之外的某些进程成功侦听命名管道。由于用于保护管道的绑定创建的 ACL 中存在错误,.NET 3.5 及更早版本中的命名管道绑定无法抵御此漏洞。 .NET 4 大部分纠正了这个错误。
  • Windows 上的命名管道有一个内置机制来支持命名管道服务器模拟其客户端。 WCF NetNamedPipeBinding 包含一个错误,在某些情况下,该错误使管道服务器(即 WCF 服务)能够使用客户端的 Windows 凭据进行此类模拟,即使客户端 WCF 绑定配置为禁止模拟也是如此。

总之,您需要根据对您重要的威胁来评估应用程序/系统的整体安全性,同时考虑您可能考虑的各种绑定的特定特征。 NetNamedPipeBinding 通常是同机场景的最佳选择。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NetNamedPipeBinding 安全吗? 的相关文章

随机推荐