掃二維碼與項目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯(lián)網(wǎng)交流
昨天有一條關于微信支付0元購的消息在開發(fā)圈里炸開了鍋,所謂0元購并不是用戶抽獎,而是惡意攻擊者利用漏洞實現(xiàn)0元支付。
正常的支付基本流程是這樣的:用戶發(fā)起支付->調(diào)起微信支付->支付成功->微信支付服務器發(fā)送成功通知給應用(比如某個商城)服務端->應用服務端解析微信支付發(fā)送的通知->解析后的信息進行必要對比確認后更新訂單為已付款狀態(tài)。
然而該漏洞,就是惡意利用解析過程,可以造成讀任何文件、內(nèi)網(wǎng)探測、命令執(zhí)行等問題。
雖然這個問題是昨天火起來的,但實際上在前幾天就有陸陸續(xù)續(xù)報道,只是昨天被更多人所知曉而已。比如早在7月1日在Full Disclosure有一篇名為《XXE in WeChat Pay Sdk ( WeChat leave a backdoor on merchant websites)》的文章指出這個問題。
然后昨天微信支付官方就向商戶推送該漏洞提示:
實際上該漏洞跟微信支付本身沒什么太大關系,所以網(wǎng)上吃瓜群眾就借此來吐槽微信支付安全性,這實在是兩回事。這個漏洞其實就是很多開發(fā)者在對接微信支付的時候不嚴謹造成的,在解析微信支付異步通知推送的XML數(shù)據(jù)時造成漏洞的存在;此外造成很多吃瓜群眾誤解的原因是因為老版本的微信支付java版官方SDK存在該漏洞,而我看了一下php版的SDK,我這邊能找到的是2015年的,里面已經(jīng)在解析XML數(shù)據(jù)時禁止引用外部xml實體。
同時,在微信支付官方文檔中的《最佳實踐-最佳安全實踐》中專門針對該問題添加了一部分文檔,名為《關于XML解析存在的安全問題指引》,地址為:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=23_5。該文檔針對該問題做了相應的風險提示以及問題修復指南,同時還寫了php、java、Python、.net等主流開發(fā)語言的設置指引。
據(jù)了解該問題影響面還是不小的,從已經(jīng)報道的消息來看,其中不乏一些大商戶、大廠商也存在該問題。不過你是商戶還是開發(fā)者,結合自己實際來做相應處理哦。
我們在微信上24小時期待你的聲音
解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯(lián)網(wǎng)交流