什麼是 VS Code?
Visual Studio Code(以下簡稱 VS Code)是一款由微軟(Microsoft)開發的跨平台免費原始碼編輯器,VS Code 至今本身就已擁有強大功能,也像許多受歡迎的開源軟體一樣,VS Code 有豐富的社群參與和擴充功能,這些輔助與除錯工具讓我們改善工作流程、增進工作效率,我們可以選擇在喜歡的主題下敲打鍵盤,並進行各種客製化設定,甚至可以在編輯器裡與喜歡的動物相伴,或是玩貪吃蛇!!
擴充功能的資安風險
因為每個人都可以製作擴充功能,這些功能在上架後將被下載用來開發各種軟體、網站與系統,從可靠的相關調查,例如 Stack Overflow 開發者調查(2021)、(2022),以及各種自發性的文章介紹與同事朋友的分享,或是 microsoft/vscode 在 Github 的星星數(截自2022/11/14 有 139K),我們都可以知道 VS Code 是目前非常受歡迎的編輯器且非常多人使用,而隨著 VS Code 受歡迎的程度不斷往上攀升也代表將成犯罪者攻擊的目標,擴充功能就是阻力較小的攻擊路徑之一,因此我們在開發環境所使用的擴充功能是否安全就會是其中一個重要的資安問題。
要在擴充功能暗藏惡意程式是有可能的,而擴充功能也可能會因為程式的錯誤或寫法疏失造成安全漏洞,目前僅知道微軟公開的官方文件說明會審查擴充功能且是可信任的,但 VS Code 尚未擁有擴充功能的安全管理後台,在 VS Code 官方的 Github 則有擴充功能安全控管的相關討論(#52116,從 2018 討論至今),大家有興趣可以瀏覽或參與討論唷!
安全使用準則
最保險的方式就是不要安裝任何擴充功能,但有些擴充功能確實非常實用,這該怎麼辦呢?因此網絡行動科技的工程部門討論並整理出一些使用準則供大家參考:
- 請將伺服器端的 VS Code 擴充功能都移除,若逼不得已要裝的話也只能裝微軟官方發佈的擴充功能
- 本機開發環境(包含虛擬機器)若要安裝 VS Code 擴充功能,篩選原則與優先順序如下:
- 微軟官方發佈的擴充功能
- 有通過網域所有權驗證(發佈商左側或右側會有藍底勾勾 icon)且開源,注意:有公開原始碼不代表有開源,必須要有授權且授權是開源的
- 沒有通過網域所有權驗證,但是授權為開源,則會需要大家一起檢查原始碼
- 由第三方開發很熱門的 Live Server 也應停用,改成使用微軟官方發佈的 Live Preview
- 任何沒在維護或被棄用的擴充功能(即使是微軟官方發佈的) 都不應該繼續使用,請移除。例如: TSLint(deprecated)
- 主題類的擴充功能(filter 為「@category:"themes"」,詳細說明請參考官方文件)則可以安裝,因為版型類的擴充功能只會安裝在本機,不會安裝到遠端
- 必要時應使用工作區信任功能的限制模式
- 在公眾場合(例如咖啡店、大眾運輸)離席時,養成好習慣,將 VS Code 與電腦關閉
希望以上資訊對大家有所幫助~