一、介绍
最近几天McAfee实验室的研究人员一直在积极调查沙虫,即利用Windows OLE包管理器的零日漏洞(CVE-2014-4114)发起的攻击。在McAFee通过产品发布多种补丁来保护用户的同时,我们也在继续分析这次攻击。
关于沙虫的详情,请查看安天实验室的文章:沙虫(CVE-2014-4114)相关威胁综合分析报告
在McAfee调查期间,McAfee的研究人员发现微软的官方补丁(MS14-060, KB3000869)不够完善。换句话说,即使系统已经打了补丁,攻击者仍可以利用该漏洞,已打补丁的用户仍身处危险之中。
这次的发现影响重大,因为利用该漏洞的攻击仍然十分活跃。McAfee实验室在10月17日开发出了POC之后,就立即报告了微软安全响应中心(MSRC)。自此,McAfee实验室已经积极地与微软展开合作去解决该问题。
10月22日,微软已经发布了SecurityAdvisory 3010060和Fix It进行临时性的修复。一个新的CVE编号CVE-2014-6352被分配用来追踪该问题。为了保护数百万的Windows用户,McAfee实验室将不会公开任何的细节,直到微软发布一个持久性的补丁。
二、“Fix It”浅析
【Fix It浅析的内容源自HP安全研究实验室】
“Fix It”是一种发布紧急补丁或简单缓解方案的有效机制(一种临时的修复方案)。此次“Fix It”使用了Shim技术,该技术拦截了Windows系统和应用程序之间的API调用。图1所示,“Fix It”为POWERPNT.exe进程安装了一个Shim数据库。
Figure 1 POWERPNT.EXE 添加的Shim规则
当PowerPoint进程启动时,安装的Shim数据库执行热修复(或打热补丁)。在进程运行时,补丁应用到进程加载的package.dll镜像。图2显示了package.dll中CPackage::DoVerb函数被修复的位置。微软通过MS14-060修复了一大批函数,其中就包括了CPackage::DoVerb函数。但是,“Fix It”不算是一个真正的补丁,更像是一个替代方案(俗称救火队员)。在这里,“Fix It”仅仅把原来的指令覆盖为5个“int 3”,阻止代码的进一步执行并使应用程序当掉(对于这个方法,我只能说简单暴力)。
图2 Packager!Cpackage::DoVerb 热补丁
为了查清热补丁修复的位置,可以打开IDA来查找。图3显示了热补丁的位置,CPackage::GetContextMenu函数的调用被替换为“int 3”指令。并不意味着CPackage::GetContextMenu调用本身是有脆弱的,但暗示着接下来的例程可能是脆弱的。这个热补丁有效禁用了INF文件的自动安装的功能。有趣的是,接下来的指令中调用了CPackage:: CreateTempFile,调用INF默认安装(InfDefaultInstall.exe)程序之前从原始文件创建一个临时文件。
Figure3 Packager!CPackage::DoVerb 热补丁的位置
更为有趣的是,CPackage::CreateTempFile函数已经在MS14-060中被修复过。图4显示了被修复的CPackage::CreateTempFile函数添加了MarkFileUnsafe函数的调用。
三、安全建议
根据McAfee的文章,关注安全的用户可以考虑以下的建议:
①应用微软的Fix It临时热补丁或SecurityAdvisory 3010060提出的解决方法;
②应用Security Bulletin MS14-060中提出的第一个或第二个解决方法,即“禁用WebClient服务”和“阻断139端口和445端口”。我们认为这两个方法能够有效防御新的漏洞利用方法,而第三个解决方法(“阻止安装信息文件(.inf文件)来启动可执行程序”)可能是无效的。
参考链接:
1.http://blogs.mcafee.com/mcafee-labs/new-exploit-sandworm-zero-day-bypass-official-patch
[整理源自Rabbit_Run,喜欢文章请点赞鼓励。转载请注明来自FreeBuf.COM]