ATL漏洞深度解析:开发者指南与修复策略

本文深入探讨了Microsoft ATL库中的三个关键安全漏洞(CVE-2009-2493、CVE-2009-2495、CVE-2009-0901),详细分析了受影响的Visual Studio版本、漏洞触发条件,并提供了检测和修复受影响ActiveX控件的具体方案,包括killbit部署和代码审查指南。

ATL漏洞开发者深度解析 | MSRC博客

今晨我们发布了MS09-035安全更新,以解决Visual Studio中的ATL漏洞。本文将帮助您回答以下问题:

  • ATL漏洞是什么?哪些版本的ATL受影响?
  • 如何判断我的ActiveX控件是否受影响?
  • 如何修复受影响的控件?

ATL漏洞是什么?哪些版本的ATL受影响?

公告中讨论了三个ATL漏洞:

  1. CVE-2009-2493:远程代码执行漏洞,源于可绕过安全策略(如killbit)实例化任意对象
  2. CVE-2009-2495:信息泄露漏洞
  3. CVE-2009-0901:远程代码执行漏洞,源于对未正确初始化的变体调用VariantClear()

以下表格显示了各公告影响的ATL版本:

版本 CVE-2009-2493 CVE-2009-2495 CVE-2009-0901
Visual Studio 2002 SP1(已停止支持)
Visual Studio 2003 SP1
Visual Studio 2005 SP1 ** **
Visual Studio 2008 RTM ** **
Visual Studio 2008 SP1 **
Visual Studio 2010 Beta

说明:使用Visual Studio 2005 SP1和2008/SP1构建的控件和组件受影响较小,因为VS2005 SP1引入了新的安全宏PROP_ENTRY_TYPE[_EX],几乎完全解决了问题。此外,从VS2008开始,不安全的PROP_ENTRY宏已被弃用。

需要澄清的几点:

  • Visual Studio本身不易受攻击,但使用易受攻击的ATL头文件构建的控件和组件可能受影响
  • 如果基于受影响的ATL版本构建了控件或组件,则可能存在漏洞
  • 这些漏洞适用于任何在满足必要条件时使用ATL构建的控件或组件

如何判断控件是否受影响?如何修复?

您需要审查控件或组件的源代码。请参考以下资源文章中的详细指导。

是否需要为旧控件设置killbit/phoenix bit?

如果确定控件无需在IE中托管,请考虑为其设置killbit。关于killbit的更多信息,请参考SRD的"killbit"博客系列。

如果决定修复易受攻击的控件,强烈建议为旧控件设置killbit,并为更新后的控件设置phoenix bit。Kill-bit FAQ三部曲详细解释了这一过程。

  • Arthur Wongtschowski, Windows持续工程团队
  • Chengyun Chu, MSRC工程团队

本文按"原样"提供,不提供任何担保,也不授予任何权利。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计