Golang 程序漏洞检测利器 govulncheck(一):安装和使用方法

这篇具有很好参考价值的文章主要介绍了Golang 程序漏洞检测利器 govulncheck(一):安装和使用方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

govulncheck 是什么?

govulncheck 是一个命令行工具,可以帮助 Golang 开发者快速找到项目代码和依赖的模块中的安全漏洞。该工具可以分析源代码和二进制文件,识别代码中对这些漏洞的任何直接或间接调用。

默认情况下,govulncheck 通过 Go 漏洞数据库 https://vuln.go.dev 提供的接口查询相关的模块是否包含漏洞(查询接口的请求只包含模块路径,不包含程序的代码或其他属性)。

安装和使用方法

安装之前需要将 Go 版本升级到1.18及以上,使用如下命令安装最新版本的 govulncheck:

$ go install golang.org/x/vuln/cmd/govulncheck@latest

在项目的主目录(包含 go.mod 文件的目录)执行如下命令进行漏洞扫描:

$ govulncheck ./...

govulncheck 也可以集成到自己的 CI/CD 系统里面,govulncheck 考虑到这方面的需求,所以输出结果可以选择 json 方式,例如:

$ govulncheck -json ./...

如果使用 govulncheck 扫描编译好的二进制文件,需要使用参数 -mode=binary 并跟上二进制文件的路径,例如:

$ govulncheck -mode=binary $HOME/go/bin/my-go-program

默认情况下,项目如果不存在漏洞,govulncheck 将成功退出(状态码为0),如果存在漏洞,则返回非0的状态码。如果提供了 -json 参数,无论检测到多少漏洞,都会成功退出,即状态码为0。

使用 govulncheck 需要注意的点如下:文章来源地址https://www.toymoban.com/news/detail-687262.html

  • 被扫描的二进制文件要求是使用 Go 1.18 或者更高版本构建的。
  • 对于函数指针和接口调用的分析比较保守,在某些情况下可能会误报或者打印不够准确的堆栈信息。
  • 使用包反射对函数的调用对静态分析来说是不可见的。对于仅通过这些调用方式可访问到的有漏洞的代码也不会报告漏洞,使用 unsafe 包也可能产生误报。
  • 因为 Go 二进制文件不包含详细的调用信息,所以 govulncheck 也无法显示检测到的漏洞的调用链。对于二进制文件中存在的但无法访问到的代码,也可能产生误报。
  • 只会给出当前执行环境和配置(GOOS/GOARCH)下的漏洞。假设一个漏洞只在 Linux中才有,那么在 Windows 则不会报告该漏洞。所以需要注意跨平台开发的情况,需要在不同的平台做漏洞扫描。另外需要注意的一点时,执行扫描的 go 版本需要和运行环境的 go 版本保持一致,假设 Go 1.18 标准库里才有的漏洞,如果执行扫描使用的 Go 版本是1.19,那么也不会报告该漏洞。

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

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

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

相关文章

  • Paper:txyz_ai(一款帮助科研人员阅读PDF论文ChatGPT利器)的简介、安装、使用方法之详细攻略

    Paper:txyz_ai(一款帮助科研人员阅读PDF论文ChatGPT利器)的简介、安装、使用方法之详细攻略 目录 txyz.ai的简介 txyz.ai的安装 1、Web端plug-in安装步骤图文教程

    2024年02月08日
    浏览(43)
  • Golang 实现http协议的心跳检测程序

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

    2023年04月09日
    浏览(28)
  • 宝塔 检测到系统已存在mysql 请使用纯净安装 【有效的解决方法】

    advance2016 于 2023-03-21 14:47:50 发布 1)以管理员的身份运行CMD 执行命令: sc delete mysql 1 sc delete mysql 2)清除注册表: 在文件资源管理器中输入“C:Windowsregedit.exe\\\"弹出注册表 删除HKEY_LOCAL_MACHINESYSTEMControlSet001ServicesEventlogApplicationMySQL文件夹 如果能找到如下内容,删除 HKEY_L

    2024年02月07日
    浏览(31)
  • 【linux命令讲解大全】045.网络数据分析利器:深度解读 tcpdump 抓包工具的使用方法

    tcpdump是一款在Linux上的抓包工具,用于嗅探网络数据。 补充说明 tcpdump命令是一款抓包、嗅探器工具。它可以打印所有经过网络接口的数据包的头信息,并可使用-w选项将数据包保存到文件中,以便以后进行分析。 语法 选项 -a:尝试将网络和广播地址转换成名称 -c 数据包数

    2024年02月10日
    浏览(49)
  • 详细介绍golang中.()类型断言的使用方法

    Golang是一门非常流行的编程语言,在很多领域都有着广泛的应用。在开发过程中,很多时候我们需要将函数作为参数传递给其他函数,这时候就需要用到golang中的.()用法。本文将详细介绍golang中.()的使用方法。 在golang中,.()被称为类型断言,可以将一个interface{}类型的变量转

    2024年02月14日
    浏览(50)
  • Golang中sync.Pool详解及使用方法

    sync.Pool是用来保存可以被重复使用的临时对象,以便在以后的同类操作中可以重复使用,从而避免了反复创建和销毁临时对象带来的消耗以及对GC造成的压力。常用池化技术来提高程序的性能,例如连接池、线程池等。sync.Pool是并发安全的,可以在多个goroutine中并发调用sync

    2024年02月02日
    浏览(32)
  • Golang单元测试详解(一):单元测试的基本使用方法

    Golang 中的单元测试是使用标准库 testing 来实现的,编写一个单元测试是很容易的: 创建测试文件:在 Go 项目的源代码目录下创建一个新的文件(和被测代码文件在同一个包),以 _test.go 为后缀名。例如,要测试net包中 dial.go 中的方法,在 net 包中创建一个名字为 dial_test.g

    2024年02月06日
    浏览(44)
  • 探索Bug Bounty Dorks:提升安全漏洞挖掘效率的利器

    项目地址:https://gitcode.com/sushiwushi/bug-bounty-dorks Bug Bounty Dorks 是一个由Sushiwushi维护的项目,旨在为Bug bounty猎人和网络安全研究人员提供一组强大的Google Dorking查询语句。这些查询语句可以帮助你发现潜在的安全漏洞,提高漏洞挖掘的效率,尤其在进行Bug Bounty活动时非常有用。

    2024年04月16日
    浏览(33)
  • 【Golang星辰图】数据管理利器:Go编程语言中的数据库和搜索引擎综合指南

    Go编程语言是一种强大、类型安全且高效的编程语言,它在处理数据库和搜索引擎方面有着广泛的应用。本篇文章将详细介绍几个Go编程语言中常用的数据库和全文搜索引擎,包括Go-bleve、Go-pgx、Go-leveldb/leveldb、Go-xorm、Go-mysql-driver和Go-bbolt/bbolt。对于每个工具,我们将介绍其功

    2024年03月26日
    浏览(67)
  • Golang漏洞管理

    原文在这里 Go帮助开发人员检测、评估和解决可能被攻击者利用的错误或弱点。在幕后,Go团队运行一个管道来整理关于漏洞的报告,这些报告存储在Go漏洞数据库中。各种库和工具可以读取和分析这些报告,以了解特定用户项目可能受到的影响。这个功能集成到pkg.go.dev和一

    2024年02月15日
    浏览(31)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包