:::success
Trivy 是一种适用于 CI 的简单而全面的容器漏洞扫描程序。软件漏洞是指软件或操作系统中存在的故障、缺陷或弱点。Trivy 检测操作系统包(Alpine、RHEL、CentOS等)和应用程序依赖(Bundler、Composer、npm、yarn等)的漏洞。 Trivy 很容易使用,只要安装二进制文件,就可以扫描了。扫描只需指定容器的镜像名称。与其他镜像扫描工具相比,例如 Clair,Anchore Engine,Quay 相比,Trivy 在准确性、方便性和对 CI 的支持等方面都有着明显的优势。 推荐在 CI 中使用它,在推送到 Container Registry 之前,您可以轻松地扫描本地容器镜像,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 和 Distrioless)、应用程序依赖项(Bundler、Composer、Pipenv、Poetry、npm、yarn 和 Cargo);
- 使用简单,仅仅只需要指定镜像名称;
- 扫描快且无状态,第一次扫描将在 10 秒内完成(取决于您的网络)。随后的扫描将在一秒钟内完成。与其他扫描器在第一次运行时需要很长时间(大约10分钟)来获取漏洞信息,并鼓励您维护持久的漏洞数据库不同,Trivy 是无状态的,不需要维护或准备;
:::
1、安装
- YUM安装
无需安装数据库、库等先决条件(例外情况是需要安装 rpm 以扫描基于 RHEL/CentOS 的图像)。
$ apt-get install trivy
$ yum install trivy
$ brew install trivy
- RPM安装
$ wget https://github.com/aquasecurity/trivy/releases/download/v0.16.0/trivy_0.16.0_Linux-64bit.rpm
$ rpm -ivh trivy_0.16.0_Linux-64bit.rpm
准备中... ################################# [100%]
正在升级/安装...
1:trivy-0:0.16.0-1 ################################# [100%]
$ trivy -v
Version: 0.16.0
2、Trivy命令
1. 扫描文件
$ docker save ruby:2.3.0-alpine3.9 -o ruby-2.3.0.tar
$ trivy --input ruby-2.3.0.tar
2. 按严重程度筛选
$ trivy -–severity HIGH,CRITICAL ruby:2.3.0
3. 按类型筛选
筛选出OS层面的漏洞
$ trivy -–vuln-type os ruby:2.3.0
4. 跳过漏洞数据库的更新
Trivy 在开始运行时总是更新其漏洞数据库。这通常很快,因为这是一个差异更新。但是,如果您甚至想跳过这一步,请使用 -–skip update 选项。
$ trivy -–skip-update python:3.4-alpine3.9
5. 仅下载漏洞数据库
您还可以要求 Trivy 简单地检索漏洞数据库。这对于初始化连续集成系统中的工作人员非常有用。在第一次运行中,-–only update 选项将被忽略。
$ trivy -–download-db-only
$ trivy -–download-db-only -–only-update alpine
6. 忽略未修复的漏洞
默认情况下,Trivy 还会检测未修补/未修复的漏洞。这意味着即使更新了所有包,也无法修复这些漏洞。如果要忽略它们,请使用 -–ignore unfixed 选项。
$ trivy –-ignore-unfixed ruby:2.3.0
7. 指定代码退出
默认情况下,即使检测到漏洞,Trivy 也会以代码 0 退出。如果要使用非零退出代码退出,请使用 -–exit code 选项。此选项对 CI/CD 很有用。在下面的示例中,仅当发现关键漏洞时,测试才会失败。
$ trivy -–exit-code 1 python:3.4-alpine3.9
$ trivy -–exit-code 0 –severity MEDIUM,HIGH ruby:2.3.0
$ trivy -–exit-code 1 –severity CRITICAL ruby:2.3.0
8. 忽略指定漏洞
$ cat .trivyignore
CVE-2018-14618
CVE-2019-1543
$ trivy python:3.4-alpine3.9
9. 指定缓存目录
$ trivy -–cache-dir /tmp/trivy/ python:3.4-alpine3.9
10. 清理缓存
-–clear cache 选项删除镜像缓存。如果更新具有相同 tag 的镜像(例如使用最新 tag 时),此选项非常有用。
$ trivy -–clear-cache
—reset 选项删除所有缓存和数据库。在此之后,需要很长时间才能在本地重建漏洞数据库。
$ trivy -–reset
11. 使用轻量级数据库
$ trivy -–light alpine:3.10
轻量级数据库不包含诸如描述和引用之类的漏洞详细信息。因此,数据库的大小更小,下载速度更快。当您不需要漏洞详细信息时,此选项非常有用,并且适用于CI/CD。网站地址:https://nvd.nist.gov/vuln/search
原文链接:https://cloud.tencent.com/developer/article/1814500
官网链接:https://trivy.dev/