开发者社区> 问答> 正文

CVE-2014-6352 OLE packager漏洞和杀虫补丁绕过


几天前,微软公布一个新的漏洞——Microsoft Office OLE object (CVE-2014-6352) 。该漏洞类似是沙虫漏洞(cve - 2014 - 4114)的一种变种。针对原来的漏洞补丁(编号是ms14——060),微软发布了一个搞定新漏洞的更新,我们推荐安装以保护自己。我花了一些时间在这个新更新模块上,并且乐于给大家分享。

该更新是一个有效的提供紧急补丁或简单移植的机制。这个紧急更新据说使用了Shim technology。你可能不熟悉的Shim,但你可以从微软读关于这方面技术的一篇好文。基础来讲,它是一种拦截Windows和应用程序层之间API调用的机制。在图1中,您可以看到该更新味the POWERPNT.exe程序安装了一个Shim数据库。


图一. POWERPNT.exe Shim 规则添加



这里安装的Shim数据库在PowerPoint进程启动时执行热补丁。补丁动态应用于已加载的packager.dll。图2展示了packager.dll的CPackage::DoVerb函数是在哪里修复的。 听起来很熟悉?是的,跟我之前在最近一篇博文中提到的对杀虫漏洞的分析如此相似。微软的MS14-060补丁修补了包括这个函数的一组函数。但是,该更新并不是一个真正的补丁,更像是一种权宜之计,他们仅仅粘贴5个int 3指令覆盖了之前原来的指令,以防执行代码的时候程序崩溃。
图二. Packager!Cpackage::DoVerb 热补丁



为了详细分析这个补丁是怎么工作的,我打开了 IDA 反汇编工具检查补丁位置。图3 展示了这个补丁的位置。
对CPackage::GetContextMenu函数的调用已经被移除,并且换成了int 3 指令,这并不能充分说明调用CPackage::GetContextMenu函数本身存在问题,但是暗示了接下来的函数可能会有问题。这个热补丁有效的禁止了INF自动安装的功能。有趣的是,在接下来的指令中,调用了 CPackage::CreateTempFile 函数,在执行INF缺省安装程序(InfDefaultInstall.exe)之前,创建一个临时文件。
图三. Packager!CPackage::DoVerb热补丁位置

更有趣的是,CPackage::CreateTempFile函数已经被 MS14-060 修补过了。图4展示了这个被修补的函数中增加了对MarkFileUnsafe函数的调用。
图四. MS14-060 补丁



看上去,原来的补丁可能哪里存在问题。在这一点上,我要等到真正的补丁出来之后再讨论这个漏洞的细节,因为这仍然是个0day漏洞。我这里没有透露任何关键信息,但向大家显示了,从公开的修补信息来看,最初的补丁并不完美。然而,有一点是明确的——这种类型的攻击在没有安装补丁的情况下成功率很高,因此很危险。该补丁禁用的功能,在日常业务或个人使用中,并不是必不可少的,所以,我建议大家尽快安装这个更新模块保护自己免受攻击。


本文摘自:黄源小童鞋@360 翻译
原文链接: http://h30499.www3.hp.com/t5/HP-Security-Research-Blog/CVE-2014-6352-OLE-packager-vulnerability-and-a-failed-patch-for/ba-p/6653598#.VEhXKfmUePY%E3%80%82%E7%BB%86%E8%8A%82hp%E6%8D%85%E4%BA%86

展开
收起
虎笑 2014-10-24 14:59:57 13736 0
1 条回答
写回答
取消 提交回答
  •   微软的漏洞多如牛毛
    2014-10-24 17:44:49
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载

相关实验场景

更多