MS11-087漏洞深度解析:字体解析子系统安全风险与防护措施

本文详细分析了MS11-087安全公告中涉及的win32k.sys字体解析子系统漏洞CVE-2011-3402,包括漏洞原理、攻击向量分析,并提供了通过安全更新和浏览器设置两种防护方案的具体实施步骤。

今天,我们发布了MS11-087安全更新,修复了win32k.sys字体解析子系统中的一个问题,即CVE-2011-3402。由于存在潜在的基于浏览器的攻击向量,该公告被评为严重级别。我们尚未发现基于浏览器的攻击向量在野外被利用。该公告包含一个变通方案,可禁用此远程代码执行攻击面。即使在应用安全更新MS11-087后,您也可以考虑应用此变通方案,以进一步减少攻击面。本文将详细解释如何操作。

问题摘要

此漏洞已被用于投放Duqu恶意软件。win32k.sys字体解析子系统中的一个边界检查不足可能导致格式错误的字体破坏ring0内存。在Duqu投放器的情况下,嵌入Office Word文档中的格式错误字体触发了此内存损坏漏洞,跳转到攻击者的shellcode。

需要明确的是,Duqu并未利用基于浏览器的攻击向量。据我们所知,此漏洞仅通过嵌入Office文档中的自定义字体被利用。然而,攻击者可能构造恶意字体,使其可嵌入网页中。有一个简单的变通方案可以阻止这种特定的攻击面。

保护您的环境

保护免受此特定漏洞影响的最佳选择是应用MS11-087安全更新。它将全面解决此问题。

如果您无法立即应用更新和/或主要关注基于浏览器的攻击面,您可以考虑完全禁用IE下载自定义字体的功能。这种方法的副作用是可能导致网页显示和布局出现异常,这些网页利用自定义字体以有趣的新方式显示文本。然而,绝大多数网站使用Windows附带的字体或使用不需要此特定自定义字体技术的文本布局技巧。应用变通方案后,打开嵌入自定义字体的网页将导致Internet Explorer使用内置字体显示文本。下面,您可以看到浏览使用自定义字体的网页的用户体验:

图1:使用自定义下载字体的网页

图2:应用变通方案后显示的同一网页

变通方案步骤

您可以通过交互方式(使用GUI)或通过组策略或管理部署脚本在多台机器上禁用Internet Explorer中的自定义字体下载。

交互式部署

  1. 启动Internet Explorer
  2. 在“工具”菜单中选择“Internet选项”
  3. 单击“安全”选项卡
  4. 要更改“Internet”区域的设置,选择“Internet”并按“自定义级别”按钮
  5. 向下滚动到“下载”部分,为“字体下载”安全设置选择“提示”或“禁用”
  6. 按确定关闭“安全设置”对话框
  7. 按确定关闭“Internet选项”对话框

组策略部署

注意:组策略MMC管理单元可用于为计算机、组织单位或整个域设置策略。假设读者知道如何为其特定环境部署以下步骤。

  • 打开组策略管理并将其配置为使用适当的组策略对象(即本地计算机、OU或域GPO)
  • 导航到以下节点:
    • 用户配置 -> Windows设置 -> Internet Explorer维护 -> 安全
  • 双击“安全区域和内容分级”
  • 在“安全区域和内容分级”对话框中选择“导入当前安全区域和隐私设置”,然后单击“修改设置”按钮
  • 注意:这将基于当前登录用户的设置创建Internet Explorer的组策略
  • 在“Internet属性”对话框中确保选择“Internet”区域,然后按“自定义级别”
  • 向下滚动到“下载”并将“字体下载”设置为“提示”或“禁用”
  • 按确定返回“Internet属性”对话框
  • 在“Internet属性”对话框中选择“本地Intranet”区域,然后按“自定义级别”
  • 向下滚动到“下载”并将“字体下载”设置为“提示”或“禁用”
  • 按确定返回“Internet属性”对话框
  • 按确定返回“安全区域和内容分级”对话框
  • 按确定返回组策略管理控制台
  • 刷新所有计算机上的组策略或等待下一个计划的组策略刷新间隔使设置生效

托管部署脚本部署

此安全设置可以通过创建注册表脚本并作为登录或计算机启动脚本的一部分双击或运行regedit.exe来手动输入注册表。对于托管部署,Regedit.exe可以使用“-s”开关静默导入注册表脚本。有关regedit命令行开关的更多信息,请参阅:http://support.microsoft.com/kb/q82821/

要将Internet和本地Intranet区域的此设置设置为“提示”,请将以下文本粘贴到.REG文件中,然后作为组织托管部署过程的一部分在托管计算机上导入.REG文件:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
Windows Registry Editor Version 5.00

; 区域1是本地Intranet区域
; 1604是字体下载策略
; dword:00000001将策略设置为提示
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\1]
"1604"=dword:00000001
; 区域3是Internet区域
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\3]
"1604"=dword:00000001

要将Internet和本地Intranet区域的此设置设置为“禁用”,请将以下文本粘贴到.REG文件中,然后作为组织托管部署过程的一部分在托管计算机上导入.REG文件:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
Windows Registry Editor Version 5.00

; 区域1是本地Intranet区域
; 1604是字体下载策略
; dword:00000003将策略设置为禁用
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\1]
"1604"=dword:00000003
; 区域3是Internet区域
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\3]
"1604"=dword:00000003

底线

我们鼓励您首先应用安全更新来解决此特定漏洞。但是,您也可以考虑从Internet Explorer内部阻止基于浏览器的字体攻击面,作为良好的“攻击面减少”步骤。极少数嵌入自定义字体的网页可能显示不同,但您将受到保护,免受Internet Explorer中利用自定义字体的任何潜在基于浏览器的攻击向量的影响。

  • Chengyun Chu和Jonathan Ness,MSRC工程团队
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计