近日著名node.js庫JWT(JsonWebToken )被爆存在嚴重遠程漏洞。作為一個基礎庫,JWT被供應鏈廣泛采用用,影響22000 多個項目個項目,其中包括Microsoft、Twilio、Salesforce、Intuit、Box、IBM、Docusign、Slack、SAP 知名公司的開源項目。
概述
JsonWebToken 項目是一個開源庫,用于創建、簽發和驗證JSON Web 令牌。JWT遵循開放標準RFC 7519 ,該標準定義了一種緊湊且自包含的方式,用于在各方之間安全地傳輸信息作為JSON 對象。該信息可以被驗證和信任,因為它是經過數字簽名的,JWT項目由Okta Auth0 開發和維護,根據NPM站點的統計數據其周下載量有1000萬次 ,被22060個項目依賴。
最新暴露的漏洞CVE編號為CVE-2022-23529 ,利用該漏洞可使攻擊者繞過身份驗證機制、訪問機密信息,還可以用來竊取和修改數據。
根據Unit 42的說明,該漏洞的利用需要先破壞應用程序和JsonWebToken 服務器之間的密碼管理過程,加大了可被利用的難度。目前其嚴重性等級降7.6。
漏洞分析
CVE-2022-23529 漏洞由Palo Alto 網絡的Unit 42 在去年7 月13 日發現,并立即報告給 Auth0。
研究人員發現,威脅行為者在驗證惡意制作的 JWS 令牌后,可以使用JsonWebToken 在服務器上實現遠程代碼執行。
漏洞注入點位于JsonWebToken 的verify() 方法中,該方法用于驗證 JWT 并返回解碼信息。 此方法接受三個參數:token 、secretOrPublicKey 和option。由于函數驗證時候未對“secretOrPublicKey”參數的檢查以確定它是字符串還是緩沖區,攻擊者可以發送特制對象在目標機器上執行任意文件寫入。
使用相同的缺陷,但請求的負載略有不同,Unit42 報告說實際上可以實現遠程代碼執行。
此漏洞被歸類為“高嚴重性”(CVSS 3.1 得分:7.6),因為利用它很復雜,只能在秘密管理過程中利用它。只有當允許不受信任的實體在控制的主機上修改jwt.verify() 的密鑰檢索參數時,才會受到影響,。
Auth0 團隊確認在2022 年8 月正在研究解決方案,在2022 年12 月21日發布了 JsonWebToken 版本9.0.0 的補丁。
該補丁包括對 secretOrPublicKey 參數實施額外檢查,以防止其解析惡意對象。
由于JsonWebToken 是被廣泛的引用開源庫,供應鏈影響巨大,并且它將持續很長一段時間,直到大多數項目升級到安全版本。
雖然該漏洞利用難度較高,但考慮到潛在目標的數量,雖然該漏洞利用難度較高,但考慮到潛在目標的數量,建議所有系統管理都趕緊排查影響面并及時升級系統。