信息來源:國家互聯(lián)網(wǎng)應急中心
2018年7月3日,國家信息安全漏洞共享平臺(CNVD)收錄了第三方支付平臺JAVA SDK存在XXE漏洞(CNVD-2018-12508)。綜合利用上述漏洞,攻擊者可實現(xiàn)商戶服務器端系統(tǒng)的XML外部實體注入攻擊。目前漏洞的利用細節(jié)已被公開,廠商已發(fā)布補丁進行修復。
一、漏洞情況分析
可擴展標記語言(XML,eXtensible Markup Language)用于標記電子文件使其具有結(jié)構(gòu)性的標記語言,可以用來標記數(shù)據(jù)、定義數(shù)據(jù)類型。XML具備在任何應用程序中進行數(shù)據(jù)讀寫的簡單特性,使其很快成為數(shù)據(jù)交換的唯一公共語言,被廣泛應用于第三支付平臺與商戶之間交換數(shù)據(jù)的格式定義。
XML語言標準支持與外部進行實體數(shù)據(jù)交換的特性。應用程序在解析XML輸入時,沒有禁止外部實體加載功能,會導致XML外部實體注入漏洞(XML External Entity Injection,XXE)。2018年7月2日,境外SecLists網(wǎng)站發(fā)布了微信支付JAVA軟件工具開發(fā)包(SDK)存在XXE漏洞。利用該漏洞,攻擊者可在使用信息泄露、掃描爆破等特殊手段獲知商戶的通知接口(callback)地址的前提下,發(fā)送惡意XML實體,在商戶服務器上執(zhí)行代碼,實現(xiàn)對商戶服務器的任意文件讀取。如果攻擊者進一步獲得商家的關(guān)鍵安全密鑰,就可能通過發(fā)送偽造信息實現(xiàn)零元支付。
CNVD對該漏洞的綜合評級為“高?!?。
二、漏洞影響范圍
該漏洞影響商戶服務器后臺系統(tǒng)的安全,目前已知微信支付JAVA SDK7月3日之前發(fā)布的版本、陌陌和vivo商戶系統(tǒng)受此漏洞影響。
陌陌公司、騰訊公司和vivo商戶系統(tǒng)已分別于7月2日、7月3日、7月4日完成修復。
三、漏洞修復建議
建議第三方支付平臺對本公司開發(fā)的SDK工具進行自查,發(fā)現(xiàn)安全隱患請及時通知下屬商戶,及時消除漏洞攻擊威脅。
1、騰訊公司已發(fā)布JAVA SDK修復版本,建議商戶及時更新至最新版本:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=11_1
2、用戶可使用開發(fā)語言提供的禁用外部實體的方法,JAVA禁用外部實體的代碼如下:
DocumentBuilderFactory dbf =DocumentBuilderFactory.newInstance();
dbf.setExpandEntityReferences(false);
3、過濾用戶側(cè)提交的XML數(shù)據(jù)
過濾關(guān)鍵詞:DOCTYPE、ENTITY、SYSTEM、PUBLIC。
附:參考鏈接:
http://www.cnvd.org.cn/flaw/show/CNVD-2018-12508
http://seclists.org/fulldisclosure/2018/Jul/3
感謝CNVD成員單位深圳市騰訊計算機系統(tǒng)有限公司、北京知道創(chuàng)宇信息技術(shù)有限公司對本公告提供技術(shù)支持。