【问题标题】:WCF Named Pipe Security and Multiple User Sessions?WCF 命名管道安全和多用户会话?
【发布时间】:2010-11-05 05:01:14
【问题描述】:

我已经设置了一个使用 Mutex 的单实例 WPF 应用程序,如果您使用用户切换,这允许应用程序在每个用户帐户中运行。该应用程序设置了一个 WCF 命名管道,以便我可以从另一个进程与单个实例进行通信(即,当第二个进程在由于互斥体而终止之前运行时)。

我想知道是否应该采取任何措施(最佳做法)来保护命名管道?

我还想知道命名管道消息是否会到达系统内所有正在运行的进程,或者仅在当前用户会话中。如果命名管道是在系统范围内发送的,那么将通信限制为当前用户会话的最佳实现是什么?

【问题讨论】:

    标签: .net wcf named-pipes


    【解决方案1】:

    WCF 中的命名管道无法从网络访问,并且不需要加密来保护它们。但是,WCF 服务对 romkyns 提到的攻击并不安全。

    我建议你阅读这篇文章:

    Exploring the WCF Named Pipe Binding - Part 1

    Exploring the WCF Named Pipe Binding - Part 2

    Exploring the WCF Named Pipe Binding - Part 3

    Exploring the WCF Named Pipe Binding - Part 4

    关于所涉及的安全问题。

    简而言之,WCF 允许任何进程将自己伪装成服务,并且:

    1. 模拟服务或
    2. 假设恶意进程本身连接到服务,则窃听和篡改数据。但是,如果服务使用访问安全性来检查调用用户的身份,这可能是不可能的。

    【讨论】:

    • @jesusduarte 迟到了,但链接又回来了。
    【解决方案2】:

    命名管道意味着在同一台机器上的通信是点对点的。我相信默认情况下它是安全的,但由于通信永远不会离开机器,即使在同一个网络上,安全性并不是最需要担心的事情——至少在命名管道组件与其之间的通信方面消费者。

    查看 Juval Lowy 的“Programming WCF Services 2nd Edition”。第 10 章是关于组件安全的。在第 514 页,他写道:“在 IPC 上使用消息安全性没有任何意义,因为使用 IPC,从客户端到服务始终只有一跳。该页面上的图表显示默认情况下,传输安全性为命名管道。

    【讨论】:

      【解决方案3】:

      paper on named pipe security 详细讨论了这个话题。

      简而言之,如果您不小心,您可能会允许以标准用户权限运行的恶意程序利用管道将自己提升到与命名管道服务器相同的特权级别。

      恐怕我不知道默认情况下 WCF 实现是否可以安全抵御此类攻击。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-02-23
        • 2013-10-26
        • 1970-01-01
        • 1970-01-01
        • 2011-03-05
        • 1970-01-01
        • 2015-06-01
        • 2011-08-26
        相关资源
        最近更新 更多