扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
昨天有一条关于微信支付0元购的消息在开发圈里炸开了锅,所谓0元购并不是用户抽奖,而是恶意攻击者利用漏洞实现0元支付。
正常的支付基本流程是这样的:用户发起支付->调起微信支付->支付成功->微信支付服务器发送成功通知给应用(比如某个商城)服务端->应用服务端解析微信支付发送的通知->解析后的信息进行必要对比确认后更新订单为已付款状态。
然而该漏洞,就是恶意利用解析过程,可以造成读任何文件、内网探测、命令执行等问题。
虽然这个问题是昨天火起来的,但实际上在前几天就有陆陆续续报道,只是昨天被更多人所知晓而已。比如早在7月1日在Full Disclosure有一篇名为《XXE in WeChat Pay Sdk ( WeChat leave a backdoor on merchant websites)》的文章指出这个问题。
然后昨天微信支付官方就向商户推送该漏洞提示:
实际上该漏洞跟微信支付本身没什么太大关系,所以网上吃瓜群众就借此来吐槽微信支付安全性,这实在是两回事。这个漏洞其实就是很多开发者在对接微信支付的时候不严谨造成的,在解析微信支付异步通知推送的XML数据时造成漏洞的存在;此外造成很多吃瓜群众误解的原因是因为老版本的微信支付java版官方SDK存在该漏洞,而我看了一下php版的SDK,我这边能找到的是2015年的,里面已经在解析XML数据时禁止引用外部xml实体。
同时,在微信支付官方文档中的《最佳实践-最佳安全实践》中专门针对该问题添加了一部分文档,名为《关于XML解析存在的安全问题指引》,地址为:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=23_5。该文档针对该问题做了相应的风险提示以及问题修复指南,同时还写了php、java、Python、.net等主流开发语言的设置指引。
据了解该问题影响面还是不小的,从已经报道的消息来看,其中不乏一些大商户、大厂商也存在该问题。不过你是商户还是开发者,结合自己实际来做相应处理哦。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流