最新病毒库日期:
              • 威胁预警:2018年的首个Office 0day漏洞
              2018-01-10 17:53 来源:未知
              【文章摘要】江民病毒监测?#34892;?#30740;究证实该漏洞确实存在,并发布预警公告,提醒用户采取应?#28304;?#26045;。
              2018年1月,首个office 0day漏洞(CVE-2018-0802)来袭, 该漏洞的技术原理类似于潜伏了17年的漏洞(CVE-2017-11882), 是由于office公式编辑器组件EQNEDT32.EXE,对字体名的长度没有进行长度检验, 导致攻击者可以通过构造畸形的字体名,执行?#25105;?#20195;码。
              江民病毒监测?#34892;?#30740;究发现,该漏洞确实存在,该漏洞与2017年11月微软发布修复的CVE-2017-11882漏洞密切相关,安装过CVE-2017-11882漏洞补丁的用户将受到CVE-2018-0802漏洞的威胁, 受攻击用户打开恶意的Office文档?#20445;?#26080;需交互,就可能执行恶意代码从而导致电?#21592;?#25511;制。

              1漏洞介绍

              威胁类型:?#25105;?#20195;码执行
              威胁等级:高
              漏洞名称:CVE-2018-0802
              受影响系统及应用版本:
              Microsoft Office 2007  Service Pack 3
              Microsoft Office 2010  Service Pack 2 (32-bit editions)
              Microsoft Office 2010  Service Pack 2 (64-bit editions)
              Microsoft Office 2013  Service Pack 1 (32-bit editions)
              Microsoft Office 2013  Service Pack 1 (64-bit editions)
              Microsoft Office 2016  (32-bit edition)
              Microsoft Office 2016  (64-bit edition)
              1补丁下载地址:
              https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2018-0802

              2漏洞分析

              CVE-2018-0802为CVE-2017-11882的补丁绕过漏洞,类型为栈溢出,根本原因为微软在CVE-2017-11882的补丁中没有修复另一处拷贝字体FaceName时的栈溢出。本次漏洞在未打补丁的版本上只会造成crash,但在打补丁的版本上可?#21592;?#23436;美利用。下面我们通过poc样本来分析CVE-2018-0802漏洞。
              https://mmbiz.qpic.cn/mmbiz_png/hglVF2zA7QicYKEeUmAc9thJApMLIwxhEmwxM0L8CguUibEGy77KzT7A7uSUhkBDwoFZswicrKwJwHibDVBef9zrbA/0?wx_fmt=png
              图1 漏洞程序版本信息
              与CVE-2017-11882一样,本次漏洞的触发数据位于所提取OLE对象的“Equation Native”流内。
              https://mmbiz.qpic.cn/mmbiz_png/hglVF2zA7QicYKEeUmAc9thJApMLIwxhEVvEEReRT1PaVyiaw3r9jF0kDaRjbWvEUUHJoiaAcKttwnVyDEU6bvtvw/0?wx_fmt=png
              图2样本构造的数据
              据网络公开的资料,整个“EquationNative”的数据构成为:
              EquationNative Stream Data = EQNOLEFILEHDR + MTEFData
              https://mmbiz.qpic.cn/mmbiz_png/hglVF2zA7QicYKEeUmAc9thJApMLIwxhEGN5S1Lc6NxNazpM9uoTVLAlFdicbyHMN9w0O3Auq6mAIhSbVJjqmLfQ/0?wx_fmt=png
              图3Equation Native 数据结构
              在漏洞利用文档中,该结构如下所示:
              https://mmbiz.qpic.cn/mmbiz_png/hglVF2zA7QicYKEeUmAc9thJApMLIwxhEUEnueaggyZ2wOGWmUlGleFGCQTwDEmIXGErg1rWVgrFgvnYmhx8eicQ/0?wx_fmt=png
              图4 EQNLEFILEHDR头结构数据
              https://mmbiz.qpic.cn/mmbiz_png/hglVF2zA7QicYKEeUmAc9thJApMLIwxhEXOlg3NvqeDjedMWGmwyV5GJUzWGXCw9YxXORSOgkFBN4RC5CDam6ww/0?wx_fmt=png
              https://mmbiz.qpic.cn/mmbiz_png/hglVF2zA7QicYKEeUmAc9thJApMLIwxhEvicJJqLMTF2pt84icdhA4GPXBnpEmS1UeT8xcaF1x9sicR5h5Y51JiaBicA/0?wx_fmt=png
              图5 MTEFData结构
              https://mmbiz.qpic.cn/mmbiz_png/hglVF2zA7QicYKEeUmAc9thJApMLIwxhEZ8llQicY4hH8ccibwasZFp00Z3OAib5eFRsLlx2NYj4USRibUKY9OTyP5g/0?wx_fmt=png
              图6 MTEFData数据
              程序在初始化一个LOGFONT结构体时, 未对用户输入的字体名进行长度校验,直接进行copy发生溢出, 漏洞函数:
              https://mmbiz.qpic.cn/mmbiz_png/hglVF2zA7QicYKEeUmAc9thJApMLIwxhEu9ictVEmBF082YO6dMhFA1mEEouYIGlicYOG0hiaotCGF1U1libxMPcHvA/0?wx_fmt=png
              图7 漏洞触发的函数
              LOGFONT 结构体指针由调用sub_421E39的sub_421774函数传入, 结构体存在于sub_421774的函数栈上, 所以可以导致栈溢出,覆盖返回地址,劫持执行流
              https://mmbiz.qpic.cn/mmbiz_png/hglVF2zA7QicYKEeUmAc9thJApMLIwxhEJMMvpiahciabVDXdhAgwZVY77gCibf9wq9YXBV1Cc4c90fG8gtoZpSgmQ/0?wx_fmt=png
              图8 溢出函数
              分析过程中在sub_421774函数发现一处疑似递归的地方,sub_421774先是调用了漏洞函数sub_421E39去初始化一个LOGFONT结构体,然后调用相关API,传入这个结构体,从系统获取到一个字体名称保存到Name。随后,它将获取到的Name和用户提供的lpLogFont作?#21592;齲?#22914;果不一致则调用sub_4115A7函数, 这个函数间?#25317;?#29992;CVE-2017-11882 的漏洞函数, 如果没有安装CVE-2017-11882这个补丁程序将在这里崩溃 ,之后会再根据a3指定的条件来继续调用或者不调用自身,而a3为sub_421E39函数的第3个参数, 这里调用自身时传入的第三个参数为0, 并且传入的lpLogFont为从系统的获取的Name所以不会发生二?#25105;?#20986;且不会继续递归。所以函数可以正常返回。
              https://mmbiz.qpic.cn/mmbiz_png/hglVF2zA7QicYKEeUmAc9thJApMLIwxhEL0qSPES1NUFkUoOA16LgTqiaOpxhvkxIaFU1VOkKwVia5fiaXHuJ4qEnQ/0?wx_fmt=png
              图9函数调用流程

              3漏洞利用

              通过分析我们发现, 在sub_421774函数中发生溢出, 溢出原因是因为在初始化LOGFONT结构体的lfFaceName字段时发生溢出,通过漏洞分析中的图2可以看出该结构体存在于函数栈距离返回地址(0xAC+0x4)的位置, 而lfFaceName的字段在LOGFONT结构体的偏移为0x1c, 如下图, 所以要覆盖返回地址需要填充(0xAC+0x4-0x1c)的数据。
              https://mmbiz.qpic.cn/mmbiz_png/hglVF2zA7QicYKEeUmAc9thJApMLIwxhE3K0QvxUVDHbds2dyYibhzwNgWiaAkPP2cBasvIqSfNoxptZS8QsPBZSw/0?wx_fmt=png
              图10 LOGFONT结构体
              通过查看程序的保护属性, 发现程序开启了alsr保护, 单并未开启数据执行保护,?#26723;?#19968;提的是, 字体名的源缓冲区指针作为溢出函数的第一个参数传入,并且函数使用stdcall调用协议,  也就是?#26723;?#20989;数返回后, 字体名的源缓冲区的地?#26041;?#20445;存在栈顶, 此时我们只要能执行一个ret指令就可以跳转到字体名的源缓冲区的内存上执行。此时我们只需要绕过alsr?#19994;?#19968;个地址可靠的ret指令即可。有必要说一下alsr并不是完全的地址随机化, alsr只会以0x10000为单位, 进行随机, 假设我们返回地址为0xc014e2,那么如果在0xc00000到0xc0ffff的内存地址内?#19994;?#19968;个ret指令,并且能做到只覆盖返回地址的低地址的2个字节, 因为是字符串copy所以?#27573;?#32553;小到0xc00000到0xc000ff
              https://mmbiz.qpic.cn/mmbiz_png/hglVF2zA7QicYKEeUmAc9thJApMLIwxhElfSkbQ8Q2s6rDXlibJtrUSooTfo6Jpr0ibH6icd8UraYEk4Rw3Ff8jTNg/0?wx_fmt=png

              通过查找?#19994;?xc00025这个地址

              https://mmbiz.qpic.cn/mmbiz_png/hglVF2zA7QicYKEeUmAc9thJApMLIwxhErDuTCmfdbnDYvQYKFxtkbjQv8ibWicFZAXFgKEvyceUia4icDKXDAia6ic6A/0?wx_fmt=png

              根据之前的结论在覆盖返回值之前有(0xAC+0x4-0x1c = 0x94)大小的?#21344;? shellcode的大小必须小于等于0x94, 这也足够了, shellcode布局:

              https://mmbiz.qlogo.cn/mmbiz_png/hglVF2zA7QicYKEeUmAc9thJApMLIwxhEBVibCBvOOQ1yOwzmBd7e12eiaEkusiba91Rk6ibnhXuibW1nHRwLolU3qEA/0?wx_fmt=png
              图11 shellcode布局

              函数两次返回,返回到字体名的源缓冲区执行代码, 元缓冲区为我们构造的shellcode , shellcode 被执行, 漏洞被触发

              https://mmbiz.qpic.cn/mmbiz_png/hglVF2zA7QicYKEeUmAc9thJApMLIwxhEGKpUo1aYXg2QK08rEzMTicbkQAbwicsJRJibpHrQyNswTPVxRYOiceFyfw/0?wx_fmt=png
              图12 漏洞触发后的场景

              4处理方案:

              一、及时更新补丁
              补丁下载地址:
              https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2018-0802
              二、通过注册表禁用此模块,可通过修改注册表,禁用以下COM控件的方式进行缓解,其中XX.X为版本号:
              在运行中输入:
              reg add "HKLM\SOFTWARE\Microsoft\Office\XX.X\Common\COM Compatibility\{0002CE02-0000- 0000-C000-000000000046}" /v "Compatibility Flags" /t REG_DWORD /d 0x400
              reg add "HKLM\SOFTWARE\Wow6432Node\Microsoft\Office\XX.X\Common\COM Compatibility\{0002CE02-0000-0000-C000-000000000046}" /v "Compatibility Flags" /t REG_DWORD /d 0x400
              三、部署江民网络版防病毒的用户,建议用户尽升级至最新版本并开启防御,江民防病毒软件补丁库已加入了(CVE-2018-0802)漏洞。网关防护方面,江民防病毒网关及江民病毒威胁预警系统,已及时更新特征库,可以对该漏洞进行防护。
               
               
              全民彩票手机版