win32k.sys字体目录项解析漏洞深度解析

本文详细分析了MS09-065安全更新中修复的win32k.sys字体解析子系统整数溢出漏洞(CVE-2009-2514),涵盖漏洞原理、影响平台、攻击向量及多种防护方案,包括注册表修改和组策略配置。

win32k.sys字体目录项解析漏洞 | MSRC博客

MS09-065修复了win32k.sys字体解析子系统中的一个漏洞(CVE-2009-2514)。若未修复,攻击者可能使系统蓝屏(DoS,最佳情况)或以内核权限执行任意代码(最坏情况)。

问题本质

win32k.sys中负责构建目录项表的字体解析子系统存在整数溢出漏洞。当计算目录项的偏移量和大小成员之和时可能发生整数包装,导致后续代码出现内存访问异常,通常表现为读取访问违规。

该漏洞被评定为严重级别,因为漏洞代码通过Internet Explorer暴露且无需用户交互即可触发,漏洞利用指数评级为1。

受影响平台

Windows 2000、Windows XP和Windows Server 2003用户受影响。Windows Vista、Windows 7、Windows Server 2008和Windows 2008 R2用户不受影响。

攻击向量

远程攻击向量(最坏情况为远程代码执行)

  • 恶意网站通过.eot文件传递恶意字体(TTF),所有版本的IE默认都会渲染
  • 通过社交工程诱骗受害者打开包含畸形嵌入字体的Office文档(PowerPoint和Word文档最可能)

本地攻击向量(最坏情况为本地权限提升)

  • 多用户环境(终端服务)中通过AddFontResource()向win32k.sys传递恶意字体

防护措施

最佳防护方案是安装MS09-065更新。

若无法安装更新,可禁用IE中解析/加载嵌入字体的支持(副作用是使用嵌入字体技术的网站无法正常显示):

交互式设置

  1. 启动Internet Explorer
  2. 选择"工具"菜单中的"Internet选项"
  3. 点击"安全"标签
  4. 选择"Internet"区域并点击"自定义级别"
  5. 在"下载"部分将"字体下载"设置为"提示"或"禁用"
  6. 确认关闭所有对话框

组策略设置

  1. 打开组策略管理控制台
  2. 导航至:用户配置→Windows设置→Internet Explorer维护→安全
  3. 双击"安全区域和内容分级"
  4. 选择"导入当前安全区域和隐私设置"并点击"修改设置"
  5. 为"Internet"和"本地Intranet"区域分别设置"字体下载"为"提示"或"禁用"
  6. 刷新组策略

托管部署脚本

通过注册表脚本设置字体下载策略:

设置为提示

1
2
3
4
5
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\1]
"1604"=dword:00000001
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\3]
"1604"=dword:00000001

设置为禁用

1
2
3
4
5
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\1]
"1604"=dword:00000003
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\3]
"1604"=dword:00000003

感谢MSRC工程团队的Robert Hensing和Andrew Roths为本漏洞防护方案做出的贡献。

-Brian Cavenah, MSRC工程团队

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