| // Copyright 2022 The Go Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style | |
| // license that can be found in the LICENSE file. | |
| /* | |
| Package vulncheck detects uses of known vulnerabilities | |
| in Go programs. | |
| Vulncheck identifies vulnerability uses in Go programs | |
| at the level of call graph, package import graph, and module | |
| requires graph. For instance, vulncheck identifies which | |
| vulnerable functions and methods are transitively called | |
| from the program entry points. vulncheck also detects | |
| transitively imported packages and required modules that | |
| contain known vulnerable functions and methods. | |
| We recommend using the command line tool [govulncheck] to | |
| detect vulnerabilities in your code. | |
| # Usage | |
| The two main APIs of vulncheck, [Source] and [Binary], allow vulnerability | |
| detection in Go source code and binaries, respectively. | |
| [Source] accepts a list of [Package] objects, which | |
| are a trimmed version of [golang.org/x/tools/go/packages.Package] objects to | |
| reduce memory consumption. [Binary] accepts a path to a Go binary file. | |
| Both [Source] and [Binary] require information about known | |
| vulnerabilities in the form of a vulnerability database, | |
| specifically a [golang.org/x/vuln/internal/client.Client]. | |
| The vulnerabilities | |
| are modeled using the [golang.org/x/vuln/internal/osv] format. | |
| # Results | |
| The results of vulncheck are slices of the call graph, package imports graph, | |
| and module requires graph leading to the use of an identified vulnerability. | |
| The parts of these graphs not related to any vulnerabilities are omitted. | |
| The [CallStacks] and [ImportChains] functions search the returned slices for | |
| user-friendly representative call stacks and import chains. These call stacks | |
| and import chains are provided as examples of vulnerability uses in the client | |
| code. | |
| # Limitations | |
| There are some limitations with vulncheck. Please see the | |
| [documented limitations] for more information. | |
| [govulncheck]: https://pkg.go.dev/golang.org/x/vuln/cmd/govulncheck | |
| [documented limitations]: https://go.dev/security/vulncheck#limitations. | |
| */ | |
| package vulncheck |