Web Services on Devices (WSD) API漏洞深度解析

本文详细分析了MS09-063安全更新中修复的Web Services on Devices (WSD) API关键漏洞(CVE-2009-2512),包括受影响平台、攻击向量、缓解措施以及技术实现细节。

Web Services on Devices (WSD) API漏洞 | MSRC博客

MS09-063修复了Web Services on Devices (WSD) API中的一个关键漏洞(CVE-2009-2512)。Web Services on Devices允许计算机通过网络发现和访问远程设备及其相关服务,支持设备发现、描述、控制和事件处理。

WSD API功能在Windows的WSDApi.dll模块中实现,被多个服务和应用程序使用。该API也在MSDN上文档化供第三方开发者使用。因此,受此问题影响的服务和应用程序的完整列表难以定义,但以下是一些示例:

  • 打印后台处理程序服务
  • 功能发现资源发布服务
  • 功能发现提供程序主机服务
  • Windows网络投影仪

存在一些缓解因素限制了漏洞可利用的场景。我们将在本博客文章中更详细地描述漏洞和缓解因素。

问题是什么?

WSD消息中的长标头值可能导致托管WSDApi.dll的进程内栈损坏。这可能导致服务或应用程序崩溃,或可能导致远程代码执行。需要明确的是,漏洞存在于用于与支持Web Services on Devices的设备交互的Windows模块中,不影响设备本身。

哪些平台受影响?

Windows Vista和Windows Server 2008受影响。WSDAPI在Windows Vista中引入,因此早期版本的Windows不易受攻击。

只有WSD TCP端口处于活动状态并监听的系统才最容易受到攻击。系统是否具有活动并监听的WSD端口取决于系统配置和安装的应用程序。

攻击向量是什么?

默认情况下,WSDAPI将监听TCP端口5357和5358。如果接口防火墙配置文件不是公共配置文件,Windows防火墙将允许消息进入这些端口。这意味着在非公共配置文件(例如私有或域)下,远程、未经身份验证的用户可以访问该漏洞。

攻击者要能够触发目标上的漏洞,需要知道目标的WSD地址值,这是一个UUID(通用唯一标识符)。该值会自动在广播UDP消息中发送到端口3702(WS-Discovery),以尝试发现支持WSD的设备。由于是广播UDP,消息仅对同一子网上的攻击者可见。其他子网或互联网上的攻击者无法使用此方法对远程目标发起攻击。

系统也可能通过响应使用WSDAPI的客户端计算机的恶意设备被利用。用户可能手动输入要连接的设备的URL,在这种情况下,设备可能响应格式错误的消息并触发漏洞。但这需要用户交互和社会工程学。

缓解因素

如上所述,最常见的利用场景要求攻击者与目标系统位于同一子网,以便发现目标的WSD地址。

默认的Windows防火墙规则将入站WSD消息限制为私有和域配置文件的本地子网源。公共防火墙配置文件完全阻止WSD消息。

如果不需要WSD功能,安全公告提供了使用Windows防火墙阻止用于触发此漏洞的入站和出站端口的信息。

我要感谢WSD团队的Rob Hain和Dan Driscoll,以及MSRC工程的Kevin Brown对此问题的工作。

  • Mark Wodrich, MSRC工程
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计