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

2023-09-15 21:14:22

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

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

Trivy

Trivy介绍

Trivy是不是是一款功能强大的漏洞扫描工具,它的应用场景不仅仅在代码层面,还有镜像层面,而且不仅仅能够扫描Golang,还能扫描Bundler、Composer、Pipenv、Poetry、npm、yarn、Cargo、NuGet、Maven等语言。事实上,Trivy主要是检测:

操作系统包(Alpine、Red Hat Universal Base Image、Red Hat Enterprise Linux、CentOS、Oracle Linux、Debian、Ubuntu、Amazon Linux、openSUSE Leap、SUSE Enterprise Linux、Photon OS 和 Distroless等)和应用程序依赖(Bundler、Composer、Pipenv、Poetry、npm、yarn、Cargo、NuGet、Maven 和 Go等)的漏洞以及配置错误。

Trivy使用场景

事实上,Trivy 很容易使用,只要安装了二进制文件,就可以扫描了。所以一般建议使用在CI的流水线上,而且,由于具有代码扫描和镜像扫描两个能力,所以可以分别在代码合入发起时和接口用例测试前两个步骤进行添加

关于安装:

推荐一个万能的安装方式

1.在https://> github.com/aquasecurity/trivy/releases

找到最新的release包,并下载

2.解压:tar -xzf ./trivy.tar.gz

3.给可执行文件增加权限:chmod +x ./trivy

4.放入Path:mv ./trivy /usr/local/bin/

5.将其他的文件放到一个固定的地方:

在这里插入图片描述

后面会讲到为什么这么做

其他在linux各个版本、mac等环境安装,docker启动等方式参考:

1.https://github.com/aquasecurity/trivy

2.https://aquasecurity.github.io/trivy/v0.45/getting-started/installation/

关于使用:

trivy能够扫描的对象包括

  • Container Image
  • Filesystem
  • Git Repository (remote)
  • Virtual Machine Image
  • Kubernetes
  • AWS

trivy能够发现的问题包括

  • OS packages and software dependencies in use (SBOM)
  • Known vulnerabilities (CVEs)
  • IaC issues and misconfigurations
  • Sensitive information and secrets
  • Software licenses

这次主要介绍的是SBOM。也就是依赖包的漏洞情况

1.基本命令使用:

trivy -h

得到下图:
在这里插入图片描述

具体的介绍可以参考:

https://aquasecurity.github.io/trivy/v0.37/docs/references/cli/sbom/

代码扫描使用

扫描镜像示例:

trivy image 8bcba6ed2605

结果如下:

在这里插入图片描述

因为参数都是默认的,所以用控制台图表的形式展示

扫描文件系统示例:

trivy fs ./

结果如下:

在这里插入图片描述

例如主机、虚拟机映像或解压缩的容器映像文件系统

Git 存储库漏洞扫描示例:

trivy repo https://github.com/test/text.git

结果如下:

在这里插入图片描述

这里可以根据需要增加参数,比如:

只希望扫出来已修复的漏洞:

trivy repo https://github.com/test/text.git --ignore-unfixed

希望扫出来的结果以json形式展示:

trivy repo https://github.com/test/text.git -f json

希望扫出来的结果以网页的形式展示:

trivy repo https://github.com/test/text.git --format template --template "@./trivy/contrib/html.tpl" -o qapm_report.html

这里用到模版,也就前面讲到除了可执行文件之外要保存的文件夹,里面的–template 后面的地址就是官方的模版,这里用到的就是网页模版
在这里插入图片描述

参考资料:

https://www.cnblogs.com/layzer/articles/trivy.html

https://cloud.tencent.com/developer/article/1814500

更多推荐

计算机网络 | socket IPC(本地套接字domain)

欢迎关注博主Mindtechnist或加入【LinuxC/C++/Python社区】一起学习和分享Linux、C、C++、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和技术。socketIPC(本地套接字domain)1.sock

[JavaScript游戏开发] 2D二维地图绘制、人物移动、障碍检测

