标签:
手机博客IT |
分类: 技术文章 |
CVE-2010-3333 漏洞是 MicrosoftOffice RTF 分析器堆栈溢出漏洞,对应的 Microsoft 安全公告是
MS10-087 。此漏洞影响到补丁发布之前的所有版本 Microsoft Office 软件。 Rich Text Format (
RTF ) ,即富文本格式,是 Microsoft
公司为进行文本和图象信息格式的交换而制定的一种文件格式,它适用于不同的设备、操作环境和操作系统。目前最新的版本是 1.9.1 ,于
2008 年 3 月 19 日发布。 RTF 文件的基本元素是文本( Text ) 、控制字( Control Word
)、控制符号( Control Symbol )、组( Group )和目标( Destination )。
控制字是一种特定格式的命令, RTF 用它作为正文格式的控制代码,也作为应用程序管理文档的控制信息。其一般格式如下: \<
分隔符 > , 其中分隔符标志着控制字名称的结束。 目标是一种特殊的控制字,标志着一组相关文本的开始。
组由包含在一对大括号中的文本、控制字或控制符号组成。 RTF 也可以包含由字体、图片或者对象(绘画对象等)构成的组。 绘画(
Drawing )对象是一种可以嵌入到 RTF 文件中的对象。大多数的绘画对象被定义为一系列的属性,通常它的格式是:
{\shp{\*\shpinst{\sp{\sn 属性名称 }{\sv 属性值 } Microsoft RTF 分析器在分析
pFragments 属性的值时,没有正确的计算属性值 所占用的空间大小,导致堆栈溢出漏洞的产生。 漏洞产生在 MSO.DLL
文件(此文件位于 %CommonProgramFiles%\Microsoft Shared\OFFICE{ 版本号 }
目录)中,下文以 Microsoft Office2003 的 MSO.DLL (版本号为 11.0.8324.0 )为例。
01.jpg 当位于 0x30F749D2 处的函数在处理 pFragments 属性的值时,传递了一个最大为 0x10
字节的缓冲区给位于 0x30E97BE0 函数。 02.jpg 此函数未严格检查属性值 所占用的空间大小,仅取属性值
所占用的空间大小的低 16 位,这样一个典型的大小值 0x1111 就能导致位于 0x30E97BF7 处的 memcpy
函数在复制属性值时溢出堆栈,从而为恶意代码的执行提供了可能。下面是一个典型恶意样本的截图。 03.jpg 值得注意的是, 由于
Windows 自带的写字板也支持 RTF 格式的文件,而此程序不存在漏洞,所以恶意样本虽然都是 RTF
格式的文件,但通常将扩展名改为 DOC ,这样能调用 Microsoft Word
来打开,以便触发漏洞。同时由于这个漏洞触发简单,而又不容易检测,故利用此漏洞的恶意样本变种极多,通常以邮件附件的形式诱导用户打开。
后一篇:2012年04月20日