如何分析Microsoft Office内存损坏漏洞CVE201711882,针对这个问题,本文详细介绍了相应的分析和解答,希望能帮助更多想要解决这个问题的朋友找到更简单更容易的方法。
2017年11月,微软在例行系统补丁发布中,修复了一个Office远程代码执行的严重漏洞,编号CVE-2017-11882。该漏洞类型为缓冲区溢出,位为EQNEDT32.EXE组件。受害用户打开恶意的office文档时,无需交互,就可能执行恶意代码。
据报道,该组件由设计科学公司开发,后来被微软收购。该组件于2001年编译并嵌入office,此后没有进一步修改。所以这个漏洞已经存在了17年。影响现阶段所有流行的office版本。
经分析确认,360CERT确定此漏洞存在远程执行命令的风险,建议用户尽快更新相应补丁。
0x01漏洞概述
EQNEDT32.EXE用于在文档中插入和编辑公式。任何插入到文档中的公式都是一个OLE对象。该组件是根据OLE技术规范设计的。首次发布于微软Office 2000和微软2003。自从微软Office 2007套件推出以来,显示和编辑公式的方法发生了变化。尽管EQNEDT32.EXE已经过时,但为了保持版本兼容性,它并没有从办公套件中删除。
EQNEDT32。EXE为OLE实现了一组标准的COM接口。
IOleObject
IDataObject
IOleInPlaceObject
IOleInPlaceActiveObject
IpersistStorage
问题出在IpersistStorage:Load的位置。由于其历史悠久,这一组成部分的开发没有像ASLR那样采取减轻脆弱性的措施。使用起来更方便。
00-1010,在VirusTotal上检测到具有此漏洞的POC,该病毒被多个检测组织标记为CVE-2017-11882。(起初,只有微软能检测到)
如上所述,通过恶意样本分析,问题出在EQNEDT.EXE的sub_41160F函数。如图所示,strcpy函数在复制时没有检查长度,导致溢出。
通过调试,我们可以猜测eax寄存器,也就是正常情况下第一个参数应该是字体名称。
通过rtfobj提取样本中的OLE对象,发现字体名称为cmd.exe。
填完AAA之后…….是0x430C12,这是WinExec在EQNEDT.EXE的叫法。
返回地址被0x430C12覆盖,从而执行命令。
最终执行效果:
0x02 漏洞分析
办公室365
微软办公2000
Microsoft Office 2003
Microsoft Office 2007服务包3
Microsoft Office 2010服务包2
Microsoft Office 2013服务包1
Microsoft Office 2016
0x03影响版本
360CERT建议用户及时更新补丁,提高系统安全性。
缓解措施:这个问题可以通过修改注册表和禁用模块来缓解。其中XX。x是版本号。
注册添加' HKLM \软件\微软\办公\XX。X\Common\COM兼容性\ { 0002 ce02-0000-0000-C000-0000000046 } '/v '兼容性标志'/t REG_DWORD /d0x400
注册添加' HKLM \软件\ Wow6432Node节点\微软\办公\XX。X\Common\COM兼容性\ { 0002 ce02-0000-0000-C000-0000000046 } '/v '兼容性标志'/t REG_DWORD /d0x400
关于如何分析Microsoft Office内存损坏漏洞CVE201711882的问题的答案将在此分享。我希望
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/153865.html