• English
  • 使用 VS Code Go 尋找並修復易受攻擊的依賴項

    返回 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 檔案中,你會看到用於程式碼中直接和間接使用的易受攻擊依賴項的診斷資訊。

    執行 Toggle Vulncheck

    注意:要在你自己的編輯器中複製本教學,請將以下程式碼複製到你的 main.go 檔案中。

    // 該程式將語言標籤作為命令列參數並解析它們。
    
    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 程式碼操作
    VS Code Go govulncheck 輸出

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

    透過在 go.mod 檔案中懸停在依賴項上,還可以找到有關特定依賴項的相關 govulncheck 輸出。對於快速查看依賴項資訊,此選項比使用程式碼操作更有效。

    懸停在依賴項上以取得漏洞資訊

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

    程式碼操作還可用於快速升級到依賴項中已修復漏洞的版本。透過選擇程式碼操作下拉選單中的「升級」選項來完成此操作。

    透過程式碼操作選單升級到最新版本

    其他資源

    • 有關在 IDE 中進行漏洞掃描的更多資訊,請參閱 此頁面。特別是 注意事項和警告部分,討論了漏洞掃描可能比上述範例更複雜的情況。
    • Go 漏洞資料庫 包含來自許多現有來源的資訊,以及 Go 套件維護者直接向 Go 安全團隊報告的資訊。
    • 請參閱 Go 漏洞管理 頁面,了解 Go 檢測、報告和管理漏洞的架構的高階視圖。