当前位置: 首页 > news >正文

Golang 程序漏洞检测利器 govulncheck(二):漏洞数据库详解

上一篇文章详细介绍了 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 安全团队审核并添加到数据库中。

该数据库支持多数据源访问,提供访问漏洞数据源的接口和默认实现。漏洞项使用 OSV(Open Source Vulnerability format)格式存储和传输。开发人员可以基于 module 的路径或者 ID 从漏洞数据库中查找是否存在已知漏洞。

Go 漏洞数据库 API

Go 漏洞数据库提供基于 HTTP 协议,请求方式为 GET 的一系列接口,每个接口都是返回 JSON 类型的数据。

  1. 获取数据库元数据接口 /index/db.json[.gz]

示例如下:

$ curl https://vuln.go.dev/index/db.json
{"modified":"2023-08-23T14:38:50Z"}
  1. 获取每个模块元数据接口 /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,} ]
} ]
  1. 获取每个漏洞元数据接口 /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 ]} ]
  1. 获取某个漏洞信息接口 /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”端点。

http://www.lryc.cn/news/157663.html

相关文章:

  • [JDK8下的HashMap类应用及源码分析] 数据结构、哈希碰撞、链表变红黑树
  • 高等数学刷题
  • lintcode 1840 · 矩阵还原【中等 vip 二维前缀和数组】
  • VMware虚拟机+Centos7 配置静态,动态IP
  • 【C++精华铺】10.STL string模拟实现
  • 微信小程序开发---事件的绑定
  • 基于Hata模型的BPSK调制信号小区覆盖模拟matlab完整程序分享
  • 音视频 ffmpeg视频裁剪
  • Web3数据云OORT推出商用版智能代理构建平台:OORT TDS
  • ChatGPT:革命性的自然语言处理技术
  • 利用frps搭建本地自签名https服务的透传
  • 安卓手机安装Linux然后在其中安装(jdk,MySQL,git)
  • javaee之黑马乐优商城2
  • Qt打开及创建项目,运行程序(1)
  • 八种十倍提升API性能的方式
  • pg_database中的datlastsysoid
  • 【已解决】ognl.PropertyAccessor
  • Pytest系列-快速入门和基础讲解(1)
  • 微信小程序实现连续签到七天
  • 将 Spring Boot 应用程序与 Amazon DocumentDB 集成
  • 前端小案例1:用css实现蒙层效果
  • RTMP流媒体服务器EasyDSS视频点播平台在不关闭防火墙的情况下平稳部署的具体步骤
  • QT中信号与槽机制的介绍,以及信号与槽连接的几种方式
  • 学习笔记——Java入门第二季
  • 计算机视觉的应用13-基于SSD模型的城市道路积水识别的应用项目
  • 【39元linux开发板-ADB远程教程】-[ADB远程终端]-幸狐Luckfox Pico-超越树莓派PICO
  • 900ES1-0100 honeywell 可减少视觉引导应用的整体开发时间
  • Openvslam
  • Windows通过RDP异地远程桌面Ubuntu【内网穿透】
  • js 基础 (ES 模块)