教程:使用 VS Code Go 查詢並修復易受攻擊的依賴項
您可以使用適用於 Visual Studio Code 的 Go 擴充套件直接在編輯器中掃描程式碼是否存在漏洞。
注意:有關下面圖片中包含的漏洞修復的說明,請參閱 govulncheck 教程。
先決條件
- Go。我們建議使用最新版本的 Go 來學習本教程。有關安裝說明,請參閱 安裝 Go。
- VS Code,更新到最新版本。在此下載。您也可以使用 Vim(詳見 此處),但本教程主要關注 VS Code Go。
- VS Code Go 擴充套件,可 在此下載。
- 特定於編輯器的設定更改。您需要根據 這些規範 修改您的 IDE 設定,然後才能重現以下結果。
如何使用 VS Code Go 掃描漏洞
第 1 步。執行“Go: Toggle Vulncheck”
Toggle Vulncheck 命令顯示模組中列出的所有依賴項的漏洞分析。要使用此命令,請在 IDE 中開啟命令面板(Linux/Windows 上為 Ctrl+Shift+P,Mac OS 上為 Cmd+Shift+P),然後執行“Go: Toggle Vulncheck”。在您的 go.mod 檔案中,您將看到程式碼中直接和間接使用的易受攻擊依賴項的診斷資訊。

注意:要在您自己的編輯器中重現本教程,請將以下程式碼複製到您的 main.go 檔案中。
// This program takes language tags as command-line
// arguments and parses them.
package main
import (
"fmt"
"os"
"golang.org/x/text/language"
)
func main() {
for _, arg := range os.Args[1:] {
tag, err := language.Parse(arg)
if err != nil {
fmt.Printf("%s: error: %v\n", arg, err)
} else if tag == language.Und {
fmt.Printf("%s: undefined\n", arg)
} else {
fmt.Printf("%s: tag %s\n", arg, tag)
}
}
}
然後,確保程式對應的 go.mod 檔案如下所示
module module1
go 1.18
require golang.org/x/text v0.3.5
現在,執行 go mod tidy
以確保您的 go.sum 檔案已更新。
第 2 步。透過程式碼操作執行 govulncheck。
使用程式碼操作執行 govulncheck 允許您專注於程式碼中實際呼叫的依賴項。VS Code 中的程式碼操作用燈泡圖示標記;將滑鼠懸停在相關依賴項上以檢視有關漏洞的資訊,然後選擇“Quick Fix”以顯示選項選單。其中,選擇“run govulncheck to verify”。這將在您的終端中返回相關的 govulncheck 輸出。


第 3 步。將滑鼠懸停在 go.mod 檔案中列出的依賴項上。
有關特定依賴項的相關 govulncheck 輸出也可以透過將滑鼠懸停在 go.mod 檔案中的依賴項上來找到。對於快速檢視依賴項資訊,此選項甚至比使用程式碼操作更有效。

第 4 步。升級到依賴項的“fixed in”版本。
程式碼操作還可以用於快速升級到依賴項的漏洞已修復的版本。透過在程式碼操作下拉選單中選擇“Upgrade”選項來完成此操作。

其他資源
- 有關 IDE 中漏洞掃描的更多資訊,請參閱此頁面。“註釋和注意事項”部分特別討論了漏洞掃描可能比上述示例更復雜的特殊情況。
- Go 漏洞資料庫除了 Go 包維護者直接向 Go 安全團隊報告的資訊外,還包含來自許多現有來源的資訊。
- 請參閱Go 漏洞管理頁面,它提供了 Go 用於檢測、報告和管理漏洞的架構的高階檢視。