總機(jī):020-87516161 傳真:020-87516161-8040
地址:廣州市天河北路898號(hào)信源大廈3206-3211室 郵編:510660
安全服務(wù) > 安全公告 > 關(guān)于Node.js存在反序列化遠(yuǎn)程代碼執(zhí)行漏洞的安全公告
安全公告編號(hào):CNTA-2017-0010
近日,國(guó)家信息安全漏洞共享平臺(tái)(CNVD)收錄了Node.js反序列化遠(yuǎn)程代碼執(zhí)行漏洞(CNVD-2017-01206,對(duì)應(yīng)?CVE-2017-594)。攻利用漏洞執(zhí)行遠(yuǎn)程執(zhí)行操作系統(tǒng)指令,獲得服務(wù)器權(quán)限。由于目前驗(yàn)證代碼已經(jīng)公開(kāi),極有可能誘發(fā)大規(guī)模網(wǎng)站攻擊。
一、漏洞情況分析
Node.js是一個(gè)Javascript運(yùn)行環(huán)境(runtime),對(duì)Google V8引擎進(jìn)行了封裝。Node.js同時(shí)也是一個(gè)基于Chrome JavaScript運(yùn)行時(shí)建立的平臺(tái),用于方便地搭建快速響應(yīng)、易于擴(kuò)展的網(wǎng)絡(luò)應(yīng)用。
Node.js反序列化模塊node-serialize庫(kù)中的unserialize()函數(shù)未做安全處理,該漏洞通過(guò)傳遞調(diào)用JavaScriptIIFE函數(shù)表達(dá)式的方式實(shí)現(xiàn)遠(yuǎn)程任意代碼執(zhí)行的效果。攻擊者可通過(guò)遠(yuǎn)程攻擊獲得當(dāng)前服務(wù)器運(yùn)行環(huán)境權(quán)限,由于實(shí)際部署中node.js運(yùn)行環(huán)境較多為操作系統(tǒng)root權(quán)限,因此可完全控制服務(wù)器主機(jī)。CNVD對(duì)該漏洞的綜合評(píng)級(jí)為“高危”。目前,相關(guān)利用方式已經(jīng)在互聯(lián)網(wǎng)上公開(kāi),近期出現(xiàn)攻擊嘗試爆發(fā)的可能。
二、漏洞影響范圍
根據(jù)漏洞研究者測(cè)試結(jié)果,由于涉及IIFE函數(shù)表達(dá)式,漏洞影響到Node.js現(xiàn)有的所有版本。根據(jù)CNVD秘書(shū)處的普查結(jié)果,目前互聯(lián)網(wǎng)上直接標(biāo)定使用node.js運(yùn)行環(huán)境的服務(wù)器約有6.8萬(wàn)余臺(tái),其中排名前五名的國(guó)家和地區(qū)是美國(guó)(占比58.9%)、中國(guó)(23.2%)、英國(guó)(4.1%)、荷蘭(3.6%)、德國(guó)(3.0%)。由于一個(gè)應(yīng)用廣泛的名為Express的WEB應(yīng)用開(kāi)發(fā)框架是基于node.js運(yùn)行環(huán)境的,根據(jù)CNVD秘書(shū)處初步普查結(jié)果,受該漏洞影響的網(wǎng)站服務(wù)器有可能超過(guò)70萬(wàn)臺(tái),后續(xù)CNVD將進(jìn)一步進(jìn)行漏洞實(shí)際威脅影響的精確評(píng)估,做好境內(nèi)用戶的應(yīng)急響應(yīng)工作。
三、漏洞修復(fù)建議
廠商尚未提供漏洞修補(bǔ)方案,請(qǐng)關(guān)注主頁(yè)更新情況:https://github.com/luin/serialize。同時(shí)也可以通過(guò)以下臨時(shí)解決方案加固服務(wù)器主機(jī):
1. 修改/node_modules/node-serialize/lib/serialize.js中的FUNCFLAG值為隨機(jī)值并保證該值不被泄漏。
2. 確保Serialize字符串僅內(nèi)部發(fā)送。
3. 使用公鑰(RAS)加密Serialize字符串,確保字符串不被篡改。
附:參考鏈接:
https://youtu.be/GFacPoWOcw0(已公開(kāi)的利用過(guò)程)
https://www.exploit-db.com/docs/41289.pdf(公開(kāi)的分析信息)
http://www.cnvd.org.cn/flaw/show/CNVD-2017-01206
注:CNVD技術(shù)組成員單位杭州安恒信息技術(shù)有限公司及時(shí)報(bào)告了預(yù)警信息。