深圳企业网站怎么做,做网站怎样使图片自由移动,微信服务平台开发,湖南公示新任省管干部上一篇文章详细介绍了 Golang 程序漏洞扫描工具 govulncheck 的使用方法#xff0c;govulncheck 强大功能的背后#xff0c;离不开 Go 漏洞数据库#xff08;Go vulnerability database#xff09;的支持#xff0c;接下来详细讲解下 Go 漏洞数据库相关的知识。
Go 漏洞数…上一篇文章详细介绍了 Golang 程序漏洞扫描工具 govulncheck 的使用方法govulncheck 强大功能的背后离不开 Go 漏洞数据库Go vulnerability database的支持接下来详细讲解下 Go 漏洞数据库相关的知识。
Go 漏洞数据库Go vulnerability database是什么
在当今数字化的世界中软件安全是至关重要的。随着 Golang 在开发领域的日益流行Go 项目的安全性也越来越重要。为了帮助开发者及时发现和解决与 Golang 相关的安全漏洞Go 漏洞数据库应运而生。
Go 漏洞数据库Go vulnerability database访问地址是 https://vuln.go.dev 或者 https://pkg.go.dev/vuln是一个存储 Golang 安全漏洞信息的数据库由 Golang 官方维护。漏洞信息数据来自现有的源例如 cve、ghsa 和 Go 包维护者直接提交的漏洞报告等这些信息随后由 Go 安全团队审核并添加到数据库中。
该数据库支持多数据源访问提供访问漏洞数据源的接口和默认实现。漏洞项使用 OSVOpen Source Vulnerability format格式存储和传输。开发人员可以基于 module 的路径或者 ID 从漏洞数据库中查找是否存在已知漏洞。
Go 漏洞数据库 API
Go 漏洞数据库提供基于 HTTP 协议请求方式为 GET 的一系列接口每个接口都是返回 JSON 类型的数据。
获取数据库元数据接口 /index/db.json[.gz]
示例如下
$ curl https://vuln.go.dev/index/db.json
{modified:2023-08-23T14:38:50Z}
获取每个模块元数据接口 /index/modules.json[.gz]
示例如下
$ curl https://vuln.go.dev/index/modules.json
[ {// The module path.path: string,// The vulnerabilities that affect this module.vulns:[ {// The vulnerability ID.id: string,// The latest time the vulnerability should be considered// to have been modified, as an RFC3339-formatted UTC// timestamp ending in Z.modified: string,// (Optional) The module version (in SemVer 2.0.0 format)// that contains the latest fix for the vulnerability.// If unknown or unavailable, this should be omitted.fixed: string,} ]
} ]
获取每个漏洞元数据接口 /index/vulns.json[.gz]
示例如下
$ curl https://vuln.go.dev/index/vulns.json
[ {// The vulnerability ID.id: string,// The latest time the vulnerability should be considered// to have been modified, as an RFC3339-formatted UTC// timestamp ending in Z.modified: string,// A list of IDs of the same vulnerability in other databases.aliases: [ string ]} ]
获取某个漏洞信息接口 /ID/$id.json[.gz]
示例如下
$ curl https://vuln.go.dev/ID/GO-2023-2003.json
{schema_version: 1.3.1,id: GO-2023-2003,modified: 2023-08-10T22:06:06Z,published: 2023-08-10T22:06:06Z,aliases: [GHSA-8c37-7qx3-4c4p],summary: Blst fails to perform group signature validation,details: When complemented with a check for infinity, blst skips performing a signature group-check. Formally speaking, infinity is the identity element of the elliptic curve group and as such it is a member of the group, so the group-check should be performed. The fix performs the check even in the presence of infinity.,affected: [{package: {name: github.com/supranational/blst,ecosystem: Go},ranges: [{type: SEMVER,events: [{introduced: 0.3.0},{fixed: 0.3.11}]}],ecosystem_specific: {imports: [{path: github.com/supranational/blst/bindings/go,symbols: [P1Affine.SigValidate,P2Affine.SigValidate]}]}}],references: [{type: FIX,url: https://github.com/supranational/blst/commit/fb91221c91c82f65bfc7f243256308977a06d48b},{type: WEB,url: https://github.com/supranational/blst/releases/tag/v0.3.11}],credits: [{name: Yunjong Jeong (blukat29)}],database_specific: {url: https://pkg.go.dev/vuln/GO-2023-2003}
}
govulncheck 使用漏洞数据库方法
govulncheck 使用的漏洞数据地址是 https://vuln.go.dev可以使用 -db 参数指定漏洞数据库支持 http://、https:// 和 file:// 协议。指定的漏洞数据库必须实现上面讲解的几个 API。govulncheck 命令在从 http 源读取时使用 “.json.gz” 端点而从文件源读取时使用 “json”端点。