关于CVE-2014-4073权限提升漏洞的更多细节
今天微软发布了MS14-057更新,针对.NET Framework中的ClickOnce部署服务修复了一个权限提升漏洞。虽然此更新修复了该服务,但使用托管分布式组件对象模型(Managed DCOM,即.NET对DCOM的封装)的开发人员需要立即采取行动,确保其应用程序的安全。
托管DCOM本质上是一种在不同信任级别的进程之间执行通信的不安全方式。微软建议将应用程序迁移到Windows通信基础(WCF)进行进程间通信,而不是使用托管DCOM。将托管DCOM容器或服务器暴露给较低信任级别的调用方可能导致权限提升漏洞。请注意,DCOM本身被认为是安全的;只有托管DCOM被认为是不安全的。
更多信息
要了解为什么我们建议远离托管DCOM,有助于理解COM和DCOM的工作原理。
COM是一个平台无关、编程语言无关的面向对象系统,用于创建交互的软件组件。传统的COM发生在单个进程边界内。
DCOM与普通COM类似,但它允许在不同进程甚至不同计算机中创建对象。这对于分布式计算或客户端应用程序需要与服务器应用程序通信的场景非常有用。
不幸的是,.NET Framework用于与DCOM通信的封装器(也称为托管DCOM)无法维持此安全边界。如果您使用托管代码实现服务器或容器,通信通道的远程端可能接管托管进程。在交互发生在同一进程内或两个具有相同权限的进程之间的情况下,这不是问题。然而,当相互通信的进程以不同权限级别运行时,这就成为一个问题。
幸运的是,依赖此功能的开发人员有一个解决方案。Windows通信基础(WCF)统一编程模型设计用于与不可信端点通信时保持鲁棒性。在许多情况下,迁移到更新、更受支持的技术可能是一个简单的练习。MSDN文章《如何:将托管代码DCOM迁移到WCF》提供了许多示例和代码示例,以帮助简化此迁移过程。
对于MS14-057,微软移除了ClickOnce部署服务对托管DCOM的依赖。我们建议所有开发人员如果当前正在使用托管DCOM在不同权限级别的组件之间进行通信,也采取相同措施。
- Reid Borsuk(产品安全)和 Joe Bialek(MSRC)