NetNamedPipeBinding安全吗?

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

一方面,NetNamedPipeBinding仅在传输层上实现安全性,并且它使用Microsoft不再推荐的NTLM( 源 )( 源 )

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

这就是为什么我不知道如何考虑这个解决方案的安全性的原因。

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

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

  • 与任何网络协议相比,NetNamedPipeBinding本质上更安全,可抵御传输连接上的通信威胁。 在命名管道的情况下,不是通过网络传输字节,而是通过一种机制来交换消息,该机制涉及在一台机器上将数据字节(通过操作系统API)传递到操作系统内核管理的内存。 除了已经拥有以内核模式运行的特权代码的攻击者之外,消息流不可能被窃听(如果您的操作系统内部已经有这样的攻击者,他可能已经在您的应用程序进程中做了他喜欢的任何事情)。 因此,WCF“传输安全性” 或多或少与消息流的安全性无关,并且应该经常在配置中被禁用以避免不必要的运行时开销 。
  • 命名管道绑定用于将服务端点发布到预期客户端的机制本身也比基于网络的协议更安全:它基于命名的共享内存对象,因此无法从任何远程计算机访问。
  • 用于消息交换的命名管道以GUID命名,GUID在每次服务器重新启动时都会更改,并且受到ACL的进一步保护,这会阻止任何远程用户打开它,即使他们能够以某种方式发现管道名称的当前GUID 。

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

  • 服务器“抢注”攻击,其中除了预期的WCF服务主机之外的某些进程成功侦听命名管道。 由于绑定为保护管道而创建的ACL中的错误,.NET 3.5及之前的命名管道绑定对此漏洞不安全。 .NET 4主要纠正了这个错误。
  • Windows上的命名管道具有内置机制,以支持模拟其客户端的命名管道服务器。 WCF NetNamedPipeBinding包含一个错误,在某些情况下,即使客户端WCF绑定配置为禁止模拟,管道服务器(即WCF服务)也可以使用客户端的Windows凭据进行此类模拟。

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