【前言】
现代社会,刷卡已经非普及了,所以POS系统(Point Of Sales System)的应用非常普遍,在商场、餐厅、酒店、医院等场所都能见到它的身影。
移动支付体系下的新式的POS机一般是连接第三方支付机构使用银行卡快捷支付,技术上引入了蓝牙/WiFi/音频(用于POS刷卡器与POS终端主机通讯)、Android/iOS(POS终端主机APP支持的系统),更便捷的同时引入更多安全问题。
我们针对几个品牌的POS机进行了安全测试,结果却让人感觉害怕:把卡在黑客控制的POS机上刷一下后,银行卡还在你手上,黑客却可以继续刷卡,刷光里面的钱(你的卡,我的钱)。
【场景演示】
我们分析了国内几款知名的POS机,发现其系统设计都存在类似的安全漏洞,经过对数据篡改后,可以对刷卡的人扣取任意费用。
无图无真相,看下图。
漏洞原理比较简单,但是影响却让人感觉害怕。我们遵循负责任的安全漏洞报告流程,漏洞细节已经报告给相关厂商修复。
【技术分析】
现在到了技术分析时间。
我们分析发现,该款POS机在向服务端发送指令时是包含了一个防止重放攻击的随机数,但是服务端却没有验证随机数,结果就是POS机向服务端发的包可以重放攻击。同时,POS终端发出的指令包也没有数字签名,可以任意修改。
于是漏洞就产生了,攻击者通过正常刷卡获得受害者银行卡的一些信息后,可以自行生成一个付款指令到服务端,这样受害者的银行卡就被扣款了。
大致的漏洞示意图如下(具体的细节就略过):
修复方法也比较简单,服务端校验这个随机数就可以了。这样即使是重放,由于随机数已经出现过了,所以攻击会失效。但是问题又来了,黑客如果直接拦截改包而不是嗅探,那么怎么防护呢?加一个数字签名吧。
这个漏洞的本质是信息化后不安全的IT系统洞穿了基于“拥有”(银行卡)加基于“知道”(密码)的身份认证体系。试想一下,未来的生物特征(指纹、声纹、虹膜等)认证方式同样是信息化的,是否也会存在这种隐患呢?
【延伸知识】
发达的资本主义国家早就遇到过POS机的安全问题。
2013年国外安全公司Arbor Networks就发现了感染POS终端和服务器的恶意软件,下图就是被感染的地域分布图。从图中我们可以看到,中国大陆几乎不受影响,看起来是国内的POS系统跟国外不是一个技术架构,所以不受洋蠕虫病毒的影响。
2014年1月,US-CERT针对POS恶意软件发出预警,并给出了POS系统最佳安全实践:
【防范恶意POS机】
通过上文可以看到,POS机的安全隐患还是较大的,现在我们的研究团队成员出门刷卡时看到POS机心里就特紧张。
那么,怎么防范呢?
金融安全关系重大,特别是随着互联网金融的兴起和发展,带来的安全问题只会越来越多,监管机构、厂商和普通用户都应该对此引起足够重视。
对于监管机构来说,厂商发布的金融类产品的安全质量应有切实可行的规章制度流程来保证。
对于厂商来说,硬件设备要遵循SDL流程,将大部分安全风险消除在发布前——毕竟终端的升级成本会高于在线服务很多,而且随着互联网金融的发展,传统金融行业隐匿起来的安全风险会被更多的发现。
对于普通用户来说,为了防备恶意POS机,最好准备两张卡,一张专门用于存钱,一张专门用于刷卡和网银,这样即使被盗刷了损失也可控;同时开通银行的单笔消费通知(微信和短信双管齐下),如果有异常消费就可以第一时间发现和处理了。
【后记】
随着互联网的发展,结合硬件、软件、通讯架构下的智能设备的安全问题还很多,随着时间的推移和业界的关注,这些问题会逐渐爆发出来(比如最近对部分省份电信DNS Server 产生DDoS攻击的感染摄像头的蠕虫)。