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…

1 MobileHomeTopicApplication

目录 1 OrderApplication 1.1 引用文件 1.2 #region 字段 1.3 #region 属性 OrderApplication 引用文件using System; using

react 父子组件通信 基础

父传子 使用props import { useState } from reactfunction Parent {const [message, setMessage] useState(react)return (<><SonA message{message} /><SonB message{message} /></>) }function SonA(props) {return <div>子组件A: {props.…

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

文章目录 ⭐前言⭐微软三方登录流程&#x1f496; web站点获取微软账号流程&#x1f496; node封装微软登录接口&#x1f496; webapp 自定义code换token&#x1f496; 调用 Microsoft Graph API&#x1f496; 前端唤醒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)&#xff0c;抽取式方法将摘要抽取任…

【Uniapp】支付链转二维码

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

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

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

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

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

Zotero ubuntu2023安装 关联 ubuntu文献翻译

一、准备下载的软件&#xff1a; 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 所准备的文件&#xff0c;都已经在这个链接的压缩包下面 …

动态内存管理学习分享

动态内存管理学习分享 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 文件中&#xff0c;修改setting 下的 useCompilerPlugins 字段为 ["sass"]&#xff0c; 即可开启工具内置的 sass 编译插件。 目前支持三个编译插件&#xff1a;typescript、less、sass 修改之后可以将原.w…

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

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

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

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

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

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

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

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

大众安徽内推

大众汽车&#xff08;安徽&#xff09;有限公司是大众汽车集团在中国第一家专注于新能源汽车的合资企业&#xff0c;是集团在中国首家拥有全面运营管理权的合资企业&#xff0c;担负着产品研发及数字化研发的重任&#xff0c;将成为集团全球电动出行中心之一。 VW Anhui Offic…

Promise.all和Promise.race

Promise.all返回结果是返回的第一个失败的Promise,如果所有都成功那么then函数中就会拿到一个数组,如果失败那么就会返回一个失败的Promise Promise.race,谁最快我就抛出谁的Promise,不论成功失败。,Promise.race只返回失败跑的快的结果 <script>let p1 Promise.resolv…