【质量】镜像漏洞扫描工具Trivy原理和操作

article/2025/9/30 13:31:45

目录

Trivy工作原理

cve ID和CVE数据库

Trivy扫描镜像流程

快速入门


Trivy工作原理

cve ID和CVE数据库

个人理解:

当有人发现漏洞时,在社区提交漏洞,然后被cve 官方数据库收录,分配cve id。

漏洞扫描工具扫描镜像内的组件/库的包的版本,然后再去官方数据库检索,当检索到当前镜像内的组件/库的版本 在 官方数据库有漏洞记录,就列出漏洞列表(cve id列表)。

疑问:如果是这样,我还有个疑问,我们都组件和库,如果安装到不是默认的目录,比如/home/mydir它是不是就扫描不到了。

大佬答疑:

原理是端口扫描和漏洞库对比,跟病毒扫描一样,流程:发现并连接目标主机→发送get请求→接受返回数据→根据返回数据对比漏洞库

第一阶段:发现目标主机或网络。
第二阶段:发现目标后进一步搜集目标信息,包括操作系统类型、运行的服务以及服务软件的版本等。如果目标是一个网络,还可以进一步发现该网络的拓扑结构、路由设备以及各主机的信息。
第三阶段:根据搜集到的信息判断或者进一步测试系统是否存在安全漏洞。网络安全漏洞扫描技术包括有 PING 扫射(Ping sweep)、操作系统探测 (Operating system identification)、如何探测访问控制规则 (firewalking)、端口扫描 (Port scan)以及漏洞扫描 (vulnerability scan)等。这些技术在网络安全漏洞扫描的三个阶段中各有体现。
网络安全漏洞扫描技术的两大核心技术就是端口扫描技术和漏洞扫描技术,这两种技术广泛运用于当前较成熟的网络扫描器。

疑问:
1、“发现目标后进一步搜集目标信息”,这样的话目标主机需要安装trivy吗?不然谁给它响应get请求和返回数据?
2、“搜集目标信息,包括操作系统类型、运行的服务以及服务软件的版本”、“根据返回数据对比漏洞库”,请问它是如何知道要搜集哪些信息的,比如它报了我的镜像里面的go的一个net包有风险,要求我升级到最新版本。 我很好奇,它是怎么知道我的服务器上有这个go的net包,并且知道这个包的版本 然后和数据库上的版本进行对比。

回答:

您的两个疑问,其实指向一个问题:该工具的扫描范围以及扫描工具的扫描引擎的能力,如果您学过开发,可以搜一下看它的执行代码是怎样的,否则只需要知道它能支持扫什么对象就可以的。注:trivy是个开源工具:trivy 源码分析(扫描镜像中的漏洞信息)_huzai9527的博客-CSDN博客_trivy源码

疑问:

该工具的扫描范围 是配置的吗?

“搜集目标信息,包括操作系统类型、运行的服务以及服务软件的版本”、“根据返回数据对比漏洞库”,请问它是如何知道要搜集哪些信息的,比如它报了我的镜像里面的go的一个net包有风险,要求我升级到最新版本。 我很好奇,它是怎么知道我的服务器上有这个go的net包,并且知道这个包的版本 然后和数据库上的版本进行对比。

对于开源工具,没有范围一说,可在源代码上开发成您想要的样子。如图是该工具基础架构图,底层是扫描器,中间是下载完该工具就能支持的扫描对象类型。扫描器扫描你的系统漏洞、系统配置、弱密码等系统文件,比对工具中的特征库,特征不相同就产生相应的日志(扫描结果)。

Trivy扫描镜像流程


扫描逻辑其实很简单的,首先需要获取镜像中的各种资产信息(OSPackage等)
然后需要根据(镜像的OS信息 + pkg信息) 查询相关的待选CVE
然后在匹配当前的pkg的版本号,是不是CVE中fixed的版本号,如果不是就记录该CVE
如果想要魔改或者抽取,建议直接看,从image获取pkg信息 以及 根据OS以及pkg查询CVE 这两个函数
摘抄自:https://blog.csdn.net/huzai9527/article/details/125895459

