Go的全新漏洞检测工具govulncheck来了

这篇具有很好参考价值的文章主要介绍了Go的全新漏洞检测工具govulncheck来了。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

Go安全团队在2022.09.06发布了全新的漏洞检测工具govulncheck,可以帮助我们发现Go程序里的安全漏洞。

本文详细介绍该工具目前的现状以及接下来的功能规划。

Go漏洞检测系统架构

govulncheck,golang,golang,安全

上图是Go安全团队对于Go代码漏洞检测的系统架构图。

  • 第1步,漏洞采集。Go安全团队会采集众多漏洞数据库,包括公开的漏洞数据库(例如National Vulnerability Database (NVD)和 GitHub Advisory Database)、社区反馈的Go package漏洞以及Go团队修复过的安全漏洞等。
  • 第2步:更新Go的漏洞数据库。对于第1步里收集到的安全漏洞,Go安全团队会出具评估报告,对报告的漏洞做评审,如果确认是需要处理的会进入到Go的漏洞数据库里。这些漏洞存储的按照 Open Source Vulnerability (OSV) format 格式进行存储,并且可以通过API获取到。
  • 第3步:工具集成。对于新的漏洞处理后,会相应更新 pkg.go.dev 上的漏洞说明以及发布漏洞检测工具 govulncheck的新版本。govulncheck可以分析扫描你的代码仓库,只展示那些真正影响到你程序执行的漏洞。govulncheck工具非常可靠,很少误报,可以帮助你快速发现一些已知的安全漏洞。

Go漏洞数据库

Go安全团队维护了一个漏洞数据库,地址是https://vuln.go.dev,也就是上面第2步所说的漏洞数据库。

  • 如果你发现了新漏洞,可以通过这个安全漏洞链接报告漏洞。
  • 如果你认为已有的漏洞报告描述有问题,可以在这个链接进行反馈。

Go的漏洞数据库里包含的漏洞,可以在这个链接地址pkg.go.dev/vuln进行查看。

govulncheck

全新的govulncheck 命令可以帮助你发现代码里的安全漏洞。

安装和使用方法如下:

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

govulncheck是一个独立的工具,可能会频繁更新和迭代。Go安全团队对于govulncheck的长期计划是把该工具集成到Go的发布版本里。

备注:

  • golang.org/x下所有package的源码独立于Go源码的主干分支,也不在Go的二进制安装包里。如果需要使用golang.org/x下的package,可以使用go get来安装。govulncheck工具就属于这种情况。
  • golang.org/x/exp下的所有package都属于实验性质或者被废弃的package,不建议使用。

golang.org/x/vuln这个仓库里包含有3个主要模块:

  • vulncheck 包。为了方便把govulncheck的漏洞检测功能集成给其它工具或服务,vulncheck 里把govulncheck的功能进行了封装,在vulncheck这个package里提供了相应的Go函数,可以被直接调用。
  • govulncheck命令。是命令行工具,对vulncheck包里漏洞检测功能做了封装。
  • client包。该package封装了一个用于和Go漏洞数据库交互的client。

集成

为了方便Go开发者更早和更好地了解到漏洞信息,Go团队把漏洞检测也集成到了Go的工具链和服务里。

例如,大家可以在package.go.dev网站的版本漏洞页面查看到golang.org/text这个package各个版本的安全漏洞情况。

Go的VS Code扩展插件对于govulncheck的支持也很快就可以发布。

总结

  • 详细的govulncheck命令使用说明参考:官方文档。

  • 目前govulncheck也有一些局限性,比如:

    • 扫描二进制文件的安全漏洞时,要求该二进制文件必须是使用Go 1.18或者更高版本编译的,不支持对低版本编译的二进制文件进行安全漏洞扫描。
    • 对于函数指针和接口(interface)调用的分析比较保守,在某些情况下可能导致误报漏洞。

    • govulncheck不能够展示Go二进制文件里扫描出来的安全漏洞的调用图(call graph),这是因为Go二进制文件并不包含详细的调用链信息。对于二进制文件里的代码也可能发生误报。

    • 只会报告govulncheck当前执行的Go编译环境和配置(GOOS/GOARCH)下的漏洞。例如,

      • 假设一个漏洞如果只在Linux下才有,那在Windows下执行govulncheck的时候就不会报告该漏洞。对于跨平台开发的项目,比如Windows下开发,实际部署在Linux上,那就可能导致开发环境下不能检测出漏洞。
      • 假设Go 1.18标准库里才有的漏洞,如果当前执行govulncheck所在的编译环境的Go版本是1.19,那也不会报告该漏洞。

更多关于govulncheck的限制,可以参考govulncheck limitations。

开源地址

文章和示例代码开源在GitHub: Go语言初级、中级和高级教程。

公众号:coding进阶。

个人网站:Jincheng’s Blog。

知乎:无忌。文章来源地址https://www.toymoban.com/news/detail-620884.html

References

  • https://go.dev/blog/vuln
  • https://go.dev/security/vuln/
  • https://go.dev/security/vuln/database
  • https://pkg.go.dev/golang.org/x/vuln/cmd/govulncheck

