容器映象安全:安全漏洞掃描神器Trivy

一.系統環境

本文主要基於Docker version 20.10.14和Linux作業系統Ubuntu 18.04。
伺服器版本 docker軟體版本 CPU架構
Ubuntu 18.04.5 LTS Docker version 20.10.14 x86_64

二.前言

隨著容器技術的普及,容器映象的安全性問題日益凸顯。容器映象中可能存在的漏洞會被攻擊者利用,從而導致整個應用的安全風險。因此,對容器映象進行安全漏洞掃描成為了必要的需求。Trivy是一款由aquasecurity團隊開發的容器映象安全漏洞掃描工具,支援Docker、Kubernetes等多種容器技術,具有易於使用、支援多種漏洞資料庫等特點。

三.Trivy簡介

Trivy是一款全面且多功能的安全掃描程式。Trivy 具有查詢安全問題的掃描器。Trivy官網為:https://github.com/aquasecurity/trivy ,Trivy軟體包下載地址為:https://github.com/aquasecurity/trivy/releases/ 。

Trivy 可以掃描的物件為:
  • 容器映象;
  • 檔案系統;
  • Git Repository (遠端);
  • 虛擬機器映像;
  • Kubernetes;
  • AWS系統。
Trivy能夠發現的問題有:
  • 正在使用的作業系統包和軟體依賴項 (SBOM);
  • 已知漏洞 (CVE);
  • IaC 問題和錯誤配置;
  • 敏感資訊和機密;
  • 軟體許可證。

四.Trivy漏洞掃描原理

Trivy透過分析容器映象的檔案系統,識別出其中的軟體包及其版本號,然後與漏洞資料庫進行匹配,找出存在安全漏洞的軟體包。Trivy採用了以下技術實現漏洞掃描:
  1. Dockerfile解析:Trivy可以根據Dockerfile自動解析出容器映象的構建過程,獲取映象中包含的軟體包及其版本號。
  2. 漏洞資料庫匹配:Trivy將容器映象中的軟體包及其版本號與漏洞資料庫進行匹配,找出存在安全漏洞的軟體包。
  3. 漏洞詳情展示:Trivy提供了詳細的漏洞資訊,包括漏洞描述、影響版本、修復建議等,幫助使用者瞭解漏洞風險。
CVE全稱是Common Vulnerabilities and Exposures,即通用漏洞披露,它是MITRE公司維護和更新的安全漏洞列表,列表中的每個條目都會有一個唯一的CVE編號,即CVE ID,供安全研究員和受攻擊的軟體供應商使用,以便確定和回應安全漏洞。CVE條目包含了與CVE ID相關的漏洞的描述性資料(即簡要描述和至少一個參考)。當前CVE累計收錄了19萬+個安全漏洞。
Trivy漏洞掃描原理簡單來說就是:Trivy下載漏洞資料庫CVE到本地,Trivy本地資料庫記錄了常見的漏洞資訊,Trivy讀取映象裡的程式和本地資料庫進行比對,確定映象是否存在漏洞

五.利用trivy檢測容器映象的安全性

首先需要安裝docker。
[root@etcd2 ~]# yum -y install docker-ce
檢視docker版本。
[root@etcd2 ~]# docker-vDockerversion 20.10.12, builde91ed57
配置docker映象加速器。
[root@etcd2 ~]# cat /etc/docker/daemon.json{"registry-mirrors": ["https://frz7i079.mirror.aliyuncs.com" ]}


提前下載好映象做準備,我們下載了redis,busybox,nginx映象。
[root@etcd2 ~]# docker pull redis[root@etcd2 ~]# docker pull busybox[root@etcd2 ~]# docker pull nginx[root@etcd2 ~]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEbusybox latest ec3f0931a6e6 4 months ago 1.24MBnginx latest 605c77e624dd 5 months ago 141MBredis latest 7614ae9453d1 5 months ago 113MB
下載好trivy安裝包。
[root@etcd2 ~]# lstrivy_0.28.1_Linux-64bit.rpmtrivy_0.28.1_Linux-64bit.rpm
安裝trivy。
[root@etcd2 ~]yum-yinstalltrivy_0.28.1_Linux-64bit.rpm
現在trivy就安裝好了。
[root@etcd2 ~]# which trivy/usr/local/bin/trivy
檢視幫助:trivy –help。
[root@etcd2 ~]# trivy --help


檢視trivy掃描映象的語法:
[root@etcd2 ~]# trivy image --help


