【干货】怎么应对二维码藏病毒?二维码未来的安全问题如何解决?
2014-03-15 22:09 二维码

央视披露了二维码支付的风险,i黑马第一时间请教了达人,现在把一些提高二维码支付安全性的干货分享给大家,希望对大家有帮助。

央视披露了二维码支付的风险,i黑马第一时间请教了达人,现在把一些提高二维码支付安全性的干货分享给大家,希望对大家有帮助。

要回答这个问题,需要先讲清楚2个概念:

1、二维码里有什么?

2、扫一下为什么会“中毒”?

第一个问题,现在二维码里大致有这样一些类型的数据:长文本、短文本、名片、网址、wifi配置信息、地理位置信息。

第二个问题,首先通俗的解释一下“中毒”的概念。中毒和生病一样,病毒需要一个生存和发展的环境,如果扫码能中毒,那么环境是谁?当然是扫码软件以及扫码软件的运行环境(通常就是手机操作系统)了。现在已知的二维码“病毒”大致有以下3种方式:

钓鱼网址,这个严格来说不是“病毒”,属于社会工程学威胁范畴,用户只需稍有安全意识则能有效避免被骗上当。在手机上,打开一个网址本身在大多数情况下是安全的,但危险在于停留在这个打开的网站上,用户干了些什么。用户自己主动输入信用卡号、安全码,用户自己主动输入支付宝用户帐号。。。另外,网址并不等于网站入口。比如,有一类特殊的网址,叫做伪协议地址,这个也有想象力空间(但似乎没见到攻击案例),例如sms://、tel://等等,这些点击之后,在不同的系统上有可能会打开不同的应用程序,例如发短信、打电话等等。

HTML/JS混合代码,这是由于很多二维码软件提供了所谓的智能内容感知和识别,调用了浏览器解释引擎去承载和处理这些代码,实质上就是给“病毒”提供了“温床”,所以会“中毒”。但,就目前已知的攻击案例来说,纯第三方二维码类应用软件即使被这些浏览器客户端恶意代码攻击,在绝大多数情况下对用户造成的影响也很有限。极少数情况,可能会发生在:

恶意代码直接攻击浏览器解释引擎,造成内存破坏类攻击,直接获得原生应用程序级别的任意代码执行甚至是提升权限。这种问题发生的概率要远远小于PC端浏览器遭受同类型攻击的概率。主要原因是:大多数攻击程序是需要一定“行数”的代码组成的,而二维码的承载数据能力又是受限制于图片编码的容量极限的。简单理解就是:复杂攻击需要更多行数的代码,较少行数的代码只能实现较简单的“攻击”,二维码由于自身设计的“缺陷”,无法提供恶意代码存储所必要的足够空间,故攻击想象空间和影响效果有限。

自定义的二维码应用。虽然二维码本身承载的其实就只是普通文本数据(数字、字符啥的),但有些软件给这些数据定义了一些自己的解析规则,目的是实现扫码后自动XXX或自动YYY。坏就坏在这个自动化的过程,给了数据一秒变病毒的机会。如何理解?参考Web安全里的SQL注入、XSS等,就是最典型的数据一秒变病毒的参考案例。

上面3类“病毒”,第一种可以归类为需要用户交互才能得逞的病毒,后两种可以归类为无需用户交互即可实现“感染”的病毒。

前者在目前来说最常见,后两者攻击易得手但造成的影响大多数情况下极为有限。

应对方式和Web时代的安全问题类似,需要几方面参与者的共同努力。

扫码软件厂商,在提供基于二维码的新应用时,要安全的设计和实现二维码识别后内容的解析引擎,对网址的识别可以集成第三方安全厂商提供的URL黑名单查询服务,对已知恶意网址提前向扫码用户告警,并取消点击交互行为的支持。另外,扫码软件可以提供一个牛逼闪闪的安全模式(其实就是纯文本模式啦),让有安全意识和能力的用户可以先看看是什么,再决定下一步如何解析、是否允许软件自动化做XXX或自动化YYY。当然了,做产品,还可以在用户体验层面再智能一些,让用户可以更傻瓜一些点【下一步】。

用户要做到,一要选择知名的二维码扫描软件,二要避免打开陌生和奇怪的网址。

安全厂商,还和现在一样,该干嘛干嘛,多给扫码软件厂商做做推广,集成你们的恶意网址识别引擎吧。再牛逼一点,云扫码吧,所有二维码里的数据,你们先在云端看看,不良内容给消消毒就是了。

至于二维码未来的安全问题?先让我们看到二维码在未来有什么新应用吧,如果没有新应用,那么以上内容已经涵盖了二维码病毒的成因和对策。新应用?我已经预测了以上的第三种方式了。