go 中的代码漏洞检查

chatgpt/2023/9/24 1:40:09

前言

不知道大家在开发 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.exyb.cn/news/show-5313018.html

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

关于会议OA需求分析与开发功能设计

前言:现如今,企业在会议管理方面对OA系统的需求越来越高。因为会议是企业内部沟通和协作的重要环节,一个高效的会议管理系统可以帮助企业提升会议效率、降低成本,并且提高内部信息共享的效果。 目录 一,以下是OA系统在…

Ubuntu的安装与部分配置

该教程使用的虚拟机是virtuabox,镜像源的版本是ubuntu20.04.5桌面版 可通过下面的链接在Ubuntu官网下载:Alternative downloads | Ubuntu 也可直接通过下面的链接进入百度网盘下载【有Ubuntu20.04.5与hadoop3.3.2以及jdk1.8.0_162,该篇需要使…

计算机的大小端模式

计算机的大小端模式 大端/小端字节序字节序转换函数判断Linux字节序的方法string有字节序的说法吗64位系统和32位系统的区别 大端/小端字节序 计算机硬件有两种储存数据的方式:大端字节序(big endian)和小端字节序(little endian…

02-常见函数的求导公式

求导公式 基本函数四则运算复合函数 根据三种公式组合就可以求出任何公式的导数值 基本函数 幂函数 (Power function): ( x n ) ′ n ⋅ x n − 1 (x^n) n \cdot x^{n-1} (xn)′n⋅xn−1 指数函数 (Exponential function): ( e x ) ′ e x (e^x) e^x (ex)′ex 以a为底…

一个女程序员的成长之路

2013年大学毕业了,带着迷茫与好玩,我还年轻的心态,开始在郑州寻觅工作机会,最后很荣幸的在一家小公司入职了,工作的内容是给种植大棚的用户打电话,推销农药。每天就是在网上各种农业平台上面找号码&#xf…

C++之std::function总结(一百六十七)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

Android中图片过大导致OOM的问题

Android中图片过大导致OOM的问题 在Android开发中,图片过大是导致OOM(Out of Memory)问题的常见原因之一。OOM是指当应用程序占用的内存超过了设备可用的内存限制时,系统会抛出OutOfMemoryError异常。图片过大会占用大量内存&…

【MATLAB第62期】基于MATLAB的PSO-NN、BBO-NN、前馈神经网络NN回归预测对比

【MATLAB第62期】基于MATLAB的PSO-NN、BBO-NN、前馈神经网络NN回归预测对比 一、数据设置 1、7输入1输出 2、103行样本 3、80个训练样本,23个测试样本 二、效果展示 NN训练集数据的R2为:0.73013 NN测试集数据的R2为:0.23848 NN训练集数据的…
推荐文章