就一加手机支付漏洞讨论在线支付中的安全风险
近期,Fidus团队的研究人员在OnePlus(一加手机)论坛上发现了一个非常有意思的帖子。在这个帖子中,很多论坛用户表示他们在2017年11月份曾在OnePlus官网上进行过信用卡消费,而随后信用卡欺诈事件便发生在了这些用户的身上,所以他们才在论坛中发帖询问社区中是否有其他用户遇到了同样的问题(剧透:很多用户都遇到了这个问题)。
近期,Fidus团队的研究人员在OnePlus(一加手机)论坛上发现了一个非常有意思的帖子。在这个帖子中,很多论坛用户表示他们在2017年11月份曾在OnePlus官网上进行过信用卡消费,而随后信用卡欺诈事件便发生在了这些用户的身上,所以他们才在论坛中发帖询问社区中是否有其他用户遇到了同样的问题(剧透:很多用户都遇到了这个问题)。
值得一提的是,近期OnePlus使用了Magento电子商务平台,而这个常见的平台也是信用卡攻击事件经常发生的地方。
但是,这些发现并不能证明OnePlus发生了数据泄露。因此,我们接下来一起看一看OnePlus当前所采用的支付流程以及系统结构,并分析一下为何用户的信用卡信息会到攻击者的手上。
事件分析-为何会发生这种事情?
我们对OnePlus网站的支付流程进行了一遍完整的检查,有趣的是,网站的支付页面所请求的客户支付卡数据会直接存储在网站中,这也就意味着用户所输入的全部支付信息都可以被攻击者直接拦截。当支付表单提交之后,支付信息将会被发送到第三方提供商进行处理,但是在数据被加密之前,攻击者可以通过在窗口中嵌入恶意代码来窃取信用卡数据。
OnePlus则表示,他们不负责处理任何的支付卡信息,支付交易的处理是由CyberSource处理的,但是支付表单却仍然托管在OnePlus的基础设施中。如果攻击者拥有该页面的读写权限,那么他们就能够向页面中注入Java代码并尝试从客户端的支付表格中窃取键入的数据。
剖析支付流程
对于Magento电子商务平台来说,信用卡欺诈已经是“家常便饭“了,早在2015年,Sucuri就已经发文讨论过这个问题。
目前来说,攻击者主要有两种从电子商务平台中窃取信用卡数据的方法。第一种,就是利用Java代码直接从客户端窃取。这种方法需要在Web页面中托管恶意Java代码,而恶意代码将会让客户设备在后台悄悄地给攻击者控制的服务器发送伪造请求。这样一来,攻击者就可以利用伪造的请求来发送用户所有的信用卡数据了。我们对OnePlus的结算页面源代码进行了分析,但是并没有发现任何的恶意Java代码,不过也有可能是攻击者在完成攻击之后将恶意代码移除了。
另一种方法也是攻击者常用的一种方法,根据Sucuri所发的文章,在实现这种攻击时,攻击者不仅需要修改app/code/core/Mage/Payment/Model/Method/Cc.php文件,而且还需要使用Shell访问后台服务器。
Cc.php文件负责在电子商务网站中存储支付卡数据,其实无论支付卡数据是否成功存储,服务器都会调用这个文件。因此,攻击者就可以在这个文件中注入恶意代码,并远程窃取信用卡信息。由于整个攻击过程发生在Cc.php文件中的prepareSave()函数中,所以此时的信用卡数据还没有被加密。恶意代码样本如下所示:
下图显示的是攻击者窃取信用卡元数据的大致流程:
漏洞影响
目前为止,OnePlus论坛中已经有超过40名用户表示自己受到了信用卡欺诈攻击,而且也有很多Reddit用户同样在抱怨类似的问题。
除此之外,很多Twitter用户也开始讨论这种潜在的安全问题了。
攻击者如何利用这个漏洞?
1.当用户点击了订单按钮之后,用户的浏览器会向OnePlus电子商务服务器发送请求;
2.OnePlus电子商务服务器会返回带有支付表单的HTML页面;
3.客户在表单中输入自己的支付信息,然后点击提交按钮;
4.支付数据直接从用户的浏览器发送到了CyberSource
当OnePlus电子商务服务器给用户返回带有支付表单的HTML页面之后,注入在其中的Java代码将会把用户所输入的全部内容(信用卡数据)发送给攻击者。
用户如何保护自己的安全?
防止信用卡欺诈最保险的方法就是使用离线支付处理器,或者是整合了iFrame的支付结算页面。除此之外,很多第三方支付平添也提供了PCI兼容沙盒来更加安全地处理支付卡信息。
虽然使用整合了iFrame的支付页面是一种更加安全的选项,但这种方法仍然无法抵御基于Java的攻击。
注:我们强烈建议大家定期对自己的电子商务网站进行安全渗透测试以避免任何的安全风险。
事件更新#1
OnePlus引入了CyberSource Magento插件来尝试解决这个问题:
CyberSource通过研究后发现,用户所提交的所有支付数据都直接在客户端浏览器中完成了操作,而且并没有触及到电子商务基础设施。
事件更新#2
OnePlus已经在官网上发布了一份声明,并给受此事件影响的用户发送了通知邮件,以告知用户数据泄露事件的大致情况(总共大约有4万名用户的支付信息被窃取)。
参考来源:fidusinfosec,FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM