一.系統環境
本文主要基于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采用了以下技術實現漏洞掃描:
Dockerfile解析:Trivy可以根據Dockerfile自動解析出容器鏡像的構建過程,獲取鏡像中包含的軟件包及其版本號。
漏洞數據庫匹配:Trivy將容器鏡像中的軟件包及其版本號與漏洞數據庫進行匹配,找出存在安全漏洞的軟件包。
漏洞詳情展示: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-yinstalldocker-ce
查看docker版本。
[root@etcd2 ~]# docker -v Docker version 20.10.12, build e91ed57
配置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 images REPOSITORY TAG IMAGE ID CREATED SIZE busybox latest ec3f0931a6e6 4 months ago 1.24MB nginx latest 605c77e624dd 5 months ago 141MB redis latest 7614ae9453d1 5 months ago 113MB
下載好trivy安裝包。
[root@etcd2 ~]# ls trivy_0.28.1_Linux-64bit.rpm trivy_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 nginx 2022-06-16T1701.035+0800 INFO Need to update DB 2022-06-16T17:06:01.036+0800 INFO DB Repository: ghcr.io/aquasecurity/trivy-db 2022-06-16T17:06:01.036+0800 INFO Downloading DB... 32.56 MiB / 32.56 MiB [------------------------------------------------------------------------------------------------------------------------------------------------------------] 100.00% 42.01 KiB p/s 13m14ss 2022-06-16T17:19:28.400+0800 WARN Increase --timeout value 2022-06-16T17:19:28.400+0800 FATAL image scan error: scan error: image scan failed: failed analysis: analyze error: timeout: context deadline exceeded
漏洞數據庫下載好之后,就可以檢測鏡像漏洞了,顯示了5個級別的漏洞:
UNKNOWN: 1, LOW: 93, MEDIUM: 43, HIGH: 41, CRITICAL: 24。 [root@etcd2 ~]# trivy image nginx 2022-06-16T1711.533+0800 INFO Detected OS: debian 2022-06-16T1711.533+0800 INFO Detecting Debian vulnerabilities... 2022-06-16T1711.585+0800 INFO Number of language-specific files: 0 nginx (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, do not │ │ │ │ │ │ │ correctly... │ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2011-3374 │ ├─────────────────────┼──────────────────┼──────────┼────────────────────┼─────────────────────────┼──────────────────────────────────────────────────────────────┤ │ bsdutils │ CVE-2021-3995 │ MEDIUM │ 2.36.1-8 │ 2.36.1-8+deb11u1 │ util-linux: Unauthorized unmount of FUSE filesystems │ │ │ │ │ │ │ belonging to users with similar uid... │ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2021-3995 │ ├─────────────────────┼──────────────────┼──────────┼────────────────────┼─────────────────────────┼──────────────────────────────────────────────────────────────┤ ...... ├─────────────────────┼──────────────────┼──────────┼────────────────────┼─────────────────────────┼──────────────────────────────────────────────────────────────┤ │ zlib1g │ CVE-2018-25032 │ HIGH │ 1:1.2.11.dfsg-2 │ 1:1.2.11.dfsg-2+deb11u1 │ zlib: A flaw found in zlib when compressing (not │ │ │ │ │ │ │ decompressing) certain inputs... │ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2018-25032 │ └─────────────────────┴──────────────────┴──────────┴────────────────────┴─────────────────────────┴──────────────────────────────────────────────────────────────┘
trivy緩存漏洞數據庫目錄如下:
[root@etcd2 ~]# ls .cache/trivy/ -lh 總用量 0 drwxr-xr-x 2 root root 43 6月 16 17:19 db drwx------ 2 root root 22 6月 16 17: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 | head 2022-06-16T1718.504+0800 INFO Detected OS: debian 2022-06-16T1718.505+0800 INFO Detecting Debian vulnerabilities... 2022-06-16T1718.520+0800 INFO Number of language-specific files: 0 redis (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 | head 2022-06-16T1735.172+0800 INFO Detected OS: debian 2022-06-16T1735.172+0800 INFO Detecting Debian vulnerabilities... 2022-06-16T1735.189+0800 INFO Number of language-specific files: 0 nginx (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~]#trivyimage-ftablenginx:1.16
Trivy 漏洞報告格式也可以設置為JSON格式(-f), -o指定輸出打印到文件里。
[root@etcd2~]#trivyimage-fjson-oresults.jsonnginx:1.16
六.總結
Trivy是一款功能強大、易于使用的容器鏡像安全漏洞掃描工具。通過在docker環境下的實踐,我們了解到Trivy可以有效地檢測容器鏡像中的安全漏洞,幫助我們保障應用的安全性。
致力于一條龍式的為您解決問題
鏈接:https://www.cnblogs.com/renshengdezheli/p/18261192
-
Linux
+關注
關注
87文章
11351瀏覽量
210497 -
服務器
+關注
關注
12文章
9331瀏覽量
86131 -
操作系統
+關注
關注
37文章
6899瀏覽量
123804
原文標題:五.利用trivy檢測容器鏡像的安全性
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
開發人員和嵌入式系統設計人員如何使用JWT關閉物聯網設備的安全漏洞?
軟件安全漏洞的靜態檢測技術
Linux發現更多安全漏洞LHA 與imlib受到波及
Intel發布補丁 修復vPro安全漏洞
![Intel發布補丁 修復vPro<b class='flag-5'>安全漏洞</b>](https://file1.elecfans.com//web2/M00/A5/68/wKgZomUMOE-AKUVTAAAe5NJXM4A977.jpg)
分解漏洞掃描,什么是漏洞掃描?
![分解<b class='flag-5'>漏洞</b><b class='flag-5'>掃描</b>,什么是<b class='flag-5'>漏洞</b><b class='flag-5'>掃描</b>?](https://file.elecfans.com/web2/M00/70/1D/pYYBAGNGfMGAcpoVAABgIKms0Hg302.png)
評論