快速入门

https://github.com/aquasecurity/trivy

Trivy 是一种适用于 CI 的简单而全面的容器漏洞扫描程序。软件漏洞是指软件或操作系统中存在的故障、缺陷或弱点。Trivy 检测操作系统包(Alpine、RHEL、CentOS等)和应用程序依赖(Bundler、Composer、npm、yarn等)的漏洞。

Trivy 很容易使用,只要安装二进制文件,就可以扫描了。扫描只需指定容器的镜像名称。与其他镜像扫描工具相比,例如 Clair,Anchore Engine,Quay 相比,Trivy 在准确性、方便性和对 CI 的支持等方面都有着明显的优势。

推荐在 CI 中使用它,在推送到 Container Registry 之前,您可以轻松地扫描本地容器镜像,Trivy具备如下的特征:

  1.  检测面很全,能检测全面的漏洞,操作系统软件包(Alpine、Red Hat Universal Base Image、Red Hat Enterprise Linux、CentOS、Oracle Linux、Debian、Ubuntu、Amazon Linux、openSUSE Leap、SUSE Enterprise Linux、Photon OS 和 Distrioless)、应用程序依赖项(Bundler、Composer、Pipenv、Poetry、npm、yarn 和 Cargo);

  2.  使用简单,仅仅只需要指定镜像名称;

  3.  扫描快且无状态,第一次扫描将在 10 秒内完成(取决于您的网络)。随后的扫描将在一秒钟内完成。与其他扫描器在第一次运行时需要很长时间(大约10分钟)来获取漏洞信息,并鼓励您维护持久的漏洞数据库不同,Trivy 是无状态的,不需要维护或准备;

  4.  易于安装,安装方式:

  1. $ apt-get install trivy 
  2. $ yum install trivy  
  3. $ brew install trivy  

无需安装数据库、库等先决条件(例外情况是需要安装 rpm 以扫描基于 RHEL/CentOS 的图像)。

Trivy 的安装

这里安装 Trivy 的环境是 Centos7,安装的版本是 0.16.0,安装的命令如下:

  1. $ wget https://github.com/aquasecurity/trivy/releases/download/v0.16.0/trivy_0.16.0_Linux-64bit.rpm  
  2. $ rpm -ivh trivy_0.16.0_Linux-64bit.rpm  
  3. 准备中...                          ################################# [100%]  
  4. 正在升级/安装...  
  5.    1:trivy-0:0.16.0-1                 ################################# [100%]  
  6. $ trivy -v  
  7. Version: 0.16.0 

Trivy 的简单使用

下面介绍一些 Trivy 的简单使用的命令和一些测试的结果。主要从几个方面来测试 Trivy 的性能指标:

  •   镜像大小对 Trivy 扫描速度的影响;
  •   扫描的镜像大小和网络流量使用情况的关系;
  •   扫描的结果是否容易解析;

镜像大小对 Trivy 扫描速度的影响

  •   当镜像位于本地,大小 90MB 左右时候的扫描:

执行命令:

  1. $ trivy registry.cn-hangzhou.aliyuncs.com/choerodon-tools/javabase:0.5.0 

扫描结果:

时间:第一次扫描会 DownLoad DB,大概花十分钟以内(14M,看网速),国外的主机 10s 以内,第二次扫描十秒钟以内完成。

  •   当镜像位于本地,大小 408MB 左右时候的扫描:

执行命令:

  1. $ trivy registry.cn-hangzhou.aliyuncs.com/choerodon-tools/mysql:5.7.17 

执行结果:

时间:10秒左右。

  •   当扫描的镜像位于线上,大小为 316M 左右时候的扫描:

执行结果:

时间:20s左右

结论:本地扫描镜像的大小对扫描速度影响不大,线上扫描与本地扫描的方式对扫描的速度影响不大。

