# The Go Vulnerability Database

[![Go Reference](https://pkg.go.dev/badge/golang.org/x/vulndb.svg)](https://pkg.go.dev/golang.org/x/vulndb)

This repository contains the infrastructure and internal reports to create the
[Go Vulnerability Database](https://vuln.go.dev).

Check out [https://go.dev/security/vuln](https://go.dev/security/vuln) for more
information about the Go vulnerability management system.

## Reporting a vulnerability or feedback

[Click here](https://github.com/golang/vulndb/issues/new/choose) to report a
public vulnerability in the Go ecosystem, or give feedback about the project.

## Privacy Policy

The privacy policy for `govulncheck` can be found at
[https://vuln.go.dev/privacy](https://vuln.go.dev/privacy.html).

## 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](https://creativecommons.org/licenses/by/4.0/) license. See
[go.dev/security/vuln/database](https://go.dev/security/vuln/database) for
information on how to access these entries.
