微信支付XML外部实体注入漏洞 购买商品无需付费 附解决方案

北京时间7月3日,国外研究人员发现了一个微信支付的漏洞。该漏洞源于微信在JAVA版本SDK中的实现存在一个XXE漏洞。攻击者若获得了商家的关键性安全密钥,就可以通过伪造信息来购买商家的任何物品而无需付费。

微信支付漏洞

北京时间7月3日,国外研究人员发现了一个微信支付的漏洞。该漏洞源于微信在JAVA版本SDK中的实现存在一个XXE漏洞。使用微信支付时,商家需要提供相应网址以便支持异步支付的结果,攻击者可以利用该漏洞向通知的URL发送一个恶意的payload来获得想要的任何商家信息。攻击者若获得了商家的关键性安全密钥,就可以通过伪造信息来购买商家的任何物品而无需付费。

详细信息可参考:

http://seclists.org/fulldisclosure/2018/Jul/3

XXE漏洞

XXE(XML External Entity Injection)是一种针对XML终端实施的攻击,漏洞产生的根本原因就是在XML1.0标准中引入了“entity”这个概念,且“entity”可以在预定义的文档中进行调用,XXE漏洞的利用就是通过实体的标识符访问本地或者远程内容。黑客想要实施这种攻击,需要在XML的payload包含外部实体声明,且服务器本身允许实体扩展。这样的话,黑客或许能读取WEB服务器的文件系统,通过UNC路径访问远程文件系统,或者通过HTTP/HTTPS连接到任意主机。

漏洞影响范围

此漏洞主要影响引入WxPayAPI_JAVA_v3 SDK早期版本的商户系统。

未限制DTD实体解析 导致注入漏洞

解决方案

在微信官方最新的版本中,实现了对XML外部实体注入(XXE)漏洞的防护。受影响商户可到微信支付官方开发平台下载最新版本SDK:

https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=11_1

官方修复代码细节如下:

 

发表评论