扫描的镜像大小和网络流量使用情况的关系

  •   线上扫描之前网络流量使用情况:

扫描镜像大小:316M 左右

  •   扫描之后服务器的磁盘,网络流量使用情况:

结论:接收到的网络流量等于线上镜像的大小,镜像被下载放在服务器磁盘的某处(目前本服务器未装 Docker)。

注:再次全量扫描相同的镜像,接收流量和磁盘使用占比均不再增加。

扫描的结果是否容易解析

  •   使用 JSON 输出扫描的结果:

扫描镜像,openjdk:15-ea-jdk-buster

大小:316M 左右

时间:10s 左右

返回结果:标准的 josn 格式的文件

其他更多可使用命令

 1.  扫描镜像文件

  1. $ docker save ruby:2.3.0-alpine3.9 -o ruby-2.3.0.tar  
  2. $ trivy --input ruby-2.3.0.tar 

  2.  按严重性筛选漏洞:

  1. $ trivy -–severity HIGH,CRITICAL ruby:2.3.0 

  3.  按类型筛选漏洞:

  1. $ trivy -–vuln-type os ruby:2.3.0 

  4.  跳过漏洞数据库的更新

Trivy 在开始运行时总是更新其漏洞数据库。这通常很快,因为这是一个差异更新。但是,如果您甚至想跳过这一步,请使用 -–skip update 选项。

  1. $ trivy -–skip-update python:3.4-alpine3.9 

  5.  仅下载漏洞数据库

您还可以要求 Trivy 简单地检索漏洞数据库。这对于初始化连续集成系统中的工作人员非常有用。在第一次运行中,-–only update 选项将被忽略。

  1. $ trivy -–download-db-only  
  2. $ trivy -–download-db-only -–only-update alpine 

  6.  忽略未修复的漏洞

默认情况下,Trivy 还会检测未修补/未修复的漏洞。这意味着即使更新了所有包,也无法修复这些漏洞。如果要忽略它们,请使用 -–ignore unfixed 选项。

  1. $ trivy –-ignore-unfixed ruby:2.3.0 

  7.  指定退出代码

默认情况下,即使检测到漏洞,Trivy 也会以代码 0 退出。如果要使用非零退出代码退出,请使用 -–exit code 选项。此选项对 CI/CD 很有用。在下面的示例中,仅当发现关键漏洞时,测试才会失败。

  1. $ trivy -–exit-code 1 python:3.4-alpine3.9  
  2. $ trivy -–exit-code 0 –severity MEDIUM,HIGH ruby:2.3.0  
  3. $ trivy -–exit-code 1 –severity CRITICAL ruby:2.3.0 

  8.  忽略指定的漏洞

  1. $ cat .trivyignore  
  2. CVE-2018-14618  
  3. CVE-2019-1543  
  4. $ trivy python:3.4-alpine3.9 

  9.  指定缓存目录:

  1. $ trivy -–cache-dir /tmp/trivy/ python:3.4-alpine3.9 

 10.清除镜像缓存

-–clear cache 选项删除镜像缓存。如果更新具有相同 tag 的镜像(例如使用最新 tag 时),此选项非常有用。

  1. $ trivy -–clear-cache 

--reset 选项删除所有缓存和数据库。在此之后,需要很长时间才能在本地重建漏洞数据库。

  1. $ trivy -–reset 

 11.使用轻量级数据库:

  1. $ trivy -–light alpine:3.10 

轻量级数据库不包含诸如描述和引用之类的漏洞详细信息。因此,数据库的大小更小,下载速度更快。当您不需要漏洞详细信息时,此选项非常有用,并且适用于CI/CD。

要查找其他信息,可以在 NVD 网站上搜索漏洞详细信息。

网站地址:https://nvd.nist.gov/vuln/search

将 Trivy 集成进 CI

