CVE編號 | CVE-2017-14919 |
---|---|
影響產品 | Node.js Versions 4.8.2以後版本、Node.js Versions 6.10.2以後版本、Node.js Versions 8.x所有版本 |
解決辦法 | 官方已修正函式,一旦參數windowBits配賦到8,則以9代替,並發布修復檔,連結為: https://nodejs.org/en/blog/release/v8.8.0 https://nodejs.org/en/blog/release/v6.11.5 https://nodejs.org/en/blog/release/v4.8.5 |
張貼日 | 2017-10-31 |
上稿單位 | TWCERT/CC |
●概述:
Node.js各版軟體存在windowBits參數驗證弱點,駭客可藉此造成DoS,Node.js提供對應之安全更新。
●編註:
(1) 伺服器端網頁開發工具Node包含大量公開函式庫,在zlib v1.2.9模組內有一函式zlib.createDeflateRaw({windowBits: 8}),其中參數windowBits係決定壓縮message時能占用多少記憶體,windowBits是以2為基底之對數(整數),介於8到15間,windowBits數值愈高,意味著通訊窗口越大,更需高度消耗記憶體,鎖定重複性位元進行壓縮。
(2) Node.js易於遭受遠端DoS攻擊,尤其是呼叫zlib.createDeflateRaw()時,囿於zlib v1.2.9模組部分變更,在模組中整數”8”若用在windowBits參數,Node zlib將之視作不合規則,zlib會當掉或者拋出exception狀況。
(3)至於駭客如何利用前述漏洞,則牽涉WebSocket協定,既然WebSocket是瀏覽器與伺服器進行即時通訊的技術,任何WebSocket client端在特定條件下,可以送出請求使windowBits數值為”8”,也許仍有其他攻擊途徑能遠端造成zLib初始運作即是一個size為2的8次方的通訊窗口。