浅谈二维码安全问题学院经济与管理学院专业信息管理与信息系统姓名文书禹班级34080201学号2013040802020二○一六年十月引言:近几年,各大互联网企业逐步认识到了二维码的重要性,纷纷引入了二维码的宣传方式,报纸、刊物、团购优惠、产品促销,甚至网上的视频媒体也采用二维码实现与用户交互!不仅如此,二维码还出现在广告牌以及商品的包装盒上,出现在火车票等各种票务凭证上,出现在餐饮等各种消费场所!真可谓是无处不在,二维码正在悄悄地改变着人们的生活方式,引领着一种时尚潮流!现在只需用手机扫描一下促销商品的二维码,就能方便地链接到商家的官方网站,查看到更为详细的信息!在新闻报道上扫描二维码,可以查阅报道的相关图片视频等更详细的内容!二维码给我们的生活带来便捷的同时,其潜在风险也越来越大,如钓鱼网站手机病毒恶意程序等正在通过二维码进行四处传播!与此同时,借助二维码进行传播的手机病毒、恶意程序也日益增加,由于二维码技术已经相对成熟,普通用户即可通过网上的二维码转换软件,任意合成二维码,并且从外观上并不能判断其安全性,这就更加方便了黑客针对二维码进行各种非法操作,用户一旦扫描了嵌入病毒链接的二维码,其个人信息、银行账号、密码等就可能完全暴露在黑客面前,酿成的后果可想而知。而随着2014年三月份央行紧急叫停二维码支付,二维码的安全问题被推向高潮。二维码的研究现状国外对二维码技术的研究始于20世纪80年代末.在二维码符号表示技术研究方面,已经提出了多种码制,常见的有表示技术研究方面,已经提出了多种码制,常见的有表示技术研究放面,已经提出了多种码制,常见的有PnF417,QReode,Codc49,e-ode16K,DataMatrix等这些二维条码的密度都比传统的一维条码有了较大的提高.在二维码标准化研究方面,国际自动识别制造商协会(AIM),美国标准化协会(ANSI)己经完成PnF417,QReode,Codc49,e-ode16K,DataMatrix码制的符号t/J。国际电工委员会第1联合委员会的第31分委员会,即条码自动识别技术委(150/IEC/JTCI/SC31),起pDF417,Code16K,DataMatrix,Maxieode等二维码的150/IEC标准一草案。一、手机二维码的应用二维码在公共交通、企业营销、物流管理、食品追溯等传统行业已得到了广泛应用,热门的是二维码与OTO模式的结合,借助移动互联网这一存储、传播、处理的新通道,二维码推进了线上与线下的互动,如社交服务、电子凭证、购物支付等等[2]。按照实现原理,手机二维码的应用可以分成三类模式:(1)解码上网/通信根据内容来划分,二维码的解码结果可以是URL、SMS、邮件、电话号码、文本信息等。如果是URL,手机会调用浏览器直接打开该链接,用户可以进行数据浏览或下载,如打开商品链接、下载优惠券、信息查询等。如果是sms://或tel://开头的内容,手机会直接打开短信功能或进行拨号,具体操作取决于二维码解析规则的编写。(2)数据识读火车票就将二维码作为乘客信息的载体,初的二维码采用明文存储信息,为了避免不法分子恶意利用信息,目前已经对数据进行了加密。很多商家采用二维码作为电子名片、会员卡的载体。用户的信息被存储在二维码中,商家用识读软件扫描后信息直接推送到服务器中,服务器终端数据会实时进行更新,整个过程省去了人工录入环节,增大了信息容量,实现了电子数据的快速交换和实时更新。(3)解码验证在电子票务、电子回执、手机支付等应用服务中,用户通过手机二维码就能证明自己的自然身份、通讯身份或交易身份,这种模式突破了传统受理终端的业务模式。用户通过扫描支付二维码实现手机的下单和支付过程,商家通过专用识读设备读取身份信息来完成验证过程,实现了用户自助化。二、手机二维码的安全问题作为一种信息载体,二维码本身并不含有病毒。许多不法分子只是借助二维码作为一种工具来广泛实施恶意行为,严重危害用户的利益和隐私。目前手机二维码的安全问题主要存在以下几方面:(1)恶意的内容链接目前,大多数二维码承载的内容是一个URL,而现在的扫描软件往往不会对链接的安全性进行检测,恶意链接往往指向挂马网站、钓鱼网站、恶意软件安装链接等。用户点击带有流氓插件的网站后,木马或恶意软件会被浏览器自动下载到本地。有的链接对于Android系统是直接定位APK下载,对于IOS系统则指向AppStore应用页面,用户一旦点击安装,手机就会感染木马。这类攻击严格上不算是病毒,应该属于社会工程学范畴,用户往往因为疏于防范而中招。(2)生成和传输环节存在漏洞二维码,尤其是进行身份认证的,在生成和传输过程中常常存在被拦截和篡改的可能,不法分子可能伪造链接钓鱼网站的二维码,诱导用户扫码,导致信息泄露。以二维码支付为例,黑客可以利用二维码的编码特性和APK的其他漏洞,拦截客户端发出的付款二维码进行恶意篡改,或者在扫描付款的客户端中插入恶意代码,通过在用户扫码交易时篡改数据,使资金流向黑客的账户里。另外,用户在使用二维码登录电脑终端的账号时,可能存在服务端的校验无法解决客户端屏幕劫持等问题,黑客也可能通过二次打包、跨站请求伪造攻击、AndroidHook等方式劫持用户客户端数据,导致用户信息被盗。(3)智能终端安全性低由于硬软件方面存在局限性,手机不能像电脑一样安装功能全面的安全软件,手机环境的复杂性使其面临着多种潜在的安全威胁,比如手机病毒、木马插件等,这些威胁会利用系统或软件存在的漏洞来实现远程控制或恶意破坏的目的。以浏览器为例,针对带有网址链接的二维码,软件在扫码时会调用浏览器的解释引擎,如果浏览器存在缓冲区溢出漏洞,恶意分子就可能针对这些漏洞编写特定的URL,植入恶意的HTML/JS代码,以获得系统root权限。(4)身份认证机制不够通信安全的关键问题是手机用户的身份认证过程。网上银行可以利用数字签名、SSL、UBSkey等手段来保护账户的安全性以及数据的完整性、保密性和不可否认性,但是手机终端的运行能力和存储空间与电脑终端不同,复杂的认证过程并不适用于网络环境。目前的手机支付终端在完成二维码扫描后,一般只要求输入支付密码或者短信验证码,甚至可以通过短信重置密码,这种支付过程的验证方式过于单一,存在短信劫持、篡改密码等问题。(5)开源类库二维码解析程序中往往需要引用开源类库,如Google的Zxing,这些类库有可能被不法分子利用,因为可执行文件的输入表只提供了动态链接库的名称,没有其它详细信息,当黑客通过不法手段劫持或替换正常的so文件,或者替换原有的API地址为自己的so中API地址,病毒木马就可以随着文档的打开而加载自身。如果软件装载动态链接库以及可执行文件的方式存在问题,黑客可以利用该漏洞在应用程序搜索的一个目录中植入伪装的恶意软件,当应用程序查找.so、.apk文件时,就可能启动恶意程序。(6)标准规范不一目前,我国主要采用国外的码制,如QR码及DM码,还有汉信码等多种国产码制,码制的不统一造成了二维码生成和解析的多样化。对于不同编码格式或者经过加密的二维码,用户手机在进行解码时可能出现问题。另外,虽然二维码本身承载的数据是安全的,但是有些软件却有一套自己的解析规则,只要使用该软件进行扫码就会自动执行指定功能。这个自动的执行过程,使得安全数据立刻变成恶意信息,例如,无论用户输入什么信息,生成的二维码内容都是一个恶意网址链接。以下通过具体实例及图片来简明阐述手机二维码问题逻辑之间的流程:(一)某著名股份制银行二维码漏洞该银行中关于二维码的功能有两处,一处是扫一扫功能,另一处是我要收款中的二维码功能。如下图所示(左:扫一扫功能;右:我要收款功能)下面从这两方面对二维码安全展开分析:1、扫码分析:扫码逻辑暴露后,扫码劫持变得非常简单,黑客可以在用户进行扫描付款的客户端中插入恶意代码,进行交易数据篡改,使本该流向商户的资金流向黑客。2、我要收款代码如下:虽然该银行对收款的二维码存储的信息进行了加密,但还是不够安全,仍然存在一定的安全隐患,黑客可以利用二维码的特性和该APK的其他漏洞,进行一些非法的活动,下图模拟了该应用可能存在的安全隐患。(二)支付宝付款码支付宝钱包做了两种付款码,条形码和二维码,下面对二维码的生成逻辑进行了简单的分析。代码分析设计如下图所示:(三)某大行扫码威胁该银行手机客户端获取二维码有两种方式,一是从手机相册中获取二维码图片;二是进行扫码获取二维码信息。二维码作为登录凭证、流量入口、身份凭证、支付凭证等,在日常生活中的应用比比皆是,其漏洞问题也远不止以上阐述的这些,而这些安全问题一天不得到解决,我们的隐私安全、财产安全等就一天得不到可靠保证,随时都要担心自己的账号是否“被”登录?手机银行绑定的银行卡是否被黑客攻击等等。因此,如何为二维码安全打造一套可靠的解决方案,让二维码支付在安全的环境下恢复使用,是当下亟待解决的重要问题。