Trivy 有对 CI 友好的特点,并且官方也以这种方式使用它,想要集成 CI 只需要一段简单的 Yml 配置文件即可,如果发现漏洞,测试将失败。如果不希望测试失败,请指定 –exit code 0。由于在自动化场景(如CI/CD)中,您只对最终结果感兴趣,而不是对完整的报告感兴趣,因此请使用 –light 标志对此场景进行优化,以获得快速的结果。

集成 GitLab CI 的 Yml 配置可以参考:https://github.com/aquasecurity/trivy#gitlab-ci

使用注意点

  •   国内拉取漏洞数据库慢。
  •   同一台服务器,多个镜像扫描的时候不可并行执行。
  •   可以使用 -–light 使用轻量级数据库来优化执行扫描的效率。 

原文地址:https://mp.weixin.qq.com/s/B_18zvoVobSUNaOIGUpqBg


http://chatgpt.dhexx.cn/article/6pNWwLn9.shtml

相关文章

基于JAVA_Swing的图形化GUI漏洞扫描工具开发的编程思维

文章目录 前言一、工具外观整体设计二、漏洞检测类模块总结2022年6月27日更新此篇 前言 CSDN博客有很长一段时间没有更新,漏洞复现的文章也没有经常发了,原因是因为我这段时间在做一件大事,并且这件大事已经做完啦!!&…

Xray-强大的漏洞扫描工具

