二進位資料解析之動態代碼執行風險
在現代雲端應用與物聯網(IoT)架構中,高效解析二進位數據是不可或缺的功能。然而,近期針對 npm 生態系中關鍵組件 binary-parser 的漏洞揭露,再次敲響了供應鏈安全的警鐘。本報告旨在分析 CVE-2026-1245 漏洞的核心機制,探討其對 Node.js 執行環境的威脅,並提出針對性的防禦建議。
核心漏洞摘要與受影響範圍
在流行的二進位解析器 npm 函式庫中揭露了一個安全漏洞,如果被成功利用,可能會導致執行任意 JavaScript 程式碼。此漏洞編號為CVE-2026-1245 (CVSS 評分:N/A),影響2.3.0 版本之前的所有模組版本,2.3.0 版本已修正此問題。該漏洞的修補程式已於2025 年 11 月 26 日發布。
Binary-parser 是一個廣泛使用的 JavaScript 解析器建構器,可讓開發者解析二進位資料。它支援多種常見資料類型,包括整數、浮點數、字串和陣列。該軟體包每週的下載量約為 13,000 次。
動態建構函式之技術陷阱
根據CERT 協調中心 (CERT/CC) 發布的公告,該漏洞與使用者提供的值(例如解析器欄位名稱和編碼參數)缺乏清理有關,因為當 JavaScript 解析器程式碼在執行時使用「Function」建構函數動態產生時,就會出現此問題。
值得注意的是,npm 函式庫將 JavaScript 原始碼建置為字串,該字串表示解析邏輯,並使用 Function 建構函數對其進行編譯,然後將其快取為可執行函數,以便高效地解析緩衝區。
這種「字串轉代碼」的設計模式雖然在性能優化上具有優勢,但若未實施嚴格的輸入過濾,將導致嚴重的安全性缺陷。當應用程式允許使用者定義的欄位名稱或參數直接進入此類動態建置的字串時,本質上是為惡意代碼注入開啟了後門。
任意程式碼執行路徑分析
然而,由於 CVE-2026-1245 漏洞,攻擊者控制的輸入可能未經充分驗證就進入生成的程式碼,導致應用程式解析不受信任的數據,從而執行任意程式碼,僅使用靜態硬編碼解析器定義的應用程式不受此漏洞影響。
CERT/CC表示:在受影響的應用程式中,如果使用不受信任的輸入建構解析器定義,攻擊者可能能夠以Node.js進程的權限執行任意JavaScript程式碼。根據部署環境的不同,這可能導致存取本地資料、篡改應用程式邏輯或執行系統命令。
注入的 JavaScript 程式碼在 Node.js 環境下運行,這意味著攻擊者可以調用內置的 child_process 模組來執行作業系統指令,或使用 fs 模組讀取敏感的環境變數、配置檔案甚至用戶數據。在微服務架構中,這類漏洞可能進一步演變為橫向移動攻擊,危害整個內網。
漏洞觸發情境與實務案例
本漏洞的風險點在於「動態定義解析器」。許多開發者為了提升系統靈活性,會根據前端傳回的 JSON 配置或資料庫中的結構動態生成二進位解析邏輯。例如,一個自定義協議的監控平台,若允許用戶在儀表板自定義二進位封包的「欄位名稱」,而該名稱未經過濾直接傳遞給 binary-parser,攻擊者即可傳送精心構造的特殊字符(如反引號或閉合符號),從而中斷正常的解析邏輯並植入惡意代碼。
相對而言,若解析器的定義是在開發階段就已經寫死的靜態代碼,則攻擊者無法透過傳送惡意二進位封包來觸發此漏洞,因為此時漏洞發生在「解析器生成階段」,而非「數據解析階段」。
軟體供應鏈安全防禦對策
安全研究員 Maor Caplan 因發現並報告此漏洞而受到表彰。建議binary-parser 使用者升級至 2.3.0 版本,並避免將使用者可控的值傳遞給解析器欄位名稱或編碼參數。
本研究建議採取以下深層防禦措施:
即時版本對齊:檢查項目清單中的 package-lock.json 或 yarn.lock,確保 binary-parser 已提升至 2.3.0 或更高版本。
消除危險模式:重新審視項目中是否使用了 Function 或 eval() 等動態執行代碼的 API。如果業務邏輯必須根據輸入動態生成解析結構,應採用白名單檢核(Allowlist validation),僅允許英數字元。
執行環境限縮:利用 Node.js 的實驗性權限模型或容器化技術(如 Docker)限制進程的權限,防止 RCE 漏洞發生後造成大規模的系統損害。
結論
CVE-2026-1245 是一個典型的因過度信任動態程式碼生成而產生的安全缺陷。雖然 binary-parser 的下載量不算極巨,但在特定領域(如底層協議解析、韌體分析工具)具有關鍵地位。開發團隊應將「不信任任何外部輸入」的原則貫徹至解析邏輯的定義階段,而非僅止於數據驗證。
資料來源:https://thehackernews.com/2026/01/certcc-warns-binary-parser-bug-allows.html
針對廣泛使用的 npm 函式庫 binary-parser 揭露之 CVE-2026-1245 漏洞進行技術分析。探討動態 Function 建構函式如何導致任意 JavaScript 程式碼執行(RCE),並為台灣軟體開發團隊提供關鍵的補救措施與防禦策略。