系列文章目录第一章2D二维地图绘制、人物移动、障碍检测第二章跟随人物二维动态地图绘制、自动寻径、小地图显示(人物红点显示)第三章绘制冰宫宝藏地图、人物鼠标点击移动、障碍检测第四章绘制Q版地图、键盘上下左右地图场景切换文章目录系列文章目录前言一、列计划1.1、目标1.2、步骤二、使用步骤2.1、准备素材(图片):草坪、人

认识 mysql 命令

文章目录1.简介2.选项3.子命令4.小结参考文献1.简介mysql是MySQL的命令行客户端,用于连接到MySQL服务器并执行SQL语句。它支持交互式和非交互式两种使用方式。以交互方式使用时,查询结果以ASCII表格式呈现。当以非交互方式使用时(例如,作为过滤器),结果以制表符分隔的格式显示。可以使用命令选项更改输出

第一个 vue-cli 项目

一、什么是vue-clivue-cli官方提供的一个脚手架,用于快速生成一个vue的项目模板;预先定义好的目录结构及基础代码,就好比咱们在创建Maven项目时可以选择创建一个骨架项目,这个骨架项目就是脚手架,我们的开发更加的快速;1.1主要的功能a、统一的目录结构b、本地调试c、热部署d、单元测试e、集成打包上线1.2

网络安全(黑客)自学

黑客,对很多人来说充满诱惑力。很多人可以发现这门领域如同任何一门领域,越深入越敬畏!学前感言:1.这是一条坚持的道路,三分钟的热情可以放弃往下看了.2.多练多想,不要离开了教程什么都不会了.最好看完教程自己独立完成技术方面的开发3.有时多google,baidu,我们往往都遇不到好心的大神,谁会无聊天天给你做解答.4.

基于SpringBoot的旅游系统

基于SpringBoot+Vue的旅游系统、前后端分离开发语言:Java数据库:MySQL技术:SpringBoot、Vue、MybaitsPlus、ELementUI工具:IDEA/Ecilpse、Navicat、Maven【主要功能】角色:管理员、用户用户:浏览旅游新闻、景区信息、美食信息、旅游线路、在线留言、收藏

《数据结构、算法与应用C++语言描述》使用C++语言实现二维数组矩阵

《数据结构、算法与应用C++语言描述》使用C++语言实现二维数组矩阵行主映射与列主映射如图7-2所示。行主映射:从第一行开始,依次对每一行的索引从左至右连续编号。列主映射:对索引的编号从最左列开始,依次对每一列的索引从上到下连续编号。行主映射的映射函数:列主映射的映射函数:map(i1,i2)=i2u1+i1(u1表示

【深度学习】Pytorch 系列教程(二):PyTorch数据结构:1、Tensor(张量): GPU加速(GPU Acceleration)

目录一、前言二、实验环境三、PyTorch数据结构0、分类1、张量(Tensor)1.维度(Dimensions)2.数据类型(DataTypes)3.GPU加速(GPUAcceleration)一、前言ChatGPT:PyTorch是一个开源的机器学习框架,广泛应用于深度学习领域。它提供了丰富的工具和库,用于构建和训

学会用AI:释放创意,解放双手,工作再多也不慌

随着人工智能(AI)技术日渐成熟,AI在软件开发领域的应用也更加广泛。以前我们谈到AI时,常常会想到复杂的算法和深奥的理论,但如今,AI正在悄然改变着程序员的日常工作方式。从AI代码生成模型到AI编程助手应用,它们不仅仅是一小部分,更是未来程序开发的新趋势。过去,编写代码一直是一项枯燥乏味、需要长时间投入的工作。尤其是

SQL server 创建存储过程

SQLServer如何创建存储过程存储过程:可以理解为完成特定功能的一组SQL语句集,存储在数据库中,经过第一次编译,之后的运行不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来调用存储过程。如何创建存储过程创建存储过程可以有两种方式:一是在SSMS中界面操作创建存储过程,而后修改其中的S

【MediaSoup---源码篇】(二)Router

概述Router:路由对象,类似于房间的功能,保存了流之间的订阅关系,它接收Producer的数据并转发给订阅该Producer的ConsumerRouter继承了以下类:RTC::Transport::Listener,RTC::RtpObserver::Listener,Channel::ChannelSocket

热文推荐