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