關于Node.js存在反序列化遠程代碼執行漏洞的安全公告
近日,國(guó)家信息安全漏洞共享平台(CNVD)收錄了Node.js反序列化遠程代碼執行漏洞(CNVD-2017-01206,對(duì)應 CVE-2017-594)。攻利用漏洞執行遠程執行操作系統指令,獲得服務器權限。由于目前驗證代碼已經(jīng)公開(kāi),極有可能(néng)誘發(fā)大規模網站攻擊。
一、漏洞情況分析
Node.js是一個Javascript運行環境(runtime),對(duì)Google V8引擎進(jìn)行了封裝。Node.js同時也是一個基于Chrome JavaScript運行時建立的平台, 用于方便地搭建快速響應、易于擴展的網絡應用。
Node.js反序列化模塊node-serialize庫中的unserialize()函數未做安全處理,該漏洞通過(guò)傳遞調用JavaScript IIFE函數表達式的方式實現遠程任意代碼執行的效果。攻擊者可通過(guò)遠程攻擊獲得當前服務器運行環境權限,由于實際部署中node.js運行環境較多爲操作系統root權限,因此可完全控制服務器主機。CNVD對(duì)該漏洞的綜合評級爲“高危”。目前,相關利用方式已經(jīng)在互聯網上公開(kāi),近期出現攻擊嘗試爆發(fā)的可能(néng)。
二、漏洞影響範圍
根據漏洞研究者測試結果,由于涉及IIFE函數表達式,漏洞影響到Node.js現有的所有版本。根據CNVD秘書處的普查結果,目前互聯網上直接标定使用node.js運行環境的服務器約有6.8萬餘台,其中排名前五名的國(guó)家和地區是美國(guó)(占比58.9%)、中國(guó)(23.2%)、英國(guó)(4.1%)、荷蘭(3.6%)、德國(guó)(3.0%)。由于一個應用廣泛的名爲Express的WEB應用開(kāi)發(fā)框架是基于node.js運行環境的,根據CNVD秘書處初步普查結果,受該漏洞影響的網站服務器有可能(néng)超過(guò)70萬台,後(hòu)續CNVD將(jiāng)進(jìn)一步進(jìn)行漏洞實際威脅影響的精确評估,做好(hǎo)境内用戶的應急響應工作。
三、漏洞修複建議
廠商尚未提供漏洞修補方案,請關注主頁更新情況:https://github.com/luin/serialize。同時也可以通過(guò)以下臨時解決方案加固服務器主機:
1. 修改/node_modules/node-serialize/lib/serialize.js中的FUNCFLAG值爲随機值并保證該值不被(bèi)洩漏。
2. 确保Serialize字符串僅内部發(fā)送。
3. 使用公鑰(RAS)加密Serialize字符串,确保字符串不被(bèi)篡改。