Golang代码漏洞扫描工具介绍——govulncheck

Golang

Golang作为一款近年来最火热的服务端语言之一,深受广大程序员的喜爱,笔者最近也在用,特别是高并发的场景下,golang易用性的优势十分明显,但笔者这次想要介绍的并不是golang本身,而且golang代码的漏洞扫描工具,毕竟作为服务端的程序,安全性一直是一个不同忽视的地方

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

在2023.07.13, govulncheck 终于有了1.0.0的发布版本,在官方文档中https://go.dev/blog/govulncheck中,一起发布的还有一份官方的安全最佳实践指引 ****:里面包含了以下几个方面:

1.定期扫描源代码和二进制库 ——推荐用govulncheck

2.更新golang版本和依赖库版本

3.通过模糊测试发现边缘情况漏洞**

4.#Go的race detector检查多协程竞争的情况

5.使用Vet命令检查代码潜在的问题

看的出来golang安全团队在这里是下了大的功夫,这里主要介绍下第一个工具:govulncheck

govulncheck

govulncheck介绍

govulncheck是一个命令行工具,帮助Go用户在项目依赖中查找已知的漏洞。该工具可以分析代码库和二进制文件,并通过优先考虑实际调用你代码的函数中的漏洞来减少干扰。

原理

go 安全团队和社区成员共同维护了一个漏洞库 govulndb,收集了从 2018 年推出 go module 后 go 相关的漏洞信息。

这意味着,go vender形式的项目不能使用它

govulncheck 首先会找出代码中使用的模块和包的版本信息,然后通过接口调用漏洞库的最新数据,最后进行数据对比,将受影响的包或模块列举输出。

针对漏洞数据库的来源也有好几个:

1.National Vulnerability Database ( NVD )

2.GitHub Advisory Database

  1. 社区反馈
  2. 官方自己发现的漏洞

通过上面的信息来源,go的安全团队进行分析和评估,把确认有效的放在go漏洞数据库,然后govulncheck会基于这个漏洞数据库进行扫描

在这里插入图片描述

这意味着,govulncheck要经常更新漏洞数据库

关于数据库信息

Go漏洞数据库地址https://vuln.go.dev,该数据库提供了关于公共Go模块中已知漏洞的详尽信息,开发者可以在pkg.go.dev/vuln上浏览数据库中的条目

为了提高性能并确保长期的可扩展性。官方更新数据库API。同时,提供了一个实验性工具来生成您自己的漏洞数据库索引,位于golang.org/x/vulndb/cmd/indexdb

关于使用

第一步:安装

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

这里的go版本要跟项目的go版本对应

第二步:增加Path地址

export PATH=$PATH:$GOPATH/bin

第三步:在项目目录下使用:

govulncheck ./...

需要在go.mod同级目录

在这里插入图片描述

参数设置:

govulncheck -h

在这里插入图片描述

这里主要用到的是

-mode选择二进制文件还是源代码

-json 输出的产物格式

在这里插入图片描述

关于集成

1.在Visual Studio Code集成:

参考:https://go.dev/doc/tutorial/govulncheck-ide

在这里插入图片描述

2.在CI/CD集成:

参考

2.1.https://semaphoreci.com/blog/govulncheck

2.2.https://github.com/marketplace/actions/golang-govulncheck-action

在这里插入图片描述

关于注意的点:

  1. 二进制文件必须使用1.18或更高版本
  2. 二进制文件扫描没有调用图
  3. 在哪编译,在哪扫描,不同平台的扫描结果不同
  4. 工程使用哪个go版本,就用对应go版本的govulncheck
  5. 在函数指针和接口(interface)调用的分析、反射调用的分析比较保守,可能会出现误报

6.参考https://pkg.go.dev/golang.org/x/vuln/cmd/govulncheck

里面的Limitations

参考资料:

1.https://www.cnblogs.com/lianshuiwuyi/p/17602778.html

2.https://semaphoreci.com/blog/govulncheck

3.https://blog.csdn.net/DisMisPres/article/details/132018530

4.https://zhuanlan.zhihu.com/p/563369267

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/109854.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

stu01-IDEA怎么创建一个HTML项目