Xray是什么? xray (https://github.com/chaitin/xray) 是从长亭洞鉴核心引擎中提取出的社区版漏洞扫描神器,支持主动、被动多种扫描方式,自备盲打平台、可以灵活定义 POC,功能丰富,调用简单,支持 Windows …

Java 漏洞扫描工具之 IDE 插件中强烈建议修复的漏洞

近期有很多同学在找【漏洞扫描工具】,今天来推荐下这款开源组件的漏洞检测工具:使用简单、能力专业、风险展示清晰的 ide 插件“murphysec”。 它可以快速识别项目中使用了哪些存在安全缺陷的开源组件,并帮助一键修复问题。目前支持Java、Ja…

Web安全 Acunetix漏洞扫描工具.

Acunetix 漏洞扫描工具概括 Acunetix 是一个自动化的 Web 应用程序安全测试工具,是通过检查 SQL 注入,跨站点脚本(XSS)和其他可利用漏洞等来审核您的 Web 应用程序。一般来说,Acunetix 能够扫描任何通过网络浏览器访问…

idea漏洞扫描工具SonarLint

目的 在使用持续集成发布时,其中加入了sonar的校验,为了提高sonar校验评分,希望在本地进行体检校验。 方案 在idea中安装代码校验插件,这里使用SonarLint | Code Quality and Code Security starts in your IDE,其他还…

【网安神器篇】——WPScan漏洞扫描工具

作者名:Demo不是emo 主页面链接:主页传送门创作初心:舞台再大,你不上台,永远是观众,没人会关心你努不努力,摔的痛不痛,他们只会看你最后站在什么位置,然后羡慕或鄙夷座右…

基于JavaFx的ThinkPHP漏洞扫描工具---RexHa(Aazhen)的一些说明

文章目录 吹水环节一、工具的功能(新旧版本对比)二、工具的使用与操作2.1 工具新旧版展示2.2 漏洞单个扫描验证功能展示2.2.1 Thinkphp-2.x rce--👌🏻2.2.2 ThinkPHP-5.0.23-RCE--👌🏻2.2.3 ThinkPHP5.0.x-…

漏洞扫描程序

什么是漏洞 漏洞是任何软件中存在的安全漏洞。如果被利用,这些缺陷可能允许攻击者未经授权访问敏感信息,或者通常造成严重破坏,使整个组织面临风险。外部安全研究人员和相关供应商不断审查公开可用的软件以识别漏洞。任何发现的漏洞都会使用…

Web安全 Nessus漏洞扫描工具.

Nessus的概括 Nessus 是世界上很流行的漏洞扫描程序,全世界很多组织都有在使用它。该工具提供完整的电脑漏洞扫描服务,并随时更新其漏洞数据库。Nessus不同于传统的漏洞扫描软件,Nessus可同时在本机或远端上遥控,进行系统的漏洞分…

用于渗透测试的10种漏洞扫描工具

漏洞扫描工具是IT部门中必不可少的工具之一,因为漏洞每天都会出现,给企业带来安全隐患。 漏洞扫描工具有助于检测安全漏洞、应用程序、操作系统、硬件和网络系统。 黑客在不停的寻找漏洞,并且利用它们谋取利益。网络中的漏洞需要及时识别和…

漏洞扫描工具之nessus

5.1 使用Nessus Nessus号称是世界上最流行的漏洞扫描程序,全世界有超过75000个组织在使用它。该工具提供完整的电脑漏洞扫描服务,并随时更新其漏洞数据库。Nessus不同于传统的漏洞扫描软件,Nessus可同时在本机或远端上遥控,进行系…

漏洞扫描工具(一)

FSCAN fscan 是一个内网综合扫描工具,方便一键自动化、全方位漏洞扫描。 它支持主机存活探测、端口扫描、常见服务的爆破、ms17010、redis批量写公钥、计划任务反弹shell、读取win网卡信息、web指纹识别、web漏洞扫描、netbios探测、域控识别等功能。 源码链接&a…

Windows7之天镜漏洞扫描工具安装

01 天镜漏洞扫描工具安装 01 安装天镜 02 升级漏洞 03 重启win7, 多次重复升级过程(1次可能没办法成功) 04 成功之后查看版本

AWVS-Web漏洞扫描工具

一、AWVS简介 Acunetix Web Vulnerability Scanner(简称AWVS)是一个自动化的Web漏洞扫描工具,它可以扫描任何通过Web浏览器访问和遵循HTTP/HTTPS规则的Web站点。 AWVS原理是基于漏洞匹配方法,通过网络爬虫测试你的网站安全&…

如何自己开发漏洞扫描工具

漏洞扫描工具,核心就是扫描器,而扫描器的设计思想是:灵活,易扩展,易修改,灵活的意思就是可单独执行专项漏洞的扫描,也可以批量执行集成的所有漏洞探测模块;易扩展的意思就是&#xf…

漏洞扫描工具openvas

openvas简介 安装环境 安装openvas 一系统简介 OpenVAS是开放式漏洞评估系统,也可以说它是一个包含着相关工具的网络扫描器。其核心部件是一个服务器,包括一套网络漏洞测试程序,可以检测远程系统和应用程序中的安全问题。 用户需要一种自动…

漏洞扫描工具汇总

漏洞扫描器可以快速帮助我们发现漏洞,如SQL注入漏洞、CSRF、缓冲区溢出等。下面就介绍几种常用的漏洞扫描工具。 Fortify 代码审计工具Fortify SCA (Fortify Static Code Analyzer),一款软件代码安全测试工具,提供静态源码扫描能力&#xf…

Kali漏洞扫描工具OpenVas

一、漏洞扫描器 漏洞扫描器通常由两个部分组成 ①进行扫描的引擎部分②包含了世界上大多数系统和软件漏洞特征的特征库 比较优秀的漏洞扫描器: Rapid7 Nexpose:(商用软件)适合较大的网络Tenable Nessus:(商…

10种用于渗透测试的漏洞扫描工具有哪些_渗透测试和漏洞扫描区别

大家好,又见面了,我是你们的朋友全栈 [漏洞]扫描[工具]是IT部门中必不可少的工具之一,因为漏洞每天都会出现,给企业带来安全隐患。 [漏洞扫描工具有助于检测安全漏洞、应用程序、操作系统、硬件和网络系统。 黑客在不停的寻找漏…

5 款漏洞扫描工具:实用、强力、全面(含开源)

目录 引言 5款工具,打包带走吧! 第一款:Trivy 概述 安装 第二款:OpenVAS 概述 安装 第三款:Clair 概述 安装 第四款:Anchore 概述 安装 第五款:Sqlmap 概述 安装 引言 漏洞扫描是一…