• 简体中文
  • 使用 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 检测、报告和管理漏洞的架构的高级视图。