
JavaScript 函式庫「Forge」存在簽章驗證繞過漏洞。此漏洞適用於 Forge 1.3.2 之前的版本,這些版本是透過 npm 套件「node-forge」提供的。
Forge 是一個負責加密操作(例如 TLS、X.509 憑證和 PKCS#12)的函式庫,當處理包含訊息認證碼 (MAC) 資料的欄位的精心建構的 ASN.1 結構時,就會出現此漏洞。
這些問題已被確認為 CVE-2025-12816 和 CWE-436,攻擊者可以利用這些漏洞繞過身份驗證或篡改簽名數據,因此 Forge 用戶應該更新到最新版本。
從:
JavaScript 函式庫「Forge」中的簽章驗證漏洞
【社論】
JavaScript 加密函式庫「Forge (node-forge)」中發現的漏洞不只是一個 bug,而是一個會破壞「信任假設」的問題。簽章驗證是保障發送者合法性和資料完整性的最後一道防線,如果它被繞過,那麼基於此建置的身份驗證和更新分發機制的安全性將受到威脅。
Forge 廣泛應用於處理基於 ASN.1 的資料結構(例如 TLS、X.509 憑證和 PKCS#12)的場景,並被眾多 npm 專案所依賴。據報導,由於內部 asn1.validate 過程的解釋不一致,一些精心構造的 ASN.1 資料在原本應該被拒絕的情況下卻被視為「有效資料」。
具體來說,如果在驗證可選元素失敗後解析器位置沒有正確前進,則下一個元素可能指向相同的無效數據,從而導致訊息認證碼 (MAC) 或簽署訊息的驗證結果被顛倒。這導致了一些情況,即已被篡改的 PKCS#12 或簽章資料可能被誤認為是「有效簽章」。
重要的是,這個問題並非Forge獨有。 Node-Forge作為依賴函式庫,深度整合到各種軟體中,包括Web前端、Electron等桌面應用以及後端服務。如果下游開發者不關注漏洞訊息,那麼「基於簽章的保護」這個假設就會悄悄失效。這應該被視為整個軟體供應鏈的風險。
在考慮如何打造面向未來的產品時,本次事件提出了兩點建議。首先,不能簡單地採用諸如加密庫之類的「核心組件」就萬事大吉;必須建立一套系統來持續更新這些組件並追蹤漏洞資訊。其次,必須考慮採用不過度依賴單一函式庫的設計方案(例如冗餘驗證方法和故障安全設計)來進行簽章驗證和其他重要的安全機制。
儘管基礎技術的這種不穩定性是件壞事,但也為我們重新思考基礎設施的設計理念提供了一個契機。我們如何在繼續依賴加密庫的同時,進行持續的驗證和監控? Forge 案例似乎也給未來的軟體開發團隊提出了一個問題:如何在安全性和發展之間取得平衡?
[術語]
簽章驗證<br>這是驗證電子簽章是否真實以及資料是否被竄改的過程。它使用公鑰加密技術來檢查發送者的合法性和訊息的完整性。
ASN.1
它代表“抽象語法標記一”,是一種用於描述和編碼證書、加密協定等中使用的資料結構的方法。它被用於許多與安全相關的格式,例如 X.509 憑證和 PKCS#12。
訊息認證碼(MAC)
這是一個用於使用共用金鑰驗證訊息完整性和發送者的值。它用於偵測篡改和防止欺騙,而此漏洞的問題在於繞過訊息認證碼 (MAC) 驗證。
CVE-2025-12816
這是一個漏洞標識符,用於標識由於 node-forge 中 ASN.1 處理不一致而導致的簽名驗證繞過漏洞。它是多個供應商和漏洞資料庫用於追蹤相同問題的通用編號。
CWE-436(解釋衝突)
這指的是由於不同元件使用不同規則解釋相同資料而導致的安全漏洞問題。 Forge 的問題也正是因為這種解釋上的不一致而繞過了驗證邏輯。
TLS
HTTPS是「傳輸層安全協定」(Transport Layer Security)的縮寫,是一種用於加密網路通訊(例如網站上的HTTPS通訊)的協定。它與伺服器憑證和密碼套件協同工作,以建立安全的通訊通道。
PKCS#12
它是一種文件格式,將私鑰、憑證和相關元資料儲存在單一容器中。它用於將憑證匯入瀏覽器和作業系統,Forge 也提供了處理此格式的功能。
[參考連結]
Forge/node-forge(GitHub) (外部)
這是 Forge 本身的程式碼倉庫,它為 JavaScript 提供加密處理功能,例如 TLS、憑證和 PKCS#12。您也可以查看此漏洞的修復狀態。
CERT/CC 漏洞說明 VU#521113 (外部)
漏洞說明,概述了 Forge 簽章驗證繞過漏洞的技術背景、影響範圍和供應商回應狀態。
NVD(CVE-2025-12816 條目) (外部)
美國國家標準與技術研究院 (NIST) 漏洞資料庫中關於 CVE-2025-12816 的官方資訊。您可以查看 CVSS 評分、CWE 分類以及受影響產品的概覽。
[參考文章]
熱門 Forge 庫修復了簽名驗證繞過漏洞(外部)
這是一篇安全新聞文章,解釋了 Forge (node-forge) 中的簽名驗證繞過漏洞,概述了具體的攻擊場景、影響範圍以及修復版本發布的時間。
VU#521113 – Forge JavaScript 函式庫的簽章驗證存在漏洞(外部)
這是一份技術文檔,其中 CERT/CC 對 Forge 的 ASN.1 處理導致的簽名驗證繞過漏洞進行了詳細分析,總結了受影響的用例、供應商的回應和緩解措施。
CVE-2025-12816:node-forge ASN.1 加密繞過 | Miggo (外部)
這是一篇技術博客,它將 node-forge 的 ASN.1 驗證問題定位為解釋衝突,並清楚地概述了攻擊成功的條件、風險評估和建議的更新程序。
CVE-2025-12816:node-forge ASN.1 驗證器不同步… (外部)
這篇漏洞資料庫文章重點介紹了 ASN.1 驗證器不同步的問題,並提供了受影響版本、CVSS 評分和實際操作預防措施等信息,幫助您了解技術細節。
CVE-2025-12816 | Tenable® (外部)
本公告從企業漏洞管理的角度解釋了 CVE-2025-12816,並總結了有關嚴重性、影響範圍以及掃描和檢測方法的資訊。
CVE-2025-12816 – Debian 安全追蹤器(外部)
這是一個安全追蹤頁面,用於追蹤 CVE-2025-12816 在 Debian 中的影響以及相關軟體包的修復版本發布。
CVE-2025-12816 詳情 – NVD (外部)
這是NVD的官方條目,其中列出了CVSS評分、CWE-436分類、相關供應商資訊等。編輯評論將其作為理解風險等級的標準。
[編者註]
JavaScript 函式庫默默地為我們的服務提供支持,我們甚至無需過多關注。正因如此,當像 Forge 這樣的基礎庫中發現漏洞時,許多人都會感到焦慮,並擔心自己的產品是否安全。
如果您參與服務創建或運營,那麼不妨藉此機會盤點一下您的技術棧所依賴的加密庫和外部組件。