教學:使用 VS Code Go 尋找並修正 уяз性的依賴項

回到 Go 安全性

透過 Visual Studio Code 的 Go 擴充功能,你可以從編輯器中直接掃描程式碼中的 уяз性。

注意:如需瞭解下圖中包含的 уяз性修正說明,請參閱 govulncheck 教學

先決條件

如何使用 VS Code Go 掃描 уяз性

步驟 1。執行「Go:切換 Vulncheck」

切換漏洞掃描」指令會顯示模組中所列的所有依賴項的漏洞分析。如需使用這項指令,請開啟 IDE 中的「指令面板」(在 Linux/Windows 上按 Ctrl+Shift+P;在 Mac OS 上按 Cmd+Shift+P),並執行「Go: 切換漏洞掃描」。在您的 go.mod 檔案中,您將會看到直接以及間接在您的程式碼中使用的脆弱依賴項的診斷結果。

Run Toggle Vulncheck

注意:如需在您自己的編輯器中重新建立本教學課程,請將以下程式碼複製到您的 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 中的程式碼動作會以電燈泡圖示標記;將游標懸停在相關依賴項上查看漏洞資訊,然後選取「快速修正」以查看選項選單。在這些選項中,選取「執行 govulncheck 以驗證」。此操作會在您的終端機中傳回相關的 govulncheck 輸出。

govulncheck code action
VS Code Go govulncheck output

步驟 3。將游標懸停在 go.mod 檔案中列出的依賴項上。

也可以將游標懸停在 go.mod 檔案中的依賴項上,以找到關於特定依賴項的相關 govulncheck 輸出。對於快速查看依賴項資訊,這個選項比使用程式碼動作更加有效率。

Hover over dependency for vulnerability information

步驟 4. 升級到依賴項的「已修正」版本。

程式碼動作也可快速用於升級到漏洞已修正的依賴項版本。請在程式碼動作下拉式選單中選取「升級」選項。

Upgrade to Latest via code action menu

其他資源