Setting up govulncheck
in GitHub Actions with GitHub Code Scanning alerts

With oapi-codegen
, as many other folks in the ecosystem, we've been asked a few times in the past "can you please update this dependency as it has a CVE".
I'll generally reach for govulncheck
as a way to confirm the impact, given it validates - via static analysis - whether the dependency is actually called as part of your operation (sometimes known as "reachability").
Although we're still working towards defining when dependencies with CVEs will be updated, this is a step towards being able to have a better gauge over what's impacted and when.
As a step further from Brandur's thoughts on running govulncheck
in CI, we can go a step further to integrate the results into GitHub Code Scanning alerts, for better visibility.
For instance, when running against the "runtime" library, we can see:
So how do we do this?
I've found that the following GitHub Actions workflow is the minimal set of configuration needed to get govulncheck
's SARIF reporting format out, and then uploaded into GitHub to surface as a Code Scanning alert:
name: Determine known CVEs through `govulncheck`
on:
push:
branches:
- main
schedule:
# Mondays at 0000
- cron: "0 0 * * 1"
jobs:
check-for-vulnerabilities:
name: Check for vulnerabilities using `govulncheck`
runs-on: ubuntu-latest
permissions:
security-events: write
contents: read
steps:
- uses: golang/govulncheck-action@b625fbe08f3bccbe446d94fbf87fcc875a4f50ee # v1.0.4
with:
# NOTE that we want to produce the SARIF-formatted report, which can then be consumed by other tools ...
output-format: sarif
output-file: govulncheck.sarif
# ... such as the Code Scanning tab (https://github.com/oapi-codegen/oapi-codegen/security/code-scanning?query=is%3Aopen+branch%3Amain+tool%3Agovulncheck)
- name: Upload SARIF file
uses: github/codeql-action/upload-sarif@192325c86100d080feab897ff886c34abd4c83a3 # v3.30.2
with:
sarif_file: govulncheck.sarif
category: govulncheck