trivy image nginx 表示檢測nginx映象的漏洞,第一次檢測漏洞會下載漏洞資料庫,漏洞資料庫目錄預設是~/.cache/trivy 。
[root@etcd2 ~]# trivy image nginx2022-06-16T17:06:01.035+0800 INFO Need to update DB2022-06-16T17:06:01.036+0800 INFO DB Repository: ghcr.io/aquasecurity/trivy-db2022-06-16T17:06:01.036+0800 INFO Downloading DB...32.56 MiB / 32.56 MiB [------------------------------------------------------------------------------------------------------------------------------------------------------------] 100.00% 42.01 KiB p/s 13m14ss2022-06-16T17:19:28.400+0800 WARN Increase --timeout value2022-06-16T17:19:28.400+0800 FATAL image scanerror: scanerror: image scanfailed: failed analysis: analyzeerror: timeout: context deadline exceeded
漏洞資料庫下載好之後,就可以檢測映象漏洞了,顯示了5個級別的漏洞:
UNKNOWN: 1, LOW: 93, MEDIUM: 43, HIGH: 41, CRITICAL: 24。[root@etcd2 ~]# trivy image nginx2022-06-16T17:23:11.533+0800 INFO Detected OS: debian2022-06-16T17:23:11.533+0800 INFO Detecting Debian vulnerabilities...2022-06-16T17:23:11.585+0800 INFO Number of language-specific files: 0nginx (debian 11.2)Total: 202 (UNKNOWN: 1, LOW: 93, MEDIUM: 43, HIGH: 41, CRITICAL: 24)┌─────────────────────┬──────────────────┬──────────┬────────────────────┬─────────────────────────┬──────────────────────────────────────────────────────────────┐│ Library │ Vulnerability │ Severity │ Installed Version │ Fixed Version │ Title │├─────────────────────┼──────────────────┼──────────┼────────────────────┼─────────────────────────┼──────────────────────────────────────────────────────────────┤│ apt │ CVE-2011-3374 │ LOW │ 2.2.4 │ │ It was found that apt-key in apt, all versions, donot│ │ │ │ │ │ correctly... ││ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2011-3374├─────────────────────┼──────────────────┼──────────┼────────────────────┼─────────────────────────┼──────────────────────────────────────────────────────────────┤│ bsdutils │ CVE-2021-3995MEDIUM2.36.1-82.36.1-8+deb11u1 │ util-linux: Unauthorized unmount of FUSE filesystems ││ │ │ │ │ │ belonging touserswith similar uid... ││ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2021-3995├─────────────────────┼──────────────────┼──────────┼────────────────────┼─────────────────────────┼──────────────────────────────────────────────────────────────┤......├─────────────────────┼──────────────────┼──────────┼────────────────────┼─────────────────────────┼──────────────────────────────────────────────────────────────┤│ zlib1g │ CVE-2018-25032HIGH1:1.2.11.dfsg-21:1.2.11.dfsg-2+deb11u1 │ zlib: A flaw foundin zlib when compressing (not│ │ │ │ │ │ decompressing) certain inputs... ││ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2018-25032└─────────────────────┴──────────────────┴──────────┴────────────────────┴─────────────────────────┴──────────────────────────────────────────────────────────────┘
trivy快取漏洞資料庫目錄如下:
[root@etcd2 ~]# ls .cache/trivy/ -lh總用量 0drwxr-xr-x 2 root root 4361617:19 dbdrwx------ 2 root root 2261617:06 fanal
trivy會下載漏洞資料庫到本地,有時候下載會很慢,可以直接把已經安裝好的~/.cache/trivy資料夾直接打包,放到新安裝的機器上,就可以直接使用trivy了。
Trivy開始執行時每 12 小時下載一次漏洞資料庫。這通常很快,因為資料庫的大小隻有 10~30MB。但是,如果您甚至想跳過它,請使用該–skip-db-update選項:trivy image –skip-db-update nginx:1.16。
trivy只下載漏洞資料庫語法為:
[

root@etcd2 ~

]# trivy image --download-db-only

檢測redis映象漏洞。
[root@etcd2 ~]# trivy image redis | head2022-06-16T17:38:18.504+0800 INFO Detected OS: debian2022-06-16T17:38:18.505+0800 INFO Detecting Debian vulnerabilities...2022-06-16T17:38:18.520+0800 INFO Number of language-specific files: 0redis (debian 11.2)===================Total: 108 (UNKNOWN: 0, LOW: 63, MEDIUM: 18, HIGH: 16, CRITICAL: 11)┌──────────────────┬──────────────────┬──────────┬───────────────────┬─────────────────────────┬──────────────────────────────────────────────────────────────┐│ Library │ Vulnerability │ Severity │ Installed Version │ Fixed Version │ Title │
檢測nginx映象漏洞。
[root@etcd2 ~]# trivy image nginx | head2022-06-16T17:38:35.172+0800 INFO Detected OS: debian2022-06-16T17:38:35.172+0800 INFO Detecting Debian vulnerabilities...2022-06-16T17:38:35.189+0800 INFO Number of language-specific files: 0nginx (debian 11.2)===================Total: 202 (UNKNOWN: 1, LOW: 93, MEDIUM: 43, HIGH: 41, CRITICAL: 24)┌─────────────────────┬──────────────────┬──────────┬────────────────────┬─────────────────────────┬──────────────────────────────────────────────────────────────┐│ Library │ Vulnerability │ Severity │ Installed Version │ Fixed Version │ Title │
注意Trivy 漏洞報告格式預設是表格。
[root@etcd2 ~]# trivy image -f table nginx:1.16
Trivy 漏洞報告格式也可以設定為JSON格式(-f), -o指定輸出列印到檔案裡。
[root@etcd2 ~]trivyimage-fjson-oresults.jsonnginx:1.16
六.總結
Trivy是一款功能強大、易於使用的容器映象安全漏洞掃描工具。透過在docker環境下的實踐,我們瞭解到Trivy可以有效地檢測容器映象中的安全漏洞,幫助我們保障應用的安全性。
致力於一條龍式的為您解決問題
連結:https://www.cnblogs.com/renshengdezheli/p/18261192
                                                              (版權歸原作者所有,侵刪)

文末福利

即將步入2025年,不少小夥伴在考慮來年的工作方向。

僅目前來說,傳統運維衝擊年薪30W+的轉型方向就是SRE&DevOps崗位。

為了幫助大家早日擺脫繁瑣的基層運維工作,給大家整理了一套【2024最新運維資料高階運維工程師必備技能資料包(文末一鍵領取),內容有多詳實豐富看下圖!
共有 20 個模組
1.38張最全工程師技能圖譜
2.面試大禮包
3.Linux書籍
4.go書籍
······
6.自動化運維工具
18.訊息佇列合集
 以上所有資料獲取請掃碼
識別上方二維碼
備註:2024最新運維資料
100%免費領取
(是掃碼領取,不是在公眾號後臺回覆,別看錯了哦)


相關文章