internal/cvelist: find Go CVEs using references data

Initial logic is added for finding Go CVEs from the CVE list repository.

For each CVE created in 2020 or after, we check if the references
contains a URL that might be a link to a common VCS host (such as
github.com). If so, parse the module path from that URL, and check if
that page exists on pkg.go.dev.

If so, we can assume that this is likely a Go related CVE, an a GitHub
issue should be created.

Change-Id: Iaedad20f7b055ebcf814b4b3caf310d5356839ad
Reviewed-on: https://go-review.googlesource.com/c/vulndb/+/356173
Trust: Julie Qiu <julie@golang.org>
Run-TryBot: Julie Qiu <julie@golang.org>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Roland Shoemaker <roland@golang.org>
1 file changed
tree: 64f1b5fb259fb9b5be448b0196da9c6c49255615
  1. client/
  2. cmd/
  3. deploy/
  4. internal/
  5. osv/
  6. reports/
  7. all.bash
  8. AUTHORS
  9. CONTRIBUTING.md
  10. CONTRIBUTORS
  11. format.md
  12. go.mod
  13. go.sum
  14. LICENSE
  15. lint_test.go
  16. new-vuln.sh
  17. PATENTS
  18. README.md
  19. template
  20. triaged-cve-list
README.md

The Go Vulnerability Database golang.org/x/vulndb

This repository is a prototype of the Go Vulnerability Database. Read the Draft Design.

Neither the code, nor the data, nor the existence of this repository is to be considered stable until an approved proposal.

Important: vulnerability entries in this repository are represented in an internal, unstable format that can and will change without notice.

Consuming database entries

Database clients must not rely on the contents of this repository. Instead, they can access the tree of JSON entries rooted at

https://storage.googleapis.com/go-vulndb/

An index.json file maps module paths to last modified timestamps (link).

For each module, a NAME.json file contains a list of vulnerability entries (example).

Note that this path and format are provisional and likely to change until an approved proposal.

Packages

Some of these packages can probably be coalesced, but for now are easier to work on in a more segmented fashion.

  • osv provides a package for generating OSV-style JSON vulnerability entries from a report.Report
  • client contains a client for accessing HTTP/fs based vulnerability databases, as well as a minimal caching implementation
  • cmd/dbdiff provides a tool for comparing two different versions of the vulnerability database
  • cmd/gendb provides a tool for converting YAML reports into JSON database
  • cmd/linter provides a tool for linting individual reports
  • cmd/report2cve provides a tool for converting YAML reports into JSON CVEs

License

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

Database entries available at https://storage.googleapis.com/go-vulndb/ are distributed under the terms of the CC-BY 4.0 license.