1.打开idea,依次点击file→new→project 2.点击Java,选择你的jdk,没有下载的点击“Download JDK”/已经下载有JDK但在这里没显示的→点击“Add JDK”,选择你安装的JDK的路径,然后next 3.next 4.起好名字,我…

【C++】类和对象(中下)

前言: 上一篇文章,我们了解了类的默认成员函数——构造函数、析构函数、拷贝构造函数,这篇我们让我们接着了解。 一、赋值运算符重载: 1.运算符重载: C为了增强代码的可读性引入了运算符重载,运算符重载是…

Java集合(Collection、Iterator、Map、Collections)概述——Java第十三讲

前言 本讲我们将继续来讲解Java的其他重要知识点——Java集合。Java集合框架是Java编程语言中一个重要的部分,它提供了一套预定义的类和接口,供程序员使用数据结构来存储和操作一组对象。Java集合框架主要包括两种类型:一种是集合(Collection),存储一个元素列表,…

运维Shell牛刀小试(十一):for循环读取多个命令行参数

运维Shell脚本小试牛刀(一) 运维Shell脚本小试牛刀(二) 运维Shell脚本小试牛刀(三)::$(cd $(dirname $0); pwd)命令详解 运维Shell脚本小试牛刀(四): 多层嵌套if...elif...elif....else fi_蜗牛杨哥的博客-CSDN博客 Cenos7安装小火车程序动画 运维Shell脚本小试…

【SpringCloud微服务项目实战-mall4cloud项目(2)】——mall4cloud-gateway

mall4cloud-gateway网关模块 系统架构与网关介绍网关介绍 网关层代码依赖引入bootstrap配置nacos配置gateway配置处理跨域问题gateway路由断言配置gateway路由过滤配置 总结 代码地址 github地址 fork自github原始项目 gitee地址 fork自gitee原始项目 系统架构与网关介绍 从图…

深圳唯创知音电子将参加IOTE 2023第二十届国际物联网展•深圳站

​ 2023年9月20~22日,深圳唯创知音电子将在 深圳宝安国际会展中心(9号馆9B1)为您全面展示最新的芯片产品及应用方案,助力传感器行业的发展。 作为全球领先的芯片供应商之一,深圳唯创知音电子一直致力于为提供高质量、…

JVM 篇

一、知识点汇总 其中内存模型,类加载机制,GC是重点方面。性能调优部分更偏向应用,重点突出实践能力。编译器优化和执行模式部分偏向于理论基础,重点掌握知识点。 内存模型:各部分作用,保存哪些数据。类加载…

java设计模式之观察者模式

. 基本概念 观察者(Observer)模式中包含两种对象,分别是目标对象和观察者对象。在目标对象和观察者对象间存在着一种一对多的对应关系,当这个目标对象的状态发生变化时,所有依赖于它的观察者对象都会得到通知并执行它…

数据分享|R语言分析上海空气质量指数数据:kmean聚类、层次聚类、时间序列分析:arima模型、指数平滑法...

全文链接:http://tecdat.cn/?p30131 最近我们被客户要求撰写关于上海空气质量指数的研究报告。本文向大家介绍R语言对上海PM2.5等空气质量数据(查看文末了解数据免费获取方式)间的相关分析和预测分析,主要内容包括其使用实例&…

嵌入式-数据进制之间的转换

目录 一.简介 1.1十进制 1.2二进制 1.3八进制 1.4十六进制 二.进制转换 2.1二进制-十进制转换 2.2八进制-十进制转换 2.3十六进制-十进制转换 2.4十进制-二进制转换 2.5十进制-八进制转换 2.6十进制-十六进制转换 2.7小数部分转换 一.简介 被传入到计算机的数据要…

SpringBoot-接口幂等性

幂等 幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。 幂等函数或幂等方法是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。 尤其是支付、订单等与金钱挂…

华硕电脑怎么录屏?分享实用录制经验!

“华硕电脑怎么录屏呀,刚买的笔记本电脑,是华硕的,自我感觉挺好用的,但是不知道怎么录屏,最近刚好要录一个教程,怎么都找不到在哪里录制,有人能教教我吗?” 随着电脑技术的不断发展…