二维码自普及以来,无论是从它的便捷性,还是其安全问题,一直都是公众关注的焦点问题。“码”时代来势迅猛,不可阻挡,似乎一夜之间,二维码即遍布各电商平台、商场、网站、杂志、甚至车票上,二维码迅速成为移动互联网时代的新宠儿。
与此同时,借助二维码进行传播的手机病毒、恶意程序也日益增加,由于二维码技术已经相对成熟,普通用户即可通过网上的二维码转换软件,任意合成二维码,并且从外观上并不能判断其安全性,这就更加方便了黑客针对二维码进行各种非法操作,用户一旦扫描了嵌入病毒链接的二维码,其个人信息、银行账号、密码等就可能完全暴露在黑客面前,酿成的后果可想而知。而随着2014年三月份央行紧急叫停二维码支付,二维码的安全问题被推向高潮。
下面结合笔者对几个金融类手机客户端中关于二维码功能的安全性分析,来看一下二维码支付存在的典型安全漏洞。
(一)某著名股份制银行二维码漏洞
该银行中关于二维码的功能有两处,一处是扫一扫功能,另一处是我要收款中的二维码功能。如下图所示(左:扫一扫功能;右:我要收款功能)
<img src="http://image.3001.net/images/20140825/1408958697769.png!small" title="22.png"/></p>下面从这两方面对二维码安全展开分析:
1、扫码分析:
<img src="http://image.3001.net/images/20140825/14089588093245.png!small" title="33.png"/></p>扫码逻辑暴露后,扫码劫持变得非常简单,黑客可以在用户进行扫描付款的客户端中插入恶意代码,进行交易数据篡改,使本该流向商户的资金流向黑客。扫码攻击如下图所示:
<img src="http://image.3001.net/images/20140825/14089588521898.png!small" title="44.png"/></p>2、我要收款
<img src="http://image.3001.net/images/20140825/14089589212059.png!small" title="5.png"/></p>虽然该银行对收款的二维码存储的信息进行了加密,但还是不够安全,仍然存在一定的安全隐患,黑客可以利用二维码的特性和该APK的其他漏洞,进行一些非法的活动,下图模拟了该应用可能存在的安全隐患。
<img src="http://image.3001.net/images/20140825/14089589545449.png!small" title="6.png"/></p>
(二)支付宝付款码
支付宝钱包做了两种付款码,条形码和二维码,下面对二维码的生成逻辑进行了简单的分析。
<img src="http://image.3001.net/images/20140825/1408959020335.png!small" title="7.png"/></p>支付宝付款码存在的安全漏洞如下所示:
<img src="http://image.3001.net/images/20140825/14089590634480.png!small" title="8.png"/></p>图1 二维码生成攻击
<img src="http://image.3001.net/images/20140825/14089590828137.png!small" title="9.png"/></p>
图2 扫码攻击
(三)某大行扫码威胁
该银行手机客户端获取二维码有两种方式,一是从手机相册中获取二维码图片;二是进行扫码获取二维码信息。
<img src="http://image.3001.net/images/20140825/14089591687898.png!small" title="2.png"/></p>该银行手机客户端扫码安全漏洞如下图所示:
<img src="http://image.3001.net/images/20140825/14089591936930.png!small" title="3.png"/></p>二维码作为登录凭证、流量入口、身份凭证、支付凭证等,在日常生活中的应用比比皆是,其漏洞问题也远不止以上阐述的这些,而这些安全问题一天不得到解决,我们的隐私安全、财产安全等就一天得不到可靠保证,随时都要担心自己的账号是否“被”登录?手机银行绑定的银行卡是否被黑客攻击等等。
因此,如何为二维码安全打造一套可靠的解决方案,让二维码支付在安全的环境下恢复使用,是当下亟待解决的重要问题。
果断点个赞
看起来很吊的样子
我觉得服务端最终会有校验的
果断点攒
@holiday0 服务端的校验无法解决客户端屏幕劫持等问题,比如黑客通过二次打包、Android Hook等方式劫持用户客户端数据,在服务端就无法察觉。听说中国有家企业,江苏通付盾有项动码技术,能解决二维码安全问题,供参考 www.payegis.com
@夏克霆 很简单,你扫的二维码就是后端校验的依据,最后后端拿到的数据跟二维码提供信息不同的话就没用。
另外中间劫持难度也很大,先要过https,还要解决签名或者DES,AES加密问题。
@holiday0 后端数据始终是部分相同,完全相同的话何必还拿到前端,前端必定还要增加数据,客户端有操作就存在被劫持的风险。
有几个公司已经开始做这方面了吧 记得有一个叫通付盾还是什么盾的
没有一点证据表明真正漏洞的存在。都是凭空揣测。
@银监会 你可以去用支付宝付款的线下商店,然后用另一个手机拍你自己的付款码并支付成功。仔细想一下问题很严重的。
@夏克霆 你这种尝试无异于说,我把银行卡和密码都告诉你,你看看你能取出钱不~
这个标题好比把密码写在纸上,然后质疑纸张的安全性。
@丸丝葱 同意!二维码只是一个url或者字符串集合
低额度交易吧
二维码不过是一个信息载体,安全不安全是在处理这些信息的时侯所做的工作,跟二维码有一毛钱的关系
处理信息时,貌似与二维码没有什么关系了吧
@cumt053456 在处理信息之前,二维码上的信息就已经被劫持或篡改,请知悉。
其实我没有内容,氮素,二维码是安全的!!!
不安全的是人的智商
你讲app安全得了。扯什么二维码啊
@james 楼主所说的问题确实不是由于二维码本身造成,就像朋友把银行账号这个“字符串”发给你,让你转账进去,可是你被劫持了,而银行没有严格验证,最终导致你转账对象变成攻击者,这个难道能说成是“字符串”不安全?
任何一个环节中,没有多因素校验都是扯淡。
二维码上的信息被劫持和一般的付款方式中信息被劫持有什么区别吗?是说用二维码付款的方式信息更容易被劫持吗?
@mctrain 因为二维码是静态单因子且暴露在开放平台(如Android),所以二维码付款的方式信息更容易被劫持。
作者说的都对不过1.校验机制完备条件下不是你篡改得东西银行也要认得 2.这种劫持和篡改的根本问题不在于二维码而在于扫码app。二维码只是一个信息载体对一段信息不一样的呈现罢了,面团做成馒头还是面条它都还是面,你一定说面条有毒面条要哭了长的怪异不是我的错啊
收藏,留着安全意识培训用,^_^