ATL漏洞开发者深度解析 | MSRC博客
今晨我们发布了MS09-035安全更新,以解决Visual Studio中的ATL漏洞。本文将帮助您回答以下问题:
- ATL漏洞是什么?哪些版本的ATL受影响?
- 如何判断我的ActiveX控件是否受影响?
- 如何修复受影响的控件?
ATL漏洞是什么?哪些版本的ATL受影响?
公告中讨论了三个ATL漏洞:
- CVE-2009-2493:远程代码执行漏洞,源于可绕过安全策略(如killbit)实例化任意对象
- CVE-2009-2495:信息泄露漏洞
- 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工程团队
本文按"原样"提供,不提供任何担保,也不授予任何权利。