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