cmd/vulnreport, internal/ghsa: speed up GHSA query

The "vulnreport fix" command queries GitHub for GHSAs related to the CVE
in each fixed report. Instead of querying for every Go GHSA (slow),
query for GHSAs related to the specific CVE(s) of interest.

Skip the GHSA query entirely if the GHSAs field is populated,
unless the -always-fix-ghsa flag is provided.

This may issue more queries if fixing many reports with no GHSAs,
but dramatically speeds up the query when fixing a single report
(from 30s to <1s). Also, the number of queries no longer scales with
the size of the GitHub GHSA corpus.

Change-Id: I0dde2ad7ebb4621785575c0dffdadd3febd873d4
Reviewed-on: https://go-review.googlesource.com/c/vulndb/+/404116
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Julie Qiu <julieqiu@google.com>
Run-TryBot: Damien Neil <dneil@google.com>
3 files changed
tree: 5ccc8a683fe9873ebcb551184de794a6071e51f7
  1. .github/
  2. cmd/
  3. deploy/
  4. devtools/
  5. doc/
  6. internal/
  7. reports/
  8. terraform/
  9. .gitignore
  10. all_test.go
  11. AUTHORS
  12. checks.bash
  13. CONTRIBUTING.md
  14. CONTRIBUTORS
  15. go.mod
  16. go.sum
  17. LICENSE
  18. PATENTS
  19. README.md
  20. tools_test.go
README.md

The Go Vulnerability Database

This repository contains the reports for the Go Vulnerability Database.

If you are interested accessing data from the Go Vulnerability Database, see x/vuln for information. This repository is only used for adding new vulnerabilities.

Reporting a vulnerability

We are not accepting new vulnerability reports at this time. We will update this README.md once we are ready to receive reports.

License

Unless otherwise noted, the Go source files are distributed under the BSD-style license found in the LICENSE file.

Database entries are distributed under the terms of the CC-BY 4.0 license. See x/vuln for information on how to access these entries.