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

这篇具有很好参考价值的文章主要介绍了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”端点。文章来源地址https://www.toymoban.com/news/detail-692817.html

到了这里,关于Golang 程序漏洞检测利器 govulncheck(二):漏洞数据库详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用示例和应用程序全面了解高效数据管理的Golang MySQL数据库

    Golang,也被称为Go,已经成为构建强大高性能应用程序的首选语言。在处理MySQL数据库时,Golang提供了一系列强大的库,简化了数据库交互并提高了效率。在本文中,我们将深入探讨一些最流行的Golang MySQL数据库库,通过实际示例来探索它们的功能。 GORM是用于Golang的功能丰富

    2024年02月08日
    浏览(54)
  • Golang 程序性能优化利器 PGO 详解(一):简单介绍及使用

    在软件开发过程中,性能优化是不可或缺的一部分。无论是在Web服务、数据处理系统还是实时通信中,良好的性能都是至关重要的。Golang 从1.20版版本开始引入的 Profile Guided Optimization(PGO)机制能够帮助更好地优化 Go 程序的性能。 编译器在编译程序的时候会对程序做很多优

    2024年02月13日
    浏览(35)
  • 探索数据库管理的利器 - PHPMyAdmin

    有一个项目,后端由博主独自负责,最近需要将项目交接给另一位同事。在项目初期,博主直接在数据库中使用工具创建了相关表格,并在完成后利用PhpMyAdmin生成了一份数据字典,供团队使用。然而,在随后的开发过程中,由于沟通方便,数据字典一直没有得到及时的维护。

    2024年02月09日
    浏览(45)
  • ETLCloud:实现数据库快速输入输出的利器

    在当今大数据时代,数据的高效处理和管理成为企业发展的关键。而数据库作为数据存储和管理的核心,其输入输出效率的提升对于企业来说至关重要。ETLCloud数据集成工具,为企业提供了快速、灵活、稳定的数据库输入输出解决方案,极大地简化了数据处理流程,提高了工

    2024年01月23日
    浏览(38)
  • Golang 实现http协议的心跳检测程序

    本文介绍如何使用Golang实现心跳程序。 实现心跳程序,其他应用可以简单集成。客户端程序通过HTTP协议进行检测,返回当前程序状态、版本ID以及已运行时间。 首先定义了两个变量,CommitHash、StartTime,然后定义结构体HeartbeatMessage封装返回值。 接着在init方法中给StartTime变量

    2023年04月09日
    浏览(30)
  • MySQL数据库索引优化指南:提升查询效率的利器

    本文将详细探讨MySQL数据库索引的概念、作用以及不同类型的索引,包括主键索引、唯一索引和普通索引。通过实际案例分析,我们将深入理解索引的工作原理,并提供实用的优化建议,帮助读者提升数据库性能。

    2024年02月09日
    浏览(91)
  • Go语言(Golang)数据库编程

    要想连接到 SQL 数据库,首先需要加载目标数据库的驱动,驱动里面包含着于该数据库交互的逻辑。 sql.Open() 数据库驱动的名称 数据源名称 得到一个指向 sql.DB 这个 struct 的指针 sql.DB 是用来操作数据库的,它代表了0个或者多个底层连接的池,这些连接由sql 包来维护,sql 包会

    2024年02月03日
    浏览(93)
  • Python SQL 数据库操作利器:SQLAlchemy 库详解(看这一篇文章就够了)

    引言: Python 是一门广受欢迎的编程语言,而 SQL 则是用于管理和操作数据库的标准查询语言。SQLAlchemy 是一个功能强大的 Python 库,它提供了一种与多种数据库进行交互的灵活方式。本文将介绍 SQLAlchemy 库,并以九个重要的要点详细解释其功能和用法。 SQLAlchemy 简介 SQLAlchem

    2024年02月07日
    浏览(66)
  • golang操作数据库--gorm框架、redis

    ①引入 ②初始化 ③增删改查 官网: http://gorm.io/ ①引入 ②初始化 ③增删改查 说明:Debug()可以查看执行的sql语句。 ④gorm gen的使用 a.先安装 (会安装到gopath的bin目录下,windows电脑,需要将该路径加入到系统路径) eg : b.举例: 说明1:windows电脑go install之后,把exe添加到系统路

    2024年02月10日
    浏览(42)
  • golang中给数据库datetime格式赋值

    1、定义数据库表映射结构体如上,create_time字段在表里面是datetime格式。 2、如果CreateTime不给值,在存库时,create_time字段的值为NULL。 3、赋值时,如下代码

    2024年02月09日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包