导语:7月3日,微信支付被曝安全漏洞,可导致攻击者通过伪装成“微信支付商户平台”,向验证地址发送恶意请求,并直接代替“商户平台”与商户进行通信,然后遵循微信支付SDK原有的规则进行“支付”。

7月3日,一位名为1024rosecode的疑似外国安全人员在Twitter上联系360Netlab及趋势科技,并公开了一篇名为《微信支付SDK中的XXE漏洞 》(XXE in WeChat Pay Sdk ( WeChat leave a backdoor on merchant websites))的文章。

在文章中,该安全人员称:

在使用微信支付时,商家需要提供一个接收通知的网址,用来接受异步付款信息。不过,在此时的Java版SDK中,有一个XXE漏洞。此次曝光的漏洞一旦被利用,可根据需要窃取商家服务器的任何信息。一旦攻击者获得商家的关键安全密钥(md5-key和merchant-Id等),甚至可以通过发送伪造信息来欺骗商家而无需付费购买任何东西。

漏洞详情

为了证明这个漏洞的存在,他将该漏洞的使用方法公之于众了。

攻击者通过伪装成“微信支付商户平台”,向验证地址发送恶意请求,并直接代替“商户平台”与商户进行通信,然后遵循微信支付SDK原有的规则进行“支付”。

这个漏洞不仅仅是影响到了支付本身,如果商户的安全措施做的不好,攻击者还可以调取该服务器上的文件,从而导致商户的核心商业机密和用户信息泄露。

1.png

在1024rosecode的代码中还以陌陌和vivo的微信支付接口为例,展示了实际漏洞的应用:通过微信接口的漏洞去读取了商户支付接口服务器上的文件。

图片1.png

图片2.png

影响范围

到目前为止,微信支付被曝技术漏洞这一事件虽然没有造成严重的后果,但此事使很多安全问题浮出水面。微信虽然在第一时间进行了及时的响应,并在微信商户平台对商户进行关于如何避免相关的安全问题指引,在接受媒体采访时也称“微信已经修复了相关漏洞”。不过,这个漏洞所影响的实际的是微信支付数百万的商户,他们真的没有风险了吗?

微信支付方面更新了JavaSDK,可是由于商户平台并非需要每天登陆,导致平台上的很多商户可能并不知晓有此更新,甚至有些集成商户由于集成商没有任何通知,导致他们至今还不知道该如何是好。

图片3.png

嘶吼小编联系了一位获得过千万融资的CEO,他曾经自己开发过一套在线销售平台来销售自己的产品,是一位业内资深开发者。在嘶吼小编问起他是否听说过这个漏洞时,他第一反应是没有听说。

从代码层面,虽然看起来这个漏洞不是高危漏洞,但是由于其影响范围非常大,第三方开发时如果直接复制了微信官这段方代码,便会有这个验证漏洞。而且,由于基于xml格式的消息都有这类隐患,即便是在服务本身,也有可能出现这种问题。

此外,一旦攻击者获取到了商家的关键安全密钥(md5-key和merchant-Id等),商家要重置密钥,会存在重置的停滞时间,如果业务线过长,或者每个渠道都有单独的密钥,这将是一个不小的工程。

随着“互联网+”概念的遍地开花,无数“微服务”业务如雨后春笋般出现,比较常见的例如线下吃饭点餐、便利店购物、快捷家政服务等等,倘若这个漏洞在这些方面被恶意利用,定将对这些在支付接口上使用了微信支付老版本JavaSDK的O2O平台造成严重的影响,甚至会因此导致他们倒闭跑路。

反思

首先,为安抚民心,是否对漏洞的危害性有所保留?该漏洞的曝出,无疑给商户和消费者带来了恐慌。虽然有网络支付安全专家表示,

该漏洞只存在于微信支付Java版本的SDK中,并且电商的安全防护及权限设置较高,完整攻击行为还存在较大的局限性。

但小编认为这显然是要给民众打一针强心剂。由于微信的庞大体系,所以此事牵涉的商户非常广泛,相信使用微信支付老版本JavaSDK的商户不在少数,并且“实现完整的攻击存在较大的局限性”并不代表可以完全杜绝滥用的情况,相信大多数的商户防御措施并不强大,如果攻击者有目的的针对某个使用老版本JavaSDK的商户进行攻击,加之商户忽略了其防护,难免会给攻击者留下可趁之机。如果攻击者成功实现了完整的攻击,那么不仅仅会给商户带来灭顶之灾,甚至还有可能威胁到消费者信息等数据内容泄漏。

其次,漏洞披露后的回应态度是否让人信服?漏洞曝出不久后,腾讯回应称已修复该漏洞。之后,腾讯又进一步回复称,

事实上,该漏洞为常见漏洞,只要在程序接收到XML数据进行解析之前,调用相关的函数关闭XML语言的上述特性即可有效防范和解决。目前已经启动商户的安全提示,提示商户主动排查其自建系统是否存在该漏洞,并给出修复指引进行协助。

腾讯还表示,此次问题服务器端SDK的实际影响范围不大,完全可控。

此事真的像腾讯回应的那么简单吗?当小编看到“完全可控”这四个字时,不禁眉头一紧。真的是完全可控吗?相信做安全的都会知道,只要有开发,必定难以避免漏洞的出现。这是网络科技进步必经之路,在网络安全中,没有“绝对安全”的说法。希望腾讯方面还会不断的跟踪此事,与隐患的商家联系,做好后续的防护工作,用实际的行动来真正的让消费者及商户感到安心。

最后,还有一点小插曲,爆出这个漏洞的安全人员在爆料时是完全使用英语的,但是同样细心的安全研究员在研究爆料文章的过程中发现,这段代码有很多的文字使用的是中文字符,有理由判定这人是国人。

图片4.png

代码中的中文顿号

图片5.png

安全人员的吐槽

修复方案

首先,请所有使用微信支付商户平台SDK的开发者们从商户平台更新最新版的SDK,并根据《关于XML解析存在的安全问题指引》进行第一时间的维护。

其次,为了尽可能的避免损失,保障数据和资金安全,应及时更换密钥,并检查服务器是否有非正常文件读取等特殊情况。

为了各位O2O商户的血汗钱,在这里,嘶吼的安全专家建议广大微信支付商户,尤其是自开发和使用第三方开发商的商户,及时进行核查和修复,并进行及时的对账和安全加固。

源链接

Hacking more

...