教程:使用 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:切换 Vulncheck”
The 切换 Vulncheck 命令显示您模块中列出的所有依赖项的漏洞分析。要使用此命令,请在您的 IDE 中打开 命令面板(在 Linux/Windows 上为 Ctrl+Shift+P,在 Mac OS 上为 Cmd+Shift+P),然后运行“Go:切换 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 中的代码操作由灯泡图标标记;将鼠标悬停在相关依赖项上以查看有关漏洞的信息,然后选择“快速修复”以显示选项菜单。在这些选项中,选择“运行 govulncheck 以验证”。这将在您的终端中返回相关的 govulncheck 输出。
步骤 3. 将鼠标悬停在 go.mod 文件中列出的依赖项上。
也可以通过将鼠标悬停在 go.mod 文件中的依赖项上,找到有关特定依赖项的相关 govulncheck 输出。对于快速查看依赖项信息,此选项甚至比使用代码操作更有效。
步骤 4. 升级到您依赖项的“已修复版本”。
代码操作也可用于快速升级到修复漏洞的依赖项版本。为此,请在代码操作下拉菜单中选择“升级”选项。