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


    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

    本地已经下载了仓库可以使用:
    trivy repo ./ --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 后面的地址就是官方的模版,这里用到的就是网页模版
    在这里插入图片描述

    这里还有一个点:
    trivy可以扫描使用gradle构建项目的依赖情况

    要解释Gradle是什么,首先要搞清楚一个名词——构建工具(Build Tool)。构建工具,顾名思义就是用于构建(Build)的工具,构建包括编译(Compile)、连接(Link)、将代码打包成可用或可执行形式等等。如果不使用构建工具,那么对于开发者而言,下载依赖、将源文件编译成二进制代码、打包等工作都需要一步步地手动完成。但如果使用构建工具,我们只需要编写构建工具的脚本,构建工具就会自动地帮我们完成这些工作。

    如果项目里面有Java工程,Android工程、scale工程等都可能用gradle来构建
    当然,这里扫描的时候需要先进行环境构建:

    一、首先在build.gradle文件中添加:
    在这里插入图片描述

    二、在gradle文件统计目录生成lock文件:
    ./gradle dependencies --write-locks

    三、执行扫描

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

    这样就会扫描出来
    在这里插入图片描述

    参考资料:

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

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

  • 相关阅读:
    STM32驱动AHT10&OLED显示温湿度
    swift的lazy关键字 后面还会补充
    《C和指针》笔记25: 函数原型(函数声明)
    代码质量保障第2讲:单元测试 - 浅谈单元测试
    微信小程序获取蓝牙信标
    华为云云耀云服务器L实例评测|华为云云耀云服务器L实例开展性能评测
    [iOS]-UIKit
    【原创】基于SpringBoot的同城生鲜门店配送系统(SpringBoot配送系统毕业设计)
    单元测试效率优化:为什么要对程序进行测试?测试有什么好处?
    java计算机毕业设计springboot+vue地铁站自动售票系统-火车票售票系统
  • 原文地址:https://blog.csdn.net/killer1989/article/details/132911469