惡意擴展可濫用 VS Code 漏洞竊取認證令牌
微軟的 Visual Studio Code (VS Code) 代碼編輯器存在一個漏洞,允許惡意擴展程序檢索 Windows、Linux 和 macOS 中存儲的身份驗證令牌。
這些令牌用于集成各種第三方服務和 API,如 Git、GitHub 和其他編碼平臺,因此竊取這些令牌可能會對數據安全造成重大影響,導致未經授權的系統訪問、數據泄露等。
Cycode 研究人員發現了這個漏洞,并將其連同他們開發的概念驗證(PoC)報告給了微軟。然而,微軟并沒有修復它的打算,因為擴展程序不應該與其他環境隔絕。
利用擴展竊取機密
Cycode 發現的安全問題是由于 VS Code 的 "秘密存儲"(Secret Storage)缺乏對身份驗證令牌的隔離造成的,該 API 允許擴展在操作系統中存儲身份驗證令牌。這需要使用 Keytar,即 VS Code 與 Windows 憑據管理器(Windows)、鑰匙串(macOS)或鑰匙圈(Linux)通信的封裝程序。
這意味著在 VS Code 中運行的任何擴展,甚至是惡意擴展,都可以訪問秘密存儲器,并濫用 Keytar 來檢索任何存儲的令牌。
發現這個問題后,Cycode 的研究人員開始嘗試創建一個惡意擴展來竊取 CircleCI 的令牌,CircleCI 是一個使用 VS Code 擴展的流行編碼平臺。他們通過修改 CircleCI 的擴展來運行一條命令,從而暴露其安全令牌,甚至直接將其發送到研究人員的服務器上。
漸漸地,他們開發出了一種用途更廣的攻擊方法,可以在不篡改目標擴展代碼的情況下提取這些機密。
此過程的關鍵是發現任何 VS Code 擴展都有權訪問鑰匙串,因為它是在操作系統已經授權訪問鑰匙串的應用程序內運行的。
"我們開發了一個概念驗證惡意擴展,它不僅能從其他擴展中成功獲取令牌,還能從 VS Code 的內置登錄和同步功能中獲取 GitHub 和微軟賬戶的令牌,從而實現了 "令牌竊取 "攻擊"。- Cycode.
Cycode 發現,用于加密令牌的算法是 AES-256-GCM,這通常是安全的。然而,用于加密令牌的密鑰是根據當前可執行路徑和機器 ID 導出的,因此很容易重新創建密鑰。
檢索到的令牌通過在 VS Code 的 Electron 可執行文件中運行的自定義 JS 腳本進行解密,解密并打印本地安裝的擴展的所有密碼。
微軟并未修復
Cycode 的分析師兩個月前向微軟披露了這個漏洞,甚至演示了他們的 PoC 擴展及其竊取存儲擴展令牌的能力。
然而,微軟的工程師們并沒有將此視為安全問題,并決定維持 VS Code 秘密存儲管理框架的現有設計。
參考鏈接:https://www.bleepingcomputer.com/news/security/malicious-extensions-can-abuse-vs-code-flaw-to-steal-auth-tokens/