教程:使用 VS Code Go 查找和修复易受攻击的依赖项

返回 Go 安全性

您可以使用 Visual Studio Code 的 Go 扩展直接在编辑器中扫描代码以查找漏洞。

注意:有关下图中包含的漏洞修复的说明,请参见 govulncheck 教程

先决条件

如何使用 VS Code Go 扫描漏洞

步骤 1. 运行“Go:切换 Vulncheck”

The 切换 Vulncheck 命令显示您模块中列出的所有依赖项的漏洞分析。要使用此命令,请在您的 IDE 中打开 命令面板(在 Linux/Windows 上为 Ctrl+Shift+P,在 Mac OS 上为 Cmd+Shift+P),然后运行“Go:切换 Vulncheck”。在您的 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

其他资源