Internet Explorer针对ATL数据流漏洞的深度防御措施解析

本文详细解析MS09-034安全更新中针对ATL数据流漏洞的两项深度防御措施,包括持久数据检查机制和接口使用限制方案,并提供注册表配置指南与兼容性解决方案。

Internet Explorer针对ATL数据流漏洞的缓解措施

安全研究与防御团队
作者:swiat | 2009年7月28日 | 阅读时间:3分钟

IE安全更新MS09-034实施了两项深度防御措施,旨在缓解利用Microsoft Active Template Library(ATL)漏洞的攻击威胁(相关漏洞描述参见安全公告973882和MS09-034)。以下将详细说明这些缓解机制。

ATL持久数据检查

第一项缓解措施通过检测特定的有问题调用模式,修改基于ATL的控件读取持久数据的方式。例如,该机制可阻断导致MS09-032(7月14日发布的安全更新之一)中MSVidCtl.dll漏洞利用的调用模式,同时涵盖MS09-035中描述的ATL漏洞。

此变更在安装MS09-034的所有受影响平台上默认启用,将阻止Internet Explorer中加载的任何控件(包括非微软开发的控件)利用已知ATL漏洞。预计此深度防御变更带来的应用兼容性问题有限,因此建议用户立即测试和部署MS09-034以阻断潜在攻击。

控制特定接口的使用(可能存在应用兼容性影响)

MS09-034还在受影响平台上引入了第二项深度防御措施。该措施默认关闭,因其采用“重型锤击”方式阻止Web浏览器控件使用IPersistStream*和IPersistStorage接口初始化控件。本质上,此缓解措施通过阻止潜在危险接口的整体使用(而非针对接口调用过程中的特定模式)来解决ATL漏洞。

建议托管Web浏览器控件的应用开发者通过新建的FEATURE_RESTRICT_OBJECT_DATA_ATTRIBUTE特性控制键启用此缓解功能。该键值默认关闭,因为许多控件在设计场景中需使用IPersistStream*和IPersistStorage加载持久数据。任何通过OBJECT标签加载控件且使用DATA属性的场景都可能受此缓解措施影响。

例如,以下OBJECT标签的正常操作可能被阻止:

1
<object classid="clsid:…" DATA="http://fabrikam.com/foo">

启用特性控制键的步骤:

  1. 打开注册表中的HKLM或HKCU\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl
  2. 若不存在则创建FEATURE_RESTRICT_OBJECT_DATA_ATTRIBUTE子键
  3. 添加进程名的REG_DWORD值(或使用*代表所有进程),并设置为1

以下注册表示例为所有进程启用特性控制:

1
2
3
4
5
6
7
8
HKEY_LOCAL_MACHINE (或 HKEY_CURRENT_USER)
     SOFTWARE
          Microsoft
               Internet Explorer
                    Main
                         FeatureControl
                              FEATURE_RESTRICT_OBJECT_DATA_ATTRIBUTE
                                   * = 0x00000001

经确认不受IPersistStream*和IPersistStorage攻击影响的控件可通过新建的ActiveX兼容标志DWORD值退出缓解:

1
2
3
4
5
6
7
HKEY_LOCAL_MACHINE
     SOFTWARE
          Microsoft
               Internet Explorer
                    ActiveX Compatibility
                         {ActiveX控件的CLSID}
                              Compatibility Flags = 0x02000000

注意:兼容标志值为位字段,需谨慎操作避免误删或覆盖导致消除Kill-Bit。

为帮助用户启用第二项深度防御变更,我们提供以下FixIt工具包(需注意可能影响特定业务场景):

  • 为用户所有进程启用特性控制键(修改HKCU):http://go.microsoft.com/?linkid=9674474
  • 为用户所有进程禁用特性控制键(修改HKCU):http://go.microsoft.com/?linkid=9674475
  • 为系统所有进程启用特性控制键(修改HKLM):http://go.microsoft.com/?linkid=9674476
  • 为系统所有进程禁用特性控制键(修改HKLM):http://go.microsoft.com/?linkid=9674477

— David Ross, MSRC工程团队
本文按“原样”提供,不提供任何担保,也不授予任何权利。

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