到了这里,关于Go的全新漏洞检测工具govulncheck来了的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 干货 | 6款漏扫工具来了(附工具下载链接)_ip漏洞扫描工具

    渗透测试收集信息完成后,就要根据所收集的信息,扫描目标站点可能存在的漏洞了,包括我们之前提到过的如:SQL注入漏洞、跨站脚本漏洞、文件上传漏洞、文件包含漏洞及命令执行漏洞等,通过这些已知的漏洞,来寻找目标站点的突破口,在这之前我们可能就已经接触过

    2024年02月21日
    浏览(70)
  • Go 工具链详解(四): Golang环境变量设置和查看工具 go env

    go env 是 Go 工具链中的一个命令,用于设置和查看当前 Golang 环境的相关信息,对于理解、编译和运行 Golang 程序非常有用。 go 提供的命令及 go 程序的编译运行都会使用到环境变量,如果未设置对应的环境变量,go 则会使用其默认设置。默认情况下,env 以 shell 脚本(在Windo

    2024年02月16日
    浏览(42)
  • Golang 测试工具 go test

    go test 本身可以携带很多的参数,熟悉这些参数,可以让我们的测试过程更加方便。 math_test.go math.go 是一对,缺一不可,前后顺序可对调。 -run 支持正则,如下例子中 TestAdd ,如果还有一个测试函数为 TestAdd02 ,那么它也会被运行。 准备两个 Go 文件:: E:TEXTtest_gotestmathmat

    2024年02月07日
    浏览(45)
  • 【Golang星辰图】加密和安全进阶:拓展Go的加密能力与身份验证

    在当今信息时代,保护用户数据和网络通信的安全至关重要。为了确保应用程序和用户之间的数据传输的机密性、完整性和真实性,加密和安全技术成为开发者必须掌握的关键领域之一。Go语言作为一种强大而灵活的编程语言,提供了丰富的加密和安全功能。本文将介绍一些

    2024年04月11日
    浏览(62)
  • 漏洞检测和评估【网站子域扫描工具02】

    上一篇:爬取目标网站的域名和子域名【网站子域扫描工具01】 在Python中,有一些流行的漏洞扫描库可以对子域进行漏洞扫描和评估,比如Nmap、Sublist3r等。 nmap库可以提供简单的端口和服务信息收集,但是它并不提供直接的漏洞评估功能。 在上述示例中,我们使用了 python-

    2024年01月19日
    浏览(51)
  • 安全测试之xss漏洞的检测与防御

    整理了一些软件测试方面的资料、面试资料(接口自动化、web自动化、app自动化、性能安全、测试开发等),有需要的小伙伴可以文末加入我的学习交流qun,无套路自行领取~  最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是

    2024年02月11日
    浏览(51)
  • 【论文阅读】 智能合约安全漏洞检测技术研究综述

    2016 年 6 月,黑客利用 DAO(decentralized autonomous organization)合约的 可重入漏洞 , 窃取了价值约 6000 万美元的以太币(即以太坊数字货币); 2017 年 7 月, 由于 Parity 多签名钱包合约的 Delegatecall 漏洞 (parity multi-sig wallet delegatecall), 价值近 3 亿美元的以太币被冻结; 2018 年 4 月, 恶意攻击者

    2024年03月14日
    浏览(63)
  • 安全扫描:检测到目标站点存在javascript框架库漏洞

    发现问题: 检测到目标站点存在javascript框架库漏洞 解决办法: 1、在node_modules里查找到jsencrypt文件夹,将里面的jsencrypt.min.js文件复制出来,放在utils文件夹里。 2、在main.js里,引用方式将 import JsEncrypt from \\\'jsencrypt\\\' 改为 import JsEncrypt from \\\'@/utils/jsencrypt.min.js\\\'

    2024年02月16日
    浏览(43)
  • 重磅!基于GPT-4的全新智能编程助手 GitHub Copilot X 来了!

    GitHub Copilot相信大家一定不陌生了,强大的智能代码补全功能一度让媒体直呼程序员要被替代。 随着OpenAI推出全新的GPT-4,GitHub Copilot也在3月22日,推出了全新一代产品:GitHub Copilot X 。 最新的GitHub Copilot X 不仅可以自动补全代码和注释,还在代码编辑器中增加了一个类似于

    2024年02月08日
    浏览(61)
  • 信息服务上线渗透检测网络安全检查报告和解决方案4(网站风险等级评定标准、漏洞危害分级标准、漏洞安全建议)

    信息服务上线渗透检测网络安全检查报告和解决方案3(系统漏洞扫描、相对路径覆盖RPO漏洞、nginx漏洞修复) 信息服务上线渗透检测网络安全检查报告和解决方案2(安装文件信息泄漏、管理路径泄漏、XSS漏洞、弱口令、逻辑漏洞、终极上传漏洞升级) 信息服务上线渗透检测网络安

    2024年02月12日
    浏览(48)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包