本文翻译自《Tutorial: Find and fix vulnerable dependencies with VS Code Go》。
点此回到《Go安全》。
目录
你可以使用Visual Studio Code编辑器的Go插件直接在编辑器中扫描代码中的漏洞。
注意:有关以下图像中包含的漏洞修复相关的教程,请参阅govulcheck教程。
先决条件
- Go 1.18或更高版本。Govulncheck旨在与Go 1.18及以后的版本配合使用。有关安装说明,请参阅安装Go。我们建议你使用最新版本的Go来学习本教程。
- VS Code编辑器,更新到最新版本。请在此处下载。你也可以使用Vim(有关详细信息,请参阅此处),但本教程的重点是VS Code Go插件。
- VS Code Go插件,可以在这里下载。
- VS Code编辑器特定设置更改。你需要根据这些规范修改VS Code的设置,然后才能复制下文的代码示例,运行后得到相应的结果。
如何使用VS Code Go扫描漏洞
第一步,运行“Go: Toggle Vulncheck”
Toggle Vulcheck命令显示在你的模块中列出的所有依赖项的漏洞分析。要使用此命令,请打开IDE中的命令面板(在Linux/Windows上的快捷键为Ctrl+Shift+P,在Mac OS上的快捷键为Cmd+Shift+P),然后运行“Go:Thoggle Vulcheck”。在Go.mod文件中,你将看到代码中可能会被直接和间接攻击的依赖项的诊断。
注意:要在自己的编辑器上重现本教程,请将下面的代码复制到main.go文件中。
// 这个程序从命令行获取一个或多个“语言标签(language tag)”参数,然后解析它们
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文件已更新。
第二步,运行govulcheck。
使用代码操作(code action)运行govulcheck可以让你专注于代码中实际调用的依赖项。VS Code中的代码操作由灯泡图标标记;将鼠标悬停在相关依赖项上以查看有关该漏洞的信息,然后选择“快速修复(Quick Fix)”以显示选项菜单。再选择“运行govulcheck进行验证(run govulncheck to verify)”。这将在你的终端中返回相关的govulceck输出。
第三步,将鼠标悬停在go.mod文件中列出的依赖项上。
将鼠标悬停在go.mod文件中的依赖项上,也可以找到关于此依赖项的govulcheck输出。为了快速查看依赖项相关信息,这种方式甚至比使用代码操作更高效。
第四步,把你的依赖项升级到修复后的版本。
代码操作还可以用于快速升级到修复漏洞后的依赖项的版本。通过在代码操作的下拉菜单中选择“升级”选项来完成此操作。
其他资源