JavaScript 庫高危漏洞致數百萬應用面臨代碼執行攻擊風險
漏洞概述
廣泛使用的 JavaScript form-data 庫近日曝出高危安全漏洞(CVE-2025-7783),可能導致數百萬應用程序面臨代碼執行攻擊風險。該漏洞源于該庫使用可預測的 Math.random() 函數生成多部分表單編碼數據的邊界值,攻擊者可借此操縱 HTTP 請求,將惡意參數注入后端系統。
核心要點:
- form-data 庫使用可預測的 Math.random() 函數,導致參數注入攻擊成為可能
- 受影響版本包括:<2.5.4、3.0.0-3.0.3、4.0.0-4.0.3
- 應立即升級至 4.0.4、3.0.4 或 2.5.4 版本
技術細節分析
GitHub 發布的公告指出,該漏洞存在于 form-data 庫核心功能的一行代碼中。具體而言,form_data.js 文件的第 347 行包含問題代碼:boundary += Math.floor(Math.random() * 10).toString(16);。
該實現使用 JavaScript 的 Math.random() 函數生成偽隨機數,當攻擊者能夠觀察來自同一偽隨機數生成器(PRNG)狀態的連續值時,這些數值可以被預測。
form-data 庫用于創建可讀的"multipart/form-data"流,以向 Web 應用程序提交表單和文件上傳。在生成分隔多部分數據的邊界值時,該庫依賴的 Math.random() 值可能被高級攻擊者預測。安全研究人員已證實,通過觀察目標應用程序產生的其他 Math.random() 值,攻擊者可以確定 PRNG 狀態并高精度預測未來的邊界值。
影響范圍與風險因素
該漏洞影響 npm 包的多個版本,包括 2.5.4 以下版本、3.0.0 至 3.0.3 版本以及 4.0.0 至 4.0.3 版本,這意味著大量使用 form-data 庫處理多部分表單提交和文件上傳的應用程序面臨風險。
風險因素 | 詳情 |
受影響產品 | form-data 庫(npm 包)- 版本 < 2.5.4- 版本 3.0.0 – 3.0.3- 版本 4.0.0 – 4.0.3 |
影響 | - 參數注入攻擊- 可能導致后端系統代碼執行 |
利用前提 | - 應用程序使用 form-data 處理用戶控制的數據- 攻擊者可觀察到 Math.random() 值- 能夠從連續值預測 PRNG 狀態- 目標系統易受參數操縱影響 |
CVSS 4.0 評分 | 9.4(高危) |
緩解措施
form-data 庫已為所有受影響版本分支發布補丁。用戶應根據當前使用的主版本立即升級至 4.0.4、3.0.4 或 2.5.4 版本。這些補丁使用加密安全的隨機數生成替代了可預測的 Math.random() 實現,用于創建邊界值。
企業應立即清點使用 form-data 庫的應用程序,并根據暴露風險確定更新優先級。此外,安全團隊應檢查應用程序中 Math.random() 值可能被潛在攻擊者觀察到的其他實例,因為這代表了一類比特定 form-data 問題更廣泛的漏洞類別。