近日,关于微信支付存在安全漏洞的消息,引发商户们的关注讨论,甚至恐慌。 7月3日,有用户在安全社区公布了微信支付官方SDK(软件工具开发包)存在的漏洞,此漏洞可导致商家服务器被入侵,一旦攻击者获得商家的关键安全密钥,攻击者可以窃取商家服务器的任何信息,通过发送 信息来欺骗商家,无需给商家付款即可白拿任何东西,也就是所谓的“0元购”。 漏洞消息曝出后,7月5日,微信支付官方对外表示漏洞已修复,商家不必过度恐慌。 至今,该安全漏洞被曝光已20天,有安全技术人员做了测试演示后发现,大量商户依然暴露在漏洞下。由于该漏洞涉及安全技术问题非常专业,商户不知道具体如何操作,及时更新修复漏洞、规避风险,因此产生疑虑,甚至恐慌。 微信支付曝安全漏洞20天,百万商户“裸奔”,可不付款“0元购” 微信支付安全漏洞在商户群引发恐慌。 对于商户的疑虑和关切,微信方面昨日回复《零售老板内参》APP(微信ID:lslb168),称“该漏洞为常见漏洞,此次问题服务器实际影响范围不大,完全可控”,微信针对漏洞问题已经发布了《关于XML解析存在的安全问题指引》,并提供了《检查及修复建议》。 然而,在一些讨论此事的网络社区和社群中,根据安全技术人员的提示,笔者从代码托管平台上搜索发现大量商户漏洞依然存在,不少商户的漏洞并未得到修复和控制。 - 1 - 安全漏洞:遭攻击可不付款白拿,甚至泄漏商户的消费者信息 上述安全漏洞问题,究竟是怎么一回事呢? 安全技术专家、斗象科技联合创始人谢忱解释,从当前被公开的漏洞信息来看,网络攻击者可利用了微信支付官方SDK(软件工具开发包)存在的漏洞,将自己伪装成“微信支付平台”,继而通过微信的漏洞实现 与商户的直接通信,在篡改微信的正常通信信息后达到“偷梁换柱”的目的。 谢忱介绍,正常的支付流程应该是由用户发起,经由微信支付平台到达商家,商家会有一个与微信支付平台确认支付结果的过程,而网络攻击者恰恰是利用了相关漏洞“骗”过了商户。一些商家的安全防护水平较低,攻击者获取该商户的密钥,再通过这个漏洞就可以实现“0元购”等操作,严重者还可能会导致商户的消费者信息等数据内容泄漏。 微信支付曝安全漏洞20天,百万商户“裸奔”,可不付款“0元购” 支付安全漏洞“0元购”等操作,严重者还可能会导致商户的消费者信息等数据内容泄漏。 对于安全漏洞问题,微信方面回复《零售老板内参》APP(微信ID:lslb168)说,本次漏洞本质为商户自身服务器后台系统中存在XML外部实体注入漏洞(简称XXE),微信支付技术安全团队第一时间关注及排查,并已对官方网站上受影响的服务器端SDK漏洞进行更新,修复了已知的安全漏洞,并已提醒商户及时更新。 微信方面表示,“该漏洞为常见漏洞,只要在程序接收到XML数据进行解析之前,调用相关的函数关闭XML语言的上述特性即可有效防范和解决。目前已经启动商户的安全提示,提示商户主动排查其自建系统是否存在该漏洞,并给出修复指引,进行协助。” - 2 - 安全漏洞已修复?实测大量商户仍暴露在漏洞下 微信表示修复了已知的安全漏洞,商家不必过度恐慌。 然而,在一些网络社区和社群中,针对此漏洞的讨论和疑虑仍在蔓延。笔者根据网络社区和社群中参与讨论的安全技术人员的提示,在代码托管平台Github、码云上,搜寻漏洞函数以及notify关键字等,很容易就能找到存在漏洞的商家。 微信支付曝安全漏洞20天,百万商户“裸奔”,可不付款“0元购” 微信支付安全漏洞依旧存在。 安全技术人员介绍,如代码中出现“notify_url=http://xxx”,出现这个以后不用看代码逻辑,可进行黑盒批量测试进行捡漏;发现notify接口函数调用了微信sdk存在漏洞版本的WXPayUtil.xmlToMap函数,或者商户自己实现xml解析函数但未禁用外部实体,这样的商户依然存在漏洞。经搜索和对比,发现了大量的商家漏洞仍然存在。 - 3 - 商户如何规避风险?微信发布安全问题指引及修复建议 由于微信支付接入的商家数量达到上百万,使用微信支付老版本的商户自然不在少数。虽然微信官方更新了系统,不过,《零售老板内参》询问一些零售商户了解到,由于商户平台并非需要每天登录,目前还有不少商户并不知晓有此更新,甚至有些集成商户由于集成商没有通知,导致他们至今不知道该如何是好。 这些安全技术问题对小微商户来讲,普遍有一定难度,他们不清楚具体该如何操作才能规避漏洞和风险。这也是目前商户存在恐慌情绪的原因。 对此,微信方面向《零售老板内参》表示,微信目前已经启动商户的安全提示,提示商户主动排查其自建系统是否存在该漏洞,并给出修复指引进行协助,“正在加快客服与商户的沟通,主要是引导规避漏洞”。 此外,微信支付会协助商户发现和排除安全问题,共同提升移动支付整体安全性,并已发布了《关于XML解析存在的安全问题指引》(可以点击进入微信支付商户平台查看: https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=23_5 《安全问题指引》向商户强调,“如果你在使用支付业务回调通知中,存在以下场景有使用XML解析的情况,请务必检查是否对进行了防范。” 其中,包括以下5大主要场景: 场景1:支付成功通知; 场景2:退款成功通知; 场景3:委托代扣签约、解约、扣款通知; 场景4:车主解约通知; 场景5:扫码支付模式一回调; (注:APP支付的用户端SDK不受影响,但APP支付成功回调通知里面要检查。) 同时,由于微信支付商家用户数量规模庞大,一些小微商户和零售老板们反映,不知道在哪些渠道获取具体操作信息。如何告知商户,如何确保商户都能确实收到更新通知信息? 微信方面回复称,微信支付会通过以下几个系统号码,通知商户进行安全周知和询问是否授权平台进行安全扫描:(0755)36560292、(0755)61954612、(0755)61954613、(0755)61954614、(0755)61954615、(0755)61954616。 此外,微信方面还提示了“检查及修复建议”: 1.如果您的后台系统使用了官方SDK,请更新SDK到最新版本 SDK的链接: https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=11_1 2.如果您是有系统提供商,请联系提供商进行核查和升级修复; 3.如果您是自研系统,请联系技术部门按以下指引核查和修复: - 4 - 如商户遭攻击造成资金损失是否赔偿?微信尚未明确回复 随着消费零售行业移动互联网应用的普及,越来越多的线下商户开始向网上迁移,而实际上,使用了大平台提供的接口和工具的这些商户“互联网+”水平非常有限,尤其是应对网络安全等技术能力。 由于需要商家自己来完成排查和更新的操作,也不少商户还是提出了新的疑问:如果没有接到通知的商户,或者在接到通知更新期间被攻击了,以及更新操作未成功等,致使安全漏洞问题依旧存在,微信是否会承担相应的责任?如果因为安全漏洞问题造成资金损失的话,微信是否会给予商户赔偿?微信是否针对这一安全漏洞风险制定了相应的赔偿机制? 对于商户的这一疑问和顾虑,目前,微信方面尚未给出明确答复。 鉴于当前“0元购”的安全漏洞和风险依然暴露,在此提醒广大商户和老板们赶紧自查更新,微信平台通知并协助商户修复漏洞,以免商户遭受攻击而造成资金和财产损失。