上一篇文章详细介绍了 Golang 程序漏洞扫描工具 govulncheck 使用的漏洞数据库(Go vulnerability database),本文详细讲解下 Github 项目如何使用 govulncheck。
govulncheck 为 Golang 开发者提供了一种准确可靠的方式来了解程序中可能存在的漏洞。官方也开发了对应的 GitHub Action 来帮助开发者扫描托管在 Github 上的项目。
首先在项目根目录创建 .github 目录,然后在 .github 目录下创建 workflows 目录,最后在 workflows 目录下面创建 govulncheck.yml 文件,文件名可以根据自己的实际情况命名。写入如下内容:
name: "govulncheck"on: push: branches: [ main ] pull_request: # The branches below must be a subset of the branches above branches: [ main ] schedule: - cron: '24 1 * * 0'jobs: govulncheck_job: runs-on: ubuntu-latest name: Run govulncheck steps: - id: govulncheck uses: golang/govulncheck-action@v1 with: go-version-input: 1.20.6 go-package: ./...
然后提交代码并推送到 github 后,就会自动触发扫描。
默认情况下,govulncheck Github Action 将运行最新版本的 Go 版本,并扫描所提供的 Go 模块中的所有包。假设在本地安装了最新的 Go 版本,这相当于在命令行中运行以下命令:
$ govulncheck ./...
使用最新的 Go 版本执行扫描并不是我们想要的,所以使用 go-version-input 将 Go 版本设置为了 1.20.6,使用 go-package 指定要扫描的包的范围。govulncheck Github Action 还有其他几个可选的设置,如下:
当发现漏洞时,GitHub Actions 会显示一个错误,其中包含有关漏洞的信息以及对应的修复方法。如下: