申子熹 - 中国嵌入式系统产业联盟秘书长助理
中国电子银行网讯 2014年中国互联网安全大会于9月24-25日在京举行,国内有关部门领导人、国内外互联网安全技术专家,以及各个行业信息安全主管与技术人员莅临本次会议,中国电子银行网作为合作媒体从现场发回报道。
在24日下午举办的移动安全论坛上,中国嵌入式系统产业联盟秘书长助理申子熹发表主题为“移动支付安全深度解析”的演讲,申子熹认为目前我国在保护移动支付商家与客户利益时缺乏相关的法律支持,现阶段要保护商家与客户的财产和业务安全,还需要通过技术手段提升业务抗攻击能力。
以下为申子熹发言实录:
各位嘉宾,大家好。非常荣幸能站在这个讲台上跟大家分享一下我对支付安全的理解和看法。现在支付安全发展的比较迅猛,主要是因为国家各个层面的政策都在支持移动支付这一块能为人,为家庭、为智慧城市提供更大的贡献,包括物联网十二五规划,包括电子商务十二五规划,包括国家最近出的便民、惠民工程,甚至有一些资产,企业资本的介入,都围绕着家庭在转,那未来不会再以技术为导向,而是以业务为导向,为什么这么说呢?我们知道现在越来越多人都在提移动支付或者是移动电商,移动互联网,互联网金融,很少再提大数据、移动互联网,从技术层面界定慢慢转向以业务来作为一个界定方式。第二块国家政策层面也在大力扶持社区电商和移动电商这两个领域,最近发改委的便民惠民工程在各省马上也要落地。第三块就是人们的生活习惯已经慢慢的从PC转移到了移动设备,我们现在可以在地铁上看到有很多年轻人拿着手机,比如说玩游戏、看小说、购物等等。移动支付目前也是空前的,支付宝,阿里巴巴上市也在刺激着每个新的领域,因为在移动支付这个行业大家都希望在移动点上这一块淘金,现在很多业务厂商也介入到IT行业里,资本意识已经慢慢形成,在资本世界里金融圈里谁也现金谁就是老大,有了现金也可以变成影子银行,也可以去放贷,可以去做一些投资理财等等,这是很多做公司或者做产业的非常倾向的一种方式。 最重要的跟技术相结合的点,比如说支付行业的信息安全法律,目前不是非常健全,安全事件如果发生目前没有法律可依据,这个后面我会专门来解释这个问题。在黑色产业链层面也有转型的,他们定的目标就是向前看,向后转。
北京某个社区目前搭建智能应用商店,目前功能非常完善,在里面可以做各种各样支付功能。里面可以买电影票等等,这种模式马上要推广到全国,这是智慧城市的一块,也是智能社区的一分子。比如说在连锁超市经常看到拉卡拉的终端,跟银联绑定做移动支付POS业务的厂家,也在慢慢的占据移动支付市场。甚至连苹果今年发布会的时候他们提出了苹果Pay的概念,后期不知道他们能不能占领中国市场,但是我估计他们也意识到以后移动支付可能会作为智慧家庭与人之间必然的联系。
司法解释的层面,我国的刑法规定新的司法解释是正定的,在获取支付结算、证券交易、期货交易等网络金融帐号、口令、密码、数字证书达十组以上或者更高,这是一个量刑标准。破坏国家机关的金融、电信、交通、教育、医疗、能源等公共服务领域的 计算机系统,也是一个量刑规范。在移动支付这个领域我们就要想,如果移动支付业务逻辑出现漏洞,以蚂蚁搬家的方式获取大量的现金,那法律会以什么方式来制裁它?另外一块就是商户,第三方支付,银行的损失缺失了法律的保护,还有什么方式能够保护银行和第三方支付公司的合法权益不受到侵害?想来想去,其实只能靠自己,目前只能靠现有的技术手段来保障自己的业务安全,来提升业务的抗击打性。
在整个支付链条里分为四个角色,分别是移动商家、第三方支付、银行、用户。每个角色他们都面临着不同的风险和属性,在移动商家这个层面主要有五块,它的业务支付逻辑一旦发生混乱,那是非常可怕的,是攻击行为的直接受害者,客户隐私泄露、公信力缺失和政治影响。第三方支付目前只认订单信息,比如商家接设到什么样订单信息,我就付什么款,不在乎整个过程中攻击造成的风险有多大,而且现在目前第三方管控是处于缺失状态,虽然银行下了两个文,但是这只是限于第三方支付牌照的监管,还不涉及信息安全单向管理条例。他们有大量的风险管控金,这也是他们不惧怕安全原因,如果一旦出现风险,他们会用风险保障金去冲帐。第四是对帐业务逻辑比较混乱,对帐如果有延迟,入帐不谨慎等等,都会导致直接的经济损失,还有虚假交易和交易诈骗。在整个支付链条当中最强势的角色应该就是银行,银行从用户这边把钱拿过来,然后把钱再打给第三方支付,他只是作为一个代付的通道,他拥有大量客户资源,这些钱是不进入清算中心,不属于国家的钱,所以银行如果在这个层面发生损失,他不需要承担任何的法律风险,而且它也不会影响到它的业务使用率,第三方支付一直都是以银行作为自己的老大,因为银行客户是他们第三方支付中唯一的来源。用户目前是比较不安全的角色,包括机密性丧失,包括卖方不履行服务承诺,虚假信息的购买,还有帐户金额被盗用,甚至被拿去洗黑钱,包括信用卡套现等等,这都是用户层面所存在的风险。
移动支付逻辑是怎么实现的?比如我是一个用户,我要使用手机下载APP,我买一个iPhone6,这时候我找到一歌唱家,我提交信息到商家,商家会建立一个链接,并提供支付的数据,我们会选择我需要的商品,确定表单内容,提交信息,形成定单。我会把这个定单提交到商家,商家会告诉我接受到检查定单信息,并使用私钥,发送到第三方的支付接口。第三分支付接口会检查订单的信息,要给银行提交手续费的MCC码,检验完成以后会提交到银行的支付接口,银行校验商号和用户号,会受一定比例的费用,根据不同业务收取不同手续费,会提交扣款信息给用户,同时入帐,入帐到一次清分系统,一次清分系统是一个独立的结算系统,银行会把钱打给第三方支付,MCC号的码按比例来收取,一擦性信息提交给第三方支付,第三方支付会进行二次清分,把帐上的金额以二次清分的方式分到商家的虚拟商户,比如支付宝我们看到它的金额不是帐上实有多少钱,而是虚拟帐户有多少钱,如果需要的话是T+N的方式,比如一天或者两天把这些钱提出来,包括比如余额宝的方式,就是T+N的方式来实现的。商家收到确认信息以后,会实现划拨操作,用户会买到相应的商品。这是整个移动支付的一个非常全的业务逻辑。在这个业务逻辑当中,我标雷的地方可能就是会出现安全隐患的风险因子。
一家之言,对于我来说,我在移动支付和网上支付也都做过一些研究,最直接的一些想法,我觉得移动支付和网上支付区别在于支付形式发生了变化,它的支付逻辑与验证逻辑并没有发生质的飞跃,比如说移动支付我们可以使用移动终端、移动POS机,包括我们手机来进行实际支付,它会作为我们支付使用的介质。网上支付我们可以使用PC。移动支付的使用方式有二维码,NFC等,还有支付宝,它的支付形式发生变化,提升用户体验,提升用户满意度,来增加支付过程的满意度,它会使用一些APP客户端加涉及号码进行支付,也会使用卡号和手机短信来进行支付,这是移动支付一般使用的支付方式。网上银行会使用数字证书,使用卡号、手机短信进行支付。移动支付会使用WAP支付网关对接客户端开放API,来实现整个的支付逻辑。网上支付会使用互联网支付网关。其他的过程基本上都是一样。
结合交易环境、交易对象、交易过程、支付环节大概总结了四类,第一类是脚本框架,第二类是业务逻辑,第三类是社会工程,第四类是传输验证。
第一类在脚本框架这个层面,我们可以在淘宝上,我们如果想做一个支付网站,可以去淘宝上搜,50-1000块钱不等,可以买一整套具有支付功能的原代码,自己改一下就可以成为支付系统的模块,这也是为什么现在很多注册资金比较小或者没有资金实力的公司都建立了支付的管道的原因,他们一般是使用公用的函数库,这些函数库写的比较早,有的甚至是2005年,而且得是公用的代码,通过挖掘里面的验证逻辑,也可以从中发现到你的支付系统里有什么问题,从而把这些问题达到攻击业务的目的。表单这一块,我是一个电商,你是一个第三方支付公司,他是银行,我们三家都要有个协议规范,这个协议规范就是开发规范,这个开发规范我们标明每一条功能都要做什么,比如说多少钱,ID号多少,商户号是多少,这个东西大家都协议的很规范,只有通过协议规范的数据,经过验证才能形成订单一个过程的闭环。这些数据完全没有经过任何加密,它可能在形式上,比如说在过程当中会根据ID号、商户号用私钥签一下名,但是有时候金额不签,为了保证金额可操作性等等。在输入支付密码那一块,会单独调用一个控件,它之前的业务逻辑做的都没有问题,但是恰恰这个业务逻辑在支付过程当中还要校验一遍金额,在这个层面上就会达到一分钱支付的作用,这在各大银行真的是屡见不鲜。
第二大类就是业务逻辑这一块,我们抓包可以看到整个交易过程当中传输了什么数据,SSL暂且不提,有些传输的数据是可以抓取到的,如果这些抓取没有做次数验证或者没有做过程验证的话,很容易就实现,比如6块钱买很多东西,不断提交这个数据。我提交给你,我已经付了6块钱的信息,你不断要返给我这个钱,这就是经常在业务逻辑里出现的重放攻击。这是一个比较经典的例子,手端会通过手机的值来判断你的身份信息,我们看到它会把手机上所有相关跟数字有关的值都提过来,提过来以后它会根据SSID甚至手机型号等等,会把号码都抓下来,这在支付环节当中,我只要把MMA改变为别人的MMA号码,这样我可以以别人的身份登陆到客户端里面去实现任何操作。包括像微信、移动支付这种第三方公司,一般都会有自己的开放接口,每个排放接口写的很清楚,钱是哪块,商业号是哪一块,数据是怎么加密的,加密方式是怎样的,都会在接剖规范写得很明白,而且这些东西都是完全开放的,所有的开发规范包括退货的逻辑都可以获取到。
社会工程这一米,社会工程比如说我现在通过钓鱼等等,我获得了商户号码,登录到商户帐户,拿到商户的密钥,通过一些操作可以把商户数据直接提到我的数据上来,比如把商户的清分系统放在我的清分系统上,这在之前发生过这样一个案例。还有在传输过程当中,比如第一次提交的是商业的,最后提交的时候是公益的MCC码,这样的话,手续费是零元,零元的时候有大笔手续费是返回的,这在一个大型连锁超市里面是非常可怕的。我在京东测试的时候一个比较典型的案例,我做了一个支付,支付已经成功,在网站上正在发货,但是一天以后告诉我现在支付0.01元,还有497元,我就去找,这就证明后台有一个人工审核机制,这个人工审核机制是值得推广,尤其是在业务健全这一块。还有多种多样的攻击逻辑,比如本地信息存储,有一些会把帐号、密码都存在文件里,获取用户信息,登陆相关的厂商去做这方面的操作,还有SPI注入和XSS,APK逆向数据也经常会泄露。还有COOKIES的清场,比如支付完成以后,他没有做一个清场,别人就可以拿COOKIES就可以到其他的机器上去进行操作。
大量第三方支付被攻击的案例,有大的,有小的,第三方支付只要跟钱有关无一没有逃离1分汉支付的命运,这两年在支付行业整个逻辑做了一些微改,但是移动支付领域这又是一个新的战场。今年或者明年会爆一大批移动式服务的安全案例。这是我的几个建议,下面是我的邮箱,如果有什么问题可以跟我的邮箱做一些交流。
最后我想跟大家探讨一个问题,比如说除了以上几种,比如脚本框架、业务逻辑,还有社会工程等等,还有哪些攻击方式是你们知道的?或者有哪些案例是你们能够举出来的?
回答:中间人代理、加解密。
申子熹:非常感谢大家。