擴充功能執行階段安全性
擴充功能大幅增強 Visual Studio Code 的功能。它們也可能帶來風險,例如惡意程式碼執行和資料隱私問題。Visual Studio Marketplace 提供多種方式來保護您免受惡意擴充功能的侵害。此外,VS Code 還提供多種指標來判斷擴充功能的可靠性。
本文件概述 VS Code 中擴充功能的執行階段權限,以及旨在保護您免受惡意擴充功能侵害的措施。您將學習如何在安裝擴充功能之前,做出關於其可靠性的明智決定。
關於擴充功能執行階段權限
擴充功能主機 (extension host) 負責在 VS Code 中執行擴充功能。擴充功能主機擁有與 VS Code 本身相同的權限。這表示 VS Code 可以執行的任何操作,擴充功能也可以透過擴充功能主機來執行。
例如,擴充功能可以在您的機器上讀寫檔案、發出網路請求、執行外部處理程序,以及修改工作區設定。
擴充功能發行者信任
從 VS Code 1.97 版開始,當您首次從第三方發行者安裝擴充功能時,VS Code 會顯示一個對話方塊,提示您確認信任該擴充功能的發行者。
當您信任擴充功能套件或具有其他擴充功能相依性的擴充功能發行者時,您也同時信任了相依擴充功能的發行者。
您之前安裝過的擴充功能發行者會被視為受信任,並自動新增到受信任發行者清單中。
您可以使用 Extensions: Manage Trusted Extensions Publishers 命令來管理受信任擴充功能的清單。
當您使用 VS Code 命令列安裝擴充功能時,該擴充功能的發行者不會自動被信任。
判斷擴充功能可靠性
在安裝擴充功能之前,您可以採取多種步驟來判斷其是否可靠。Visual Studio Marketplace 提供有關擴充功能的資訊,協助您做出明智的決定。
-
評分與評論:閱讀其他人對擴充功能的看法。
-
問與答:檢視現有問題和發行者的回應程度。如果您有疑慮,也可以與擴充功能的發行者互動。
-
問題、儲存庫與授權:檢查發行者是否提供這些資訊,以及它們是否提供您期望的支援。
-
已驗證發行者:使用發行者名稱和網域名稱旁邊的藍色勾選標記,作為額外的信任訊號。該勾選標記表示發行者已向市集證明其網域名稱所有權。它也顯示市集已驗證該網域名稱的存在,以及發行者在市集上至少六個月的良好信譽。

如果您想強制規定組織中允許使用的擴充功能,請查看如何在 VS Code 中設定允許的擴充功能。
市集保護機制
Visual Studio Marketplace 採用多種機制來保護您免受惡意擴充功能的侵害。
-
惡意軟體掃描:市集會對每個發佈的擴充功能套件執行惡意軟體掃描,以確保其安全性。此掃描使用多種防毒引擎,並針對每個新擴充功能和每個擴充功能更新執行。在掃描結果完全清除之前,該擴充功能將不會在市集公開發佈。
-
動態偵測:市集透過在沙箱環境 (無塵室虛擬機器) 中執行擴充功能,驗證其執行階段行為來進行動態偵測。
-
已驗證發行者:發行者可以透過證明網域所有權來驗證 (藍色勾選標記) 其身分。這表示發行者已向市集證明其網域名稱所有權。它也顯示市集已驗證該網域的存在,以及發行者在市集上至少六個月的良好信譽。
-
異常使用監控:市集會監控擴充功能的下載和使用模式,以偵測異常行為。
-
搶佔名稱:市集會阻止擴充功能作者盜用官方發行者的名稱 (例如 Microsoft 或 RedHat) 以及熱門擴充功能的名稱 (例如 GitHub Copilot)。
-
封鎖清單:如果回報並驗證了惡意擴充功能,或在擴充功能相依性中發現漏洞,該擴充功能將從市集移除並新增到封鎖清單。如果該擴充功能已安裝,VS Code 會自動將其解除安裝。
-
擴充功能簽章驗證:Visual Studio Marketplace 會在擴充功能發佈時對所有擴充功能進行簽署。當您安裝擴充功能時,VS Code 會檢查此簽章以驗證擴充功能套件的完整性和來源。
-
秘密掃描:市集會自動掃描每個新發佈的擴充功能,以查找 API 金鑰或憑證 (例如 Azure DevOps PAT 權杖) 等秘密。如果偵測到任何秘密,將會封鎖發佈以防止潛在的安全風險。VSCE 工具會在打包期間掃描
.env檔案,如果發現秘密則會封鎖發佈。
在 Visual Studio Marketplace 的安全性與信任部落格文章中了解這些措施。
回報可疑擴充功能
如果您確實看到看起來可疑的擴充功能,請向市集團隊回報。市集團隊會在一個工作天內提供初步回應。
如何回報擴充功能
-
在 Visual Studio Marketplace 中開啟該擴充功能的頁面。
-
在擴充功能「更多資訊」區塊的底部選取「回報問題」連結。
相關資源
-
了解如何在 Visual Studio Code 中安裝和管理擴充功能。
-
使用 工作區信任來決定專案資料夾中的程式碼是否可以在未經明確批准的情況下,由 VS Code 和擴充功能執行。這在處理不熟悉程式碼時,增加了一層額外的安全性。
-
設定 VS Code 中的允許擴充功能,以強制規定組織中允許使用的擴充功能。