安天移动安全应急响应中心:微信支付SDK曝高危漏洞

近日,国外安全社区 Seclists.Org 披露了微信支付官方 SDK 存在严重的XXE漏洞。影响范围包括所有采用受影响的版本为WxPayAPI_JAVA_v3的微信官方Java SDK版本的支付后台系统。

本次披露的漏洞为服务器侧漏洞,该漏洞可导致商家服务器被入侵,且攻击者可避开真实支付通道,用虚假的支付通知来“购买”任意商品。目前,漏洞详情以及攻击方式已被公开,由于其利用成本很低,因而极易被攻击者利用。

该漏洞对支付行业的影响   

众所周知,微信支付是目前国内主流的移动支付方式之一,因此绝大部分支付后台均接入了微信支付功能。而通过分析可知,由于该漏洞属于服务器侧漏洞,因此将直接影响整个支付后台系统。漏洞一旦被利用,会直接导致支付后台数据被窃取,造成重大隐私数据泄露。而攻击者则可利用窃取到的关键数据信息,轻易进行伪造交易等攻击,对支付业务造成极大危害。

漏洞解析

什么是XXE漏洞 ?   

XXE漏洞即XML External Entity Injection(XML外部实体注入),一般外界统称为XXE。是一种容易被忽视,却危害巨大的漏洞。

它利用 XML外部实体加载注入,执行不可预控的代码,从而实现读取任意文件、执行系统命令、探测内网端口、攻击内网网站等目的,具有极大危害性。

XXE漏洞的原理是什么?   

标准规范下,商家通过微信SDK提供的“unifiedOrder”接口,调用微信支付功能以完成支付行为,同时设置一个URL来异步接收支付结果通知。这个URL由商家在服务器端,按照《微信支付开发文档》中“支付结果通知”API中的定义实现,并在微信后台完成支付操作以后调用。微信后台则通过约定好的接口定义,对回调接口发送一个XML文件,供后续解析。

然而在实际设计中,这个支付结果通知并不需要服务端验证该通知是否来自微信支付服务,因为通知中含有可验证的签名,第三者不可能构造签名,除非掌握商家的关键安全信息(mch_id和md5-key)。但是,在解析这个结果通知的XML的过程中,微信Java版本的SDK没有禁用“XML 外部实体加载”的机制,这就导致攻击者可以向接受通知的URL中构造恶意的XML数据,利用XXE漏洞,窃取商家服务器上的任何数据信息。一旦攻击者窃取到商家的关键安全信息,就可以通过发送伪造的支付完成信息来欺骗商家,而无需付费购买任意商品,线下的中小商户将因此蒙受巨大的损失。

解决方案

该漏洞被披露后,安天移动安全第一时间启动安全应急响应,针对支付行业发布微信支付SDK XXE高危漏洞预警,并结合支付行业特点进行深入分析,界定漏洞危害以及对支付行业影响,提出了针对支付后台系统应对措施的建议:

  • 对于直接采用微信官方的 JAVA SDK 实现“支付结果通知”的商家,当前微信官方最新版的 JAVA SDK 已经修复此漏洞,可以通过微信支付官方渠道下载,对代码进行更新。

  • 对于没有使用微信官方 SDK 实现“支付结果通知”的商家,需要在解析 XML 时禁用“XML外部实体加载”的机制。微信SDK官方修复参考示例如下:

image004.png


安天移动安全专家建议从排查和修复两方面入手,支付后台系统运营方,就当前接入微信支付SDK的支付后台系统进行漏洞专项排查,明确当前支付后台是否存在该漏洞;同时对于确认存在该漏洞的支付后台,进行相应的威胁处理,对漏洞进行修复。安天移动安全将为有需求的产业链合作伙伴提供免费漏洞检测和修复服务,帮助支付后台系统运营方处置该漏洞威胁。



透过该漏洞的爆发,我们可以看到,无论研发实力多么强大,风险防范意识多么强烈,安全隐患依然固执地存在,甚至会导致集成支付后台的核心业务受到威胁。

在以开放为趋势的信息化、网联化、智能化的发展进程中,势必带来新的安全挑战,安全问题也将不再是一个单点封闭的问题,而应该更加着眼于生态安全的建设,依靠生态链各方,明确彼此承担的安全职责,携手共建安全有序的发展环境。如此,不负时代赋予我们每个安全人的使命。



转载请注明来源:http://blog.avlsec.com/?p=5284


本文作者:安天移动安全

本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/73344.html

Tags:
评论  (0)
快来写下你的想法吧!

安天移动安全

文章数:30 积分: 58

专注移动互联网安全,恶意代码分析/安全技术研究/行业生态等知识分享平台

安全问答社区

安全问答社区

脉搏官方公众号

脉搏公众号