go 中的代码漏洞检查

前言

不知道大家在开发 go 项目中有没有遇到过一些第三方包或者官方包中出现漏洞的问题,这些漏洞可能会影响到代码的功能、性能或者安全性。

现在针对这一问题,go 团队提供了 govulncheck 工具,帮助开发者快速地发现和修复这些漏洞。

什么是 govulncheck

govulncheckgo 官方提供的一个二进制工具,用于检查 go 代码或二进制文件是否存在已知的安全漏洞。

原理

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

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

在这里插入图片描述

上图是 go 官博 提供的系统架构图

  1. 漏洞采集。go 安全团队会从多种渠道采集漏洞数据,如公开的漏洞数据库 National Vulnerability Database(NVD) 和 GitHub Advisory Database、社区反馈的 https://go.dev/s/vulndb-report-new(咱们也可以通过这里将在自己发现的漏洞上报)和 go 团队自己修复过的安全漏洞等。
  2. 更新 go 漏洞数据库。搜集到安全漏洞后,go 安全团队会作出评估,若是需要处理的会直接进入漏洞数据库。
  3. 工具集成。对于新的漏洞处理后,会相应更新 pkg.go.dev 上的漏洞说明、发布新的 govulncheck 工具。

基本使用

安装使用相对来说比较简单。

通过命令行下载最新版本的工具

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

然后在需要检查的目录下执行

govulncheck ./...

执行后输出结果如下,会给出漏洞信息以及如何修复的建议。
在这里插入图片描述

一些局限

  • 扫描二进制文件的安全漏洞时,要求该二进制文件必须是使用 go 1.18 或者更高版本编译的,不支持对低版本编译的二进制文件进行安全漏洞扫描。
  • 不能够展示 go 二进制文件里扫描出来的安全漏洞的调用图(call graph),这是因为 go 二进制文件并不包含详细的调用链信息。对于二进制文件里的代码也可能发生误报。
  • 只会报告 govulncheck 当前执行的 go 编译环境和配置(GOOS/GOARCH)下的漏洞。例:漏洞只在 linux 下存在,但是开发环境是 windows 的跨平台开发,那就可能导致开发环境下不能检测出该漏洞。
  • 假设 go 1.18 标准库里才有的漏洞,如果当前执行 govulncheck 所在的编译环境的 go 版本是 1.19,那也不会报告该漏洞。

详情可见:官博 。

总结

govulncheckgo 官方提供的一个漏洞检查工具。go 团队从多处采集漏洞并存入自己的漏洞库,然后通过 govulncheck 工具对代码或二进制文件进行漏洞扫描。

很棒的一款工具,建议在日常的开发流程中(CI/CD,代码审查等)引入漏洞检查,能够帮助我们通过 go 来构建高质量、高安全性的程序。

参考

  • Go 官方博客 govulncheck 1.0.0 版本发布
  • Go 官方博客 govulncheck 的提出
  • Go 官方使用文档
  • Go 语言的安全守护者:你用了吗?
  • 官方 Github 仓库

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

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

相关文章

C/C++开发,opencv与qt结合播放视频

目录 一、qt_ui创建 1.1 ui设置 1.2 ui及代码输出保存 二、创建工程 2.1 工程目录及编译设置 2.2 源码设计 三、编译及测试 3.1 程序编译 3.2 程序运行 首先声明,这是一个OpenCV 3学习文档的案例,但是说明有些过于省略,只有一些简短的代码…

计算机毕设 深度学习人体跌倒检测 -yolo 机器视觉 opencv python

文章目录 0 前言1.前言2.实现效果3.相关技术原理3.1卷积神经网络3.1YOLOV5简介3.2 YOLOv5s 模型算法流程和原理4.数据集处理3.1 数据标注简介3.2 数据保存 5.模型训练 6 最后 0 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题…

Clion开发Stm32之温湿度传感器(DS18B20)驱动编写和测试

前言 涵盖之前文章: Clion开发STM32之HAL库GPIO宏定义封装(最新版)Clion开发stm32之微妙延迟(采用nop指令实现)Clion开发STM32之日志模块(参考RT-Thread) DSP18B20驱动文件 头文件 /*******************************************************************************Copy…

OAuth机制_web站点接入微软azure账号进行三方登录

文章目录 ⭐前言⭐微软三方登录流程💖 web站点获取微软账号流程💖 node封装微软登录接口💖 webapp 自定义code换token💖 调用 Microsoft Graph API💖 前端唤醒authlink进行登录回调逻辑 ⭐结束 ⭐前言 大家好&#xf…

sublime配置less的一些坑(1)

仅在sublime的Install Package安装保存less报错 在sublime的Install Package安装less 打开sublime软件,按住CtrlShiftP组合键,弹出的界面中选择Install Package 选中后enter或者回车。等会弹出一个弹窗,大致意思是说你已经成功安装了package control。如果你在此之前已经安装了…

【论文精读】MemSum: 基于历史决策的多步长文本抽取式摘要方法

前言 论文分享 来自2022ACL的长文本抽取式摘要方法论文 MemSum: Extractive Summarization of Long Documents Using Multi-Step Episodic Markov Decision Processes 自动文本摘要抽取可以分为抽取式(extractive)和抽象性式(abstractive),抽取式方法将摘要抽取任…

【Uniapp】支付链转二维码

前言 提示:这个是一个很小的项目,大概30分钟就能搞定 实现方式:输入支付代码,存储到对应的数据库表中,二维码访问一个PHP文件通过id来进行重定向,这样就可以使每张二维码都是固定的,替换二维码…

11-矩阵的运算_加减法_数乘_转置

矩阵的运算 加法,数乘,减法,转置 矩阵的加减 矩阵的加法就是矩阵的对应位置相加,减法也是一样就是对应位置相减 数乘 转置 转置的操作和向量是一样的,就是把 aij 变成 aji,把行和列互换一下 对于矩阵而…

【Android常见问题(五)】- Flutter项目性能优化

文章目录 知识回顾前言源码分析1. 渲染过程2. 分析工具3. 优化方法合理使用const关键词合理使用组件管理着色器编译垃圾 知识回顾 前言 项目迭代开发一定程度后,性能优化是重中之重,其中包括了包体积,UI 渲染、交互等多个方面。 通过 Flutt…

Zotero ubuntu2023安装 关联 ubuntu文献翻译

一、准备下载的软件: Zotero | Downloads 1. Zotero-6.0.26_linux-x86_64.tar.bz2 下面是插件 zotfile-5.1.2-fx.xpi zotero-pdf-translate.xpi jasminum-v0.2.6.xpi 2.2.5 Tampermonkey 4.11.crx 所准备的文件,都已经在这个链接的压缩包下面 …

动态内存管理学习分享

动态内存管理学习分享 1. 为什么存在动态内存分配2. 动态内存函数的介绍2.1 [malloc](https://legacy.cplusplus.com/reference/cstdlib/malloc/?kwmalloc)和[free](https://legacy.cplusplus.com/reference/cstdlib/free/?kwfree)2.1.1 实例 2.2 [calloc](https://legacy.cp…

小程序----配置原生内置编译插件支持sass

修改project.config.json配置文件 在 project.config.json 文件中,修改setting 下的 useCompilerPlugins 字段为 ["sass"], 即可开启工具内置的 sass 编译插件。 目前支持三个编译插件:typescript、less、sass 修改之后可以将原.w…

持续贡献开源力量,棱镜七彩加入openKylin

近日,棱镜七彩签署 openKylin 社区 CLA(Contributor License Agreement 贡献者许可协议),正式加入openKylin 开源社区。 棱镜七彩成立于2016年,是一家专注于开源安全、软件供应链安全的创新型科技企业。自成立以来&…

【消息中间件】原生PHP对接Uni H5、APP、微信小程序实时通讯消息服务

文章目录 视频演示效果前言一、分析二、全局注入MQTT连接1.引入库2.写入全局连接代码 二、PHP环境建立总结 视频演示效果 【uniapp】实现买定离手小游戏 前言 Mqtt不同环境问题太多,新手可以看下 《【MQTT】Esp32数据上传采集:最新mqtt插件(支…

使用3ds Max粒子系统创建飞天箭雨特效场景

推荐: NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 1. 设置箭头 步骤 1 打开 3ds Max。 打开 3ds Max 步骤 2 我使用多边形建模技术制作了一个简单的箭头,我将 在教程中使用。.max您可以从 下载部分。 箭头.max 步骤 3 将此箭头重命名为静态…

【计算复杂性理论】证明复杂性(八):命题鸽巢原理(Propositional Pigeonhole Principle)的指数级归结下界

往期文章: 【计算复杂性理论】证明复杂性(Proof Complexity)(一):简介 【计算复杂性理论】证明复杂性(二):归结(Resolution)与扩展归结&#xff…

CentOS 7.6使用yum安装stress,源码安装stree-ng 0.15.06,源码安装sysstat 12.7.2

cat /etc/redhat-release看到操作系统的版本是CentOS Linux release 7.6.1810 (Core),uname -r可以看到内核版本是3.10.0-957.21.3.el7.x86_64 yum install stress sysstat -y安装stress和sysstat。 使用pidstat -u 5 1没有%wait项: 原因是CentOS 7仓…

13.7 CentOS 7 环境下大量创建帐号的方法

13.7.1 一些帐号相关的检查工具 pwck pwck 这个指令在检查 /etc/passwd 这个帐号配置文件内的信息,与实际的主文件夹是否存在等信息, 还可以比对 /etc/passwd /etc/shadow 的信息是否一致,另外,如果 /etc/passwd 内的数据字段错…

用C语言构建一个手写数字识别神经网络

(原理和程序基本框架请参见前一篇 "用C语言构建了一个简单的神经网路") 1.准备训练和测试数据集 从http://yann.lecun.com/exdb/mnist/下载手写数字训练数据集, 包括图像数据train-images-idx3-ubyte.gz 和标签数据 train-labels-idx1-ubyte.…

芯片制造详解.光刻技术与基本流程.学习笔记(四)

本篇文章是看了以下视频后的笔记提炼,欢迎各位观看原视频,这里附上地址 芯片制造详解04:光刻技术与基本流程|国产之路不容易 芯片制造详解.光刻技术与基本流程.学习笔记 四 一、引子二、光刻(1).光掩膜(2).光刻机(3).光刻胶(4).挖…