trivy

一、概要

Trivy(tri发音像trigger,vy发音像envy)是一个简单而全面的容器漏洞扫描程序。Trivy可检测操作系统软件包(Alpine,RHEL,CentOS等)和应用程序依赖项(Bundler,Composer,npm,yarn等)的漏洞。此外,Trivy也非常易于使用。只需安装二进制文件即可执行扫描,你只需指定扫描容器的镜像名称即可。本文主要介绍镜像扫描。

二、Trivy 检测两种类型的安全问题:

  • 漏洞
  • 配置错误:提供内置策略来检测Docker、Kubernetes和Terraform中的配置问题。

三、Trivy 可以扫描以下几种对象:

  • 容器镜像
  • 文件系统
  • Git仓库

四、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 和 Distroless)
  • 特定语言包:(Bundler、Composer、Pipenv、Poetry、npm、yarn、Cargo、NuGet、Maven 和 Go)

2、开箱即用提供了各种各样的内置策略

  • Kubernetes
  • Docker
  • Terraform 支持自定义策略

3、简单的

仅指定镜像名称、包含IaC配置的目录或工件名称

4、快速的

第一次扫描将在 10 秒内完成(取决于您的网络)。随后的扫描将在几秒钟内完成。 与其他扫描程序不同,Trivy是无状态的,无需维护或准备,在第一次运行时需要花费很长时间(约10分钟)获取漏洞信息。

六、简易安装:

apt-get install,yum install并且brew install,无需安装数据库

1、centos安装:

rpm -ivh https://github.com/aquasecurity/trivy/releases/download/v0.19.2/trivy_0.19.2_Linux-64bit.rpm

安装完成后,进行镜像扫描

 trivy image nginx

2、docker安装

docker run --rm -v [YOUR_CACHE_DIR]:/root/.cache/ aquasec/trivy:0.19.2 [YOUR_IMAGE_NAME]

对镜像nginx扫描:

docker run --rm -v /var/run/docker.sock:/var/run/docker.sock     -v $HOME/Library/Caches:/root/.cache/ aquasec/trivy:0.19.2 --format json nginx 

七、快速开始

说明:无论是命令行扫描,还是用容器扫描,格式相似,所以下面以命令行为主进行介绍。

1、常用命令选项介绍:

--format 指定扫描结果输出格式,后面接table, json, template,默认为table,可以通过自定义变量[$TRIVY_FORMAT]指定默认输出格式;

--severity 扫描时显示的漏洞严重程度(逗号分隔),默认为"UNKNOWN,LOW,MEDIUM,HIGH,CRITICAL",可以通过自定义变[$TRIVY_SEVERITY]指定;

--output 扫描结果存储到文件,可以通过TRIVY_OUTPUT指定输出文件名

--skip-db-update, --skip-update 跳过更新漏洞数据库,默认为false,可以通过[$TRIVY_SKIP_UPDATE, $TRIVY_SKIP_DB_UPDATE]定义

--download-db-only 仅下载或是更新数据漏洞,不进行扫描

2、使用

(1)只需指定镜像名称和tag,

trivy image [YOUR_IMAGE_NAME]

(2)指定输出格式

trivy image nginx --format json
或者:
export TRIVY_FORMAT="json"
trivy image nginx  

(3)指定显示漏洞级别

trivy image nginx --severity HIGH,CRITICAL
或者
export TRIVY_SEVERITY="HIGH,CRITICAL"
trivy image nginx 

(4)扫描结果存储到文件

trivy image nginx --output test.file
或者
export TRIVY_OUTPUT="test.file"
trivy image nginx 

(5)跳过更新漏洞数据库

trivy image --skip-db-update=true  nginx 
或者
trivy image --skip-update=true  nginx

或者

export TRIVY_SKIP_UPDATE="true"
trivy image nginx
或者
export RIVY_SKIP_DB_UPDATE="true"
trivy image nginx

(6)下载漏洞库

trivy  --download-db-only 

八、其他

其他相关资料,请查看官网。

https://aquasecurity.github.io/trivy/v0.19.2/