微信支付SDK XXE高危漏洞预警与应急响应

By | 2018年7月5日

一、概述

  近日,国外安全社区 Seclists.Org 披露了微信支付官方 SDK 存在严重的 XXE 漏洞,可导致商家服务器被入侵,且黑客可避开真实支付通道,用虚假的支付通知来购买任意产品 。目前,漏洞详细信息以及攻击方式已被公开,影响范围巨大(已确认陌陌、vivo因使用该SDK而存在该漏洞)。该漏洞利用成本低,极易被攻击者利用攻击。

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

二、漏洞预警说明

  XXE漏洞简述

  XML 外部实体注入漏洞(XML External Entity Injection,简称 XXE),是一种容易被忽视,但危害巨大的漏洞。它可以利用 XML 外部实体加载注入,执行不可预控的代码,可导致读取任意文件、执行系统命令、探测内网端口、攻击内网网站等危害。

  微信SDK的XXE漏洞原理

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

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

  漏洞影响范围

  本次披露漏洞为服务器漏洞,影响范围为采用受影响的版本为WxPayAPI_JAVA_v3的微信官方Java SDK版本的支付后台系统。

  漏洞对支付行业影响

  移动支付作为支付行业最主要的业务场景,同时微信支付作为国内主流支付方式之一,绝大部分支付后台均接入微信支付。通过漏洞分析可知,本次爆出漏洞是一个服务器漏洞,直接影响整个支付后台系统,且利用方式已经被披露,利用成本极低。漏洞一旦利用会直接导致支付后台数据被窃取,造成重大隐私数据泄露,攻击者还可以基于窃取数据,进行伪造交易等攻击,对支付业务造成极大危害。

三、应对策略

  针对微信支付SDK XXE高危漏洞的威胁态势,目前安天建议从排查和修复两方面入手,支付后台系统运营方就当前接入微信支付SDK的支付后台系统进行漏洞专项排查,明确当前支付后台是否存在该漏洞,同时对于确认存在该漏洞的支付后台,进行相应的威胁处理,对漏洞进行修复。安天可免费提供漏洞检测和修复服务,帮助支付后台系统运营方处置该漏洞威胁。

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

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

四、建议

  本次披露的漏洞是一个服务器后台接口漏洞,后台服务作为企业的核心资产,不仅仅承载着企业核心业务,同时也承载着海量用户的关键数据。一旦服务器存在致命漏洞,受影响的不光是相应企业,同时还有广大用户。因此如何保护企业核心后台业务安全是企业信息安全的重中之重,企业应当对企业核心业务的关键API接口进行渗透测试评估,确保核心接口不存在安全隐患。

  同时该漏洞是由于微信SDK引入,支付后台运营方只是负责接入,但是由于即使研发实力强如腾讯,也依然可能存在的安全隐患,最终导致集成的支付后台的核心业务受到影响。开放是当前信息化、网联化、智能化的发展趋势,但是开放势必带来新的安全挑战,安全也不再是一个单点封闭的话题,而应该更加着眼于生态安全,生态的各个参与方,明确彼此承担的安全职责,携手共建安全有序的发展环境。

  参考资料

  1.WeChat leave a backdoor on merchant websites: http://seclists.org/fulldisclosure/2018/Jul/3

  2.微信支付Java版本SDK存在XXE漏洞: https://cloud.tencent.com/developer/news/263804

  3.微信0元购?微信支付SDK爆出XXE漏洞http://baijiahao.baidu.com/s?id=1604965507191135469

  4.https://pay.weixin.qq.com/wiki/doc/api/download/WxPayAPI_JAVA_v3.zip

  更多信息详见公司官网:http://www.avlsec.com   

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

更多技术文章,请关注安天移动安全官方微信

发表评论

电子邮件地址不会被公开。 必填项已用*标注