旧站栏目

漏洞公告

当前位置: 首页 -> 漏洞公告 -> 正文

关于第三方支付平台JAVA SDK存在XXE漏洞的安全公告

日期:2018-09-27点击:

 

    201873日,国家信息安全漏洞共享平台(CNVD)收录了第三方支付平台JAVA SDK存在XXE漏洞(CNVD-2018-12508)。综合利用上述漏洞,攻击者可实现商户服务器端系统的XML外部实体注入攻击。目前漏洞的利用细节已被公开,厂商已发布补丁进行修复。

 

        一、漏洞情况分析

 

    可扩展标记语言(XMLeXtensible Markup Language)用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型。XML具备在任何应用程序中进行数据读写的简单特性,使其很快成为数据交换的唯一公共语言,被广泛应用于第三支付平台与商户之间交换数据的格式定义。

 

    XML语言标准支持与外部进行实体数据交换的特性。应用程序在解析XML输入时,没有禁止外部实体加载功能,会导致XML外部实体注入漏洞(XML External Entity InjectionXXE)。201872日,境外SecLists网站发布了微信支付JAVA软件工具开发包(SDK)存在XXE漏洞。利用该漏洞,攻击者可在使用信息泄露、扫描爆破等特殊手段获知商户的通知接口(callback)地址的前提下,发送恶意XML实体,在商户服务器上执行代码,实现对商户服务器的任意文件读取。如果攻击者进一步获得商家的关键安全密钥,就可能通过发送伪造信息实现零元支付。

 

    CNVD对该漏洞的综合评级为“高危”。

 

    二、漏洞影响范围

 

    该漏洞影响商户服务器后台系统的安全,目前已知微信支付JAVA SDK73日之前发布的版本、陌陌和vivo商户系统受此漏洞影响。

 

    陌陌公司、腾讯公司和vivo商户系统已分别于72日、73日、74日完成修复。

 

    三、漏洞修复建议

 

    建议第三方支付平台对本公司开发的SDK工具进行自查,发现安全隐患请及时通知下属商户,及时消除漏洞攻击威胁。

 

    1、腾讯公司已发布JAVA SDK修复版本,建议商户及时更新至最新版本:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=11_1

 

    2、用户可使用开发语言提供的禁用外部实体的方法,JAVA禁用外部实体的代码如下:

 

        DocumentBuilderFactory dbf =DocumentBuilderFactory.newInstance();

 

       dbf.setExpandEntityReferences(false);

 

        3、过滤用户侧提交的XML数据

 

        过滤关键词:DOCTYPEENTITYSYSTEMPUBLIC

 

        附:参考链接:

 

        http://www.cnvd.org.cn/flaw/show/CNVD-2018-12508

 

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

 

        感谢CNVD成员单位深圳市腾讯计算机系统有限公司、北京知道创宇信息技术有限公司对本公告提供技术支持。

  • 移动校园

  • 官方微信

  • 微信视频

  • 官方微博

  • 官方抖音