You can’t have a back door in the software because you can’t have a back door that’s only for the good guys.“ - Apple CEO Tim Cook 你不应该给软件装后门,因为你不能保证这个后门只有好人能够使用——苹果CEO 库克
0×0 事态发展
最近百度WormHole漏洞门闹的沸沸扬扬,影响了全国上亿用户,N款app受其影响,只要安装了百度相关的app,手机处于联网的状态,手机就有被控制的风险,下面我们回顾一下该事件的发展:
10月14号乌云提交百度地图/输入法远程漏洞,且厂商已经确认,细节未公开
10月20日,白帽子蒸米发微博称他们发现了一个漏洞,影响Android上亿的用户,只要安装了有漏洞app的手机连接了网络就有被攻击的风险,并有视频验证其的确可行性
11月1号,趋势科技公布分析报告,声称他们已经检测到恶意样本(ANDROIDOS_WORMHOLE.HRXA)在利用Moplus SDK来自动和定期下载用户不需要的应用当这些应用被下载到用户设备后,如果用户设备已经root了,则应用程序将被自动安装,同时使用了百度Moplus SDK的其他厂商的app也将受到漏洞攻击的风险;
11月2号,漏洞发现者也在乌云补发漏洞分析报告,漏洞细节并没有公开,与此同时百度一名代表声称其10月30号之前漏洞问题已经全部得到解决;
11月2号,同时我们开始应急该漏洞事件,经过加班加点的分析,我们构造出了poc,同时我们发现百度各个产品修复漏洞的情况略有不同,部分产品可能还是没有修复完漏洞,甚至根本就没有进行任何漏洞修复的动作,比如最早曝光的百度输入法;
下面是我们的录制的一段演示视频,仅安装了最新版百度输入法, 通过浏览器访问开放的6259端口,即可控制手机的一些操作:
0×1 漏洞分析
我们分析了有漏洞的版本的app, 其主要功能在Moplus SDK中,他们会大部分会开放40310或者6259端口,甚至可能还有开放了其他端口(谁知道呢?)
而我们发现 在使用百度地图的情况下,用手机浏览器访问7000端口会获取手机当前地理位置信息,而且在百度当前新版本(8.7.5)中,该端口依旧开放:
该漏洞核心功能如下:
geolocation 获取用户手机的GPS地理位置(城市,经度,纬度) getsearchboxinfo 获取手机百度的版本信息 getapn 获取当前的网络状况(WIFI/3G/4G运营商) getserviceinfo 获取提供 nano http 的应用信息 getpackageinfo 获取手机应用的版本信息 sendintent 发送任意intent getcuid 获取imei getlocstring 获取本地字符串信息 scandownloadfile 扫描下载文件(UCDownloads/QQDownloads/360Download...) addcontactinfo 给手机增加联系人 Getapplist 获取全部安装app信息 downloadfile 下载任意文件到指定路径如果文件是apk则进行安装 uploadfile 上传任意文件到指定路径,如果文件是apk则进行安装
然而Moplus SDK代码中仅仅只对http头做了简单的校验,比如判断remote-addr是否为127.0.0.1,所以利用此漏洞的方法极其简单,在知道目标手机ip的情况下,你只需要一个浏览器,设置好相应的http头,即可攻击控制该手机的一些操作;
我们测试了百度的部分产品,发现其修复方案大多是砍掉一些危害的函数(如下图方框内函数),并关闭开放的端口(6259 | 40310),不同的产品,修复的细节略有不同,砍掉的函数可能不一样;
图1.大部分百度产品的修复方法
然而最后我们发现,百度输入法貌似根本就没有修复,端口依旧开放:
其核心功能代码根本没有变化
对比修复前后版本,我们发现其核心代码,并没有任何改动:
修复前版本5.8.2.0 发布时间2015年8月17日 修复后版本6.0.1.0 发布时间2015年10月28日
漏洞测试流程如下:
1.使用火狐的Modify Headers插件增加http头;
2.漏洞证明;
可以打开任意url链接,这样别人可以利用这点诱导用户点击url链接,(刷流量,钓鱼,恶意的url攻击)
获取手机安装的其他APP信息,这样如果其他app有漏洞,是否可以作为收集信息的工具呢?
3.更多poc,你可以开发你的脑洞构造更多的poc,只有你想不到,没有你做不到
0×3 感想
百度发生了这么重大的安全事故, 时间过去了半个多月之久,居然还有产品开放端口,居然还有产品漏洞没有修复,居然还心安理得的说我们已经解决了所有产品的漏洞
是粗心大意无所谓,是存在侥幸心理,还是某些缺乏安全意识的开发根本就不care这些事情.所以在时隔如此之久, 端口依旧!!! 漏洞尚存!!!
这次的百度漏洞和去年的路由器后门门有着异曲同工之妙. 百度又有多少应用依旧开放着XX端口,国内又有多少应用依旧存在后门,我们的网络环境还安全么??????
而诸如像百度这样的大公司在爆发安全事故之后,各个组的响应情况可能是不一样的,组与组之间沟通信息不一致,沟通成本高,信息不对等,面对这样安全问题缺乏统一的调度审核,从而暴露出大规模企业的安全应急响应还存在不少问题!
有些手机是预装百度输入法的,比如X米手机某些机型,这些用户可能就面临被黑阔们攻击的风险.同样很多手机厂商(华为,三星,联想,金立)也是预装百度产品的!
其他的百度产品也有很多用户没有升级, 这些无疑是黑客们喜爱的甜点!
这些预装百度产品用户该何去何从,然而谁来为这些暴露在黑客视野下的用户负责呢?!
甚至有很多用户根本就不知道有这些事情, 或者知道了一笑了之, 没出问题感觉没啥, 一旦和自己切身利益受到影响, 才开始意识到问题的严重. 我想这也是很多用户的心理吧…
在这个充满功利的世界下, 很多人已经放弃节操和底线, 挂羊头卖狗肉, 表面上是正规产品, 实际上呢? 各行各业不都是如此么, 食品,医药,日用……..这个世界是怎么了……