近日看到一则新闻说“某男子捡一手机装有支付宝网购,用其购买7台iPhone”。捡到手机的人通过支付宝“找回密码”操作,成功获得密码,然后开始网购,支付宝被刷了3万多元。关于这则新闻事件的可能性我在微博上与李铁军讨论了半天。有些朋友可能记得在今年三月份有条新闻说有人通过某些偏远地区的移动营业厅,使用假证件挂失补办他人的手机号,并通过手机修改支付宝密码,盗取支付宝里余额。我先暂且不去分析这两件事件的真实性,但作为支付宝的忠实用户,我还是想去了解一下究竟,是否存在这种可能。
以前我并不是很关注支付宝的安全新闻。自从被“强迫”使用了支付宝的快捷支付和最近推出的余额宝,事关自己的利益,因此最近支付宝出现的安全事件新闻,我都会参与讨论一下,包括上次的交易信息泄露个人信息的事件。于是上周末我花了点时间对阿里的手机客户端做了下测试。由于本人只有安卓的手机,所以测试的都是安卓应用。测试的应用主要是淘宝手机客户端和支付宝钱包(都是最新版本),同时对wap版及网页版淘宝和支付宝做了附带测试。本次测试没有使用任何工具,仅仅用常规手法测试业务流程。但通过测试我还是发现了一些问题,或许有些偏差,但测试的结果我都截了,应该反映的都是真实情况。以下是测试发现主要的一些零碎问题:
1. 一分钱可以买你的账号信息
支付宝客户端有一个“手机号转账的功能”。通过该功能,可以知道某手机号对应支付宝用户的关键信息。不花钱的情况下可以知道对方的名字,如果支付一分钱,就可以知道对方的支付宝的账号和真实姓名(点击手机转账里对方手机号的联系人图标,为了测试这个问题,花了几块钱,希望支付宝赔给我)。
关于这个类似的问题,之前小鸟在乌云上报过,但是还是没有完全杜绝。
http://wooyun.org/bugs/wooyun-2010-022400
另外,http://me.alipay.com 也有这个问题,付款前都看不到对方的账号信息,付款后就可以在支付宝里面转账联系人里面看见。
2. 提现银行卡号未处理直接显示
关于信息泄露的问题客户端还有一些,比如提现银行卡号信息泄露的问题,网页版是看不到的。(301同学提供)银行卡号在网页版支付宝取回支付密码时可能被用上。
3. 淘宝客户端退出好难
淘宝客户端起初我一直没有关注过退出的问题。由于这次顺便测试了下淘宝客户端的安全性,顺便也测试了下安全退出的问题,结果发现淘宝客户端的退出好蛋疼。平时退出淘宝客户端我都直接按返回键。有时候也从菜单里面选择“退出”。但事实上,淘宝的客户端根本没有真正的退出,重新打开还是会自动登录(登录界面也没有记住密码的选项)。需要退出账号得在菜单》》设置》》注销,下次登录才需要输入用户名密码。
此外我寻了半天也没有设置一个类似支付宝手势密码的地方。既然“不鼓励”退出,总该搞个其他的简单验证吧。话说淘宝里面有很多隐私信息的,如联系人、订单信息都可以查看,更重要的还可以一键切换到支付宝客户端。
4. 支付宝手势密码形同虚设
支付宝的手势密码看起来很威猛,但其实是个纸老虎,很容易就能绕过。我最先想到的方法是把支付宝客户端卸载了重新安装,然后通过淘宝客户端的一键切换跳转过去,这个大家可能都能想到。如果机器没有安装淘宝客户端,或者淘宝客户端没有登录怎么办?办法还是卸载支付宝客户端,然后重新安装。支付宝卸载并没有删除账号信息,重新安装后还可以使用,这样就绕过了手势密码。
支付宝和淘宝的验证信息都存在手机本地,假如手机被植入木马,账号相关文件被盗取,是否可以在其他手机上直接调用并利用?是否可以逆向出用户名密码?关于这个我并没有测试,如果有同学有兴趣,可以去研究研究。
5. 取消手机令宝不需要验证
取消手机令宝不需要任何验证(貌似小额交易免密码也是,没有测试确认,有兴趣的同学可以测试测试)。
以上发现的这些问题可以说是不痛不痒,有些人可能不是很关注,那么以下这些问题需要大家的足够重视。
6. 小额免密支付功能与淘宝账号登录支付宝
其实还有一种办法绕过支付宝手势密码,当忘记手势密码后可以通过重新登录进行绕过。虽然不知道支付宝的密码,但是可以通过淘宝账号进行登录。而如果有手机,搞到淘宝账号和密码比较容易,仅需要短信验证码(详见下一个问题的描述)。
很多人为了方便,开启了小额免密支付功能,通过淘宝账号绕过登录后也继承了这一个特权。因此如果手机丢了,每准还会附带赠送200块话费。
7. 欠妥的密码取回机制
在说这个问题前,我大概梳理了下支付宝以及淘宝密码取回的条件要求:
目前支付宝及淘宝用户主要面临的威胁有(不含钓鱼等需要用户参与的):
Ø 账号被盗
Ø 电脑中毒
Ø 手机丢失或被冒用
Ø 手机中毒
(如不全,请不要鄙视)
针对账号被盗(撞库攻击),阿里的应对策略应该足够用,有手机短信作为二次验证,想要修改密码,基本上很难。我作为一个安全从业者,对自己的手机系统安全还是比较有信心的,除非被高层盯上要搞我,人家也不会惦记着我的支付宝余额。但是我却不能保证自己的手机不丢失,不能保证不会被别人用假身份证把我的手机号补办了。阿里以及互联网各大公司的账号取回机制过于依赖运营商的短信验证,这让我感到很不安。
淘宝wap站及客户端仅通过短信验证码就可以修改密码,获得淘宝的权限就相当于获得了支付宝登陆权限(通过一键跳转)。
手机取回淘宝密码:
手机取回支付密码:
支付宝的密码修改,除了短信验证外还需要身份证号码做辅助。但是要搞到机主的身份证号码方法太多了。
A. 手机上往往能找到身份证的号码(短信、手机邮件、图片扫描件)。玩转手机的达人,丢了手机就自求多福吧。
B. 通过其他系统如12306这个除公安系统外最大的个人信息库,假如你登录12306的账号是手机邮箱,那对不起。有了手机可以进入手机邮箱,也可以进入12306看到你的身份证号码。(301同学提供)
C. 或者稍微来点社工手段,比如:捡到手机后,等着机主来电话。电话来了,就说“你是机主吗,终于来电话了,刚才有个人要冒认,还好我机智。我在某某地等你,穿蓝衣服,你手机好像要没有电了,对了你把你身份证号码告诉我,我怕被人冒认,一会没电了我无法和你确认”失主着急的情况很有可能就告诉你了。如果小偷了解这个手段,可能偷了手机还能再捞一笔。
有些人也许会说我手机有锁屏密码,但有些锁屏密码是可以绕过。而且sim卡SD卡是很容易就取出来的。或者拿我的手机号设置个短信转移,什么时候搞到我的身份证号码再下手就可以了(没有手机的情况下,不能发短信但,可以通过网站修改,支付宝支付密码修改需要的银行卡号可以在提现银行卡号里面获取、也可以在wap网站修改支付密码)。
不过我还是最担心假身份证补办卡的攻击,sim卡和身份证号码都有了,只要几分钟,余额都没了。
对于普通用户来说,手机中病毒问题也很严重,目前手机的病毒问题在上次安卓签名漏洞后貌似有爆发的趋势,病毒可能只需要发送一条短信就可以将手机短信转移了。此外不知道现在流行的假移动基站水平什么程度了,是不是可以嗅探到短信的内容。假如这个能实现也是个非常大的问题。Sim卡克隆也可能是个途径,也许未来中关村给手机装软件的不光给装插件的app还给你做点其他事情。
最后:
我们回到最初的2条新闻,从以上分析,通过补办卡号盗取支付宝金钱的是可能的。但捡到手机,然后取回密码,也是可能的,但需要身份证号码,否则最多只能小额交易。此外那条新闻(http://www.cnbeta.com/articles/250708.htm)明确的说是信用卡被刷了30000多,关于这个我个人持怀疑的太多。如果是余额被消费30000多,那是可能的。快捷支付包含信用卡支付额度没有那么高,一般就几百。如果要高的支付需要登录信用卡网上银行,需要填写信用卡有效期pin码等信息。一张借记卡快捷支付转入到支付宝,一个月限额好像是一万(我个人是这个情况,不清楚别人的情况)。那也是借记卡,不是信用卡。所以关于这条新闻,支付宝最好出来澄清下。
通过上面的这些分析,显然支付宝客户端在手机丢失或手机卡被冒用这块没有做很细致的考虑。以上发现的手机客户端的部分问题,实际上在支付宝网页版都有安全考虑(如账号隐藏、关闭手机令宝)。但不知道为什么在手机客户端出现了这些问题。也许无线部门的安全团队和网页版的不是一拨人,也有可能客户端安全在阿里目前还是个盲区。本次测试仅仅用了常规的方法,建议有能力的同学从软件本身看看是不是有安全的问题。
最后,我也没有什么好的办法,也许最原始的验证安全问题是最好的办法。建议各位做移动支付的同学还是根据不同场景去重新梳理下安全需求吧,如账号被盗、手机丢失、手机中毒。不同的情况,攻击者掌握的资源是不一样的,应该有些规避的方法。篇幅问题,就不再啰嗦,欢迎大家在微博上讨论。
以上这些分析基本上只考虑了技术上实现的可能性,并没有分析借到手机后作案的可能性。因此各位网友请不要在犯罪心理学上喷我。本次分析仅仅是因为我心里的不安,支付宝的赔付机制只有5000块大洋,我还没有去细看是否包含手机丢了被盗是否在赔付范围之内。何况5000块仅仅是有些同学余额宝的一点零头而已。本文写的比较仓促,如果有什么不妥欢迎指正。