漏洞是两个月前公开的,网上相对于这个漏洞的介绍比较少,不过有一篇文章写得挺好。原文链接:http://bbs.pediy.com/showthread.php?t=158309
1. 漏洞的基本情况
北卡罗莱纳州立大学蒋旭宪教授领导的团队日前发文称Android系统所有版本中存在安全漏洞[1],任何应用软件不需要任何权限(包括不需要读写短信的权限),都可以在系统中伪造任意号码发来的任何内容的短信或彩信,从而可能引发进一步的钓鱼攻击。Google已经确认了这一漏洞的存在。
产生漏洞的主要原因是,系统预装的短信程序中,下列服务被暴露(设置为了android:export=”true”):
com.android.mms.transaction.SmsReceiverService
任何第三方软件可以通过名为android.provider.Telephony.SMS_RECEIVED的action,加上自己构造的短信或彩信来调用它,触发系统的短信接收流程。
2. 漏洞的demo和PoC
蒋教授的团队在Youtube公布了一份漏洞演示视频[3]。
一份可用的PoC代码已经被公布在github上[4]。
3. 漏洞的修补
3.1 修改系统
理论上,对此类不当暴露、且需要被其他应用调用的组件,可以通过自定义signature级别的权限,并在组件申明中添加相应的权限要求,即可保证安全。考虑到这次是系统预装软件的组件发生暴露,也可以使用signatureOrSystem级别的权限。
Google目前尚未发布官方的修复代码和升级补丁。
3.2 检查intent调用
目前的第三方解决方案主要以金山手机毒霸为代表,其在新闻中称可以检测和拦截对这个漏洞的利用,并对恶意构造的短信进行有效拦截[5]。他们没有公布技术实现的细节,个人猜测是检查了对这一组件发起的所有intent的来源。
(本文只介绍情况,不是软文)
3.3 移除组件
如果将出现漏洞的预装软件mms.apk卸载,亦可去除这一漏洞。可以使用第三方的独立短信收发软件来替代它。但我并不建议普通用户这么做,一是不能确保对系统稳定性不造成影响,二是第三方短信软件是否也存在类似的漏洞还需要检查。
参考文献:
[1] http://www.csc.ncsu.edu/faculty/jiang/smishing.html
[2] http://www.csdn.net/article/2012-11-06/2811576-Android-bug
[3] http://www.youtube.com/watch?v=gLujaf0Y4-A
[4] https://github.com/thomascannon/android-sms-spoof
[5] http://m.duba.com/news-content/news121106.htm
漏洞测试APK下载:
最后附上两张测试截图:
漏洞修补:
手机毒霸已经可以拦截和修补此漏洞。