一.系統(tǒng)環(huán)境
本文主要基于Docker version 20.10.14和Linux操作系統(tǒng)Ubuntu 18.04。
服務(wù)器版本 | docker軟件版本 | CPU架構(gòu) |
---|---|---|
Ubuntu 18.04.5 LTS | Docker version 20.10.14 | x86_64 |
二.前言
隨著容器技術(shù)的普及,容器鏡像的安全性問(wèn)題日益凸顯。容器鏡像中可能存在的漏洞會(huì)被攻擊者利用,從而導(dǎo)致整個(gè)應(yīng)用的安全風(fēng)險(xiǎn)。因此,對(duì)容器鏡像進(jìn)行安全漏洞掃描成為了必要的需求。Trivy是一款由aquasecurity團(tuán)隊(duì)開(kāi)發(fā)的容器鏡像安全漏洞掃描工具,支持Docker、Kubernetes等多種容器技術(shù),具有易于使用、支持多種漏洞數(shù)據(jù)庫(kù)等特點(diǎn)。
三.Trivy簡(jiǎn)介
Trivy是一款全面且多功能的安全掃描程序。Trivy 具有查找安全問(wèn)題的掃描器。Trivy官網(wǎng)為:https://github.com/aquasecurity/trivy ,Trivy軟件包下載地址為:https://github.com/aquasecurity/trivy/releases/。
Trivy 可以掃描的對(duì)象為:
容器鏡像;
文件系統(tǒng);
Git Repository (遠(yuǎn)程);
虛擬機(jī)映像;
Kubernetes;
AWS系統(tǒng)。
Trivy能夠發(fā)現(xiàn)的問(wèn)題有:
正在使用的操作系統(tǒng)包和軟件依賴項(xiàng) (SBOM);
已知漏洞 (CVE);
IaC 問(wèn)題和錯(cuò)誤配置;
敏感信息和機(jī)密;
軟件許可證。
四.Trivy漏洞掃描原理
Trivy通過(guò)分析容器鏡像的文件系統(tǒng),識(shí)別出其中的軟件包及其版本號(hào),然后與漏洞數(shù)據(jù)庫(kù)進(jìn)行匹配,找出存在安全漏洞的軟件包。Trivy采用了以下技術(shù)實(shí)現(xiàn)漏洞掃描:
Dockerfile解析:Trivy可以根據(jù)Dockerfile自動(dòng)解析出容器鏡像的構(gòu)建過(guò)程,獲取鏡像中包含的軟件包及其版本號(hào)。
漏洞數(shù)據(jù)庫(kù)匹配:Trivy將容器鏡像中的軟件包及其版本號(hào)與漏洞數(shù)據(jù)庫(kù)進(jìn)行匹配,找出存在安全漏洞的軟件包。
漏洞詳情展示:Trivy提供了詳細(xì)的漏洞信息,包括漏洞描述、影響版本、修復(fù)建議等,幫助用戶了解漏洞風(fēng)險(xiǎn)。
CVE全稱是Common Vulnerabilities and Exposures,即通用漏洞披露,它是MITRE公司維護(hù)和更新的安全漏洞列表,列表中的每個(gè)條目都會(huì)有一個(gè)唯一的CVE編號(hào),即CVE ID,供安全研究員和受攻擊的軟件供應(yīng)商使用,以便確定和回應(yīng)安全漏洞。CVE條目包含了與CVE ID相關(guān)的漏洞的描述性數(shù)據(jù)(即簡(jiǎn)要描述和至少一個(gè)參考)。當(dāng)前CVE累計(jì)收錄了19萬(wàn)+個(gè)安全漏洞。
Trivy漏洞掃描原理簡(jiǎn)單來(lái)說(shuō)就是:Trivy下載漏洞數(shù)據(jù)庫(kù)CVE到本地,Trivy本地?cái)?shù)據(jù)庫(kù)記錄了常見(jiàn)的漏洞信息,Trivy讀取鏡像里的程序和本地?cái)?shù)據(jù)庫(kù)進(jìn)行比對(duì),確定鏡像是否存在漏洞。
五.利用trivy檢測(cè)容器鏡像的安全性
首先需要安裝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" ] }
提前下載好鏡像做準(zhǔn)備,我們下載了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
現(xiàn)在trivy就安裝好了。
[root@etcd2 ~]# which trivy /usr/local/bin/trivy
查看幫助:trivy --help。
[root@etcd2 ~]# trivy --help
查看trivy掃描鏡像的語(yǔ)法:
[root@etcd2 ~]# trivy image --help
trivy image nginx 表示檢測(cè)nginx鏡像的漏洞,第一次檢測(cè)漏洞會(huì)下載漏洞數(shù)據(jù)庫(kù),漏洞數(shù)據(jù)庫(kù)目錄默認(rèn)是~/.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
漏洞數(shù)據(jù)庫(kù)下載好之后,就可以檢測(cè)鏡像漏洞了,顯示了5個(gè)級(jí)別的漏洞:
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緩存漏洞數(shù)據(jù)庫(kù)目錄如下:
[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會(huì)下載漏洞數(shù)據(jù)庫(kù)到本地,有時(shí)候下載會(huì)很慢,可以直接把已經(jīng)安裝好的~/.cache/trivy文件夾直接打包,放到新安裝的機(jī)器上,就可以直接使用trivy了。
Trivy開(kāi)始運(yùn)行時(shí)每 12 小時(shí)下載一次漏洞數(shù)據(jù)庫(kù)。這通常很快,因?yàn)閿?shù)據(jù)庫(kù)的大小只有 10~30MB。但是,如果您甚至想跳過(guò)它,請(qǐng)使用該--skip-db-update選項(xiàng):trivy image --skip-db-update nginx:1.16。
trivy只下載漏洞數(shù)據(jù)庫(kù)語(yǔ)法為:
[root@etcd2 ~]# trivy image --download-db-only
檢測(cè)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 │
檢測(cè)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 漏洞報(bào)告格式默認(rèn)是表格。
[root@etcd2~]#trivyimage-ftablenginx:1.16
Trivy 漏洞報(bào)告格式也可以設(shè)置為JSON格式(-f), -o指定輸出打印到文件里。
[root@etcd2~]#trivyimage-fjson-oresults.jsonnginx:1.16
六.總結(jié)
Trivy是一款功能強(qiáng)大、易于使用的容器鏡像安全漏洞掃描工具。通過(guò)在docker環(huán)境下的實(shí)踐,我們了解到Trivy可以有效地檢測(cè)容器鏡像中的安全漏洞,幫助我們保障應(yīng)用的安全性。
致力于一條龍式的為您解決問(wèn)題
鏈接:https://www.cnblogs.com/renshengdezheli/p/18261192
-
Linux
+關(guān)注
關(guān)注
87文章
11508瀏覽量
213654 -
服務(wù)器
+關(guān)注
關(guān)注
13文章
9784瀏覽量
87887 -
操作系統(tǒng)
+關(guān)注
關(guān)注
37文章
7140瀏覽量
125527
原文標(biāo)題:五.利用trivy檢測(cè)容器鏡像的安全性
文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
開(kāi)發(fā)人員和嵌入式系統(tǒng)設(shè)計(jì)人員如何使用JWT關(guān)閉物聯(lián)網(wǎng)設(shè)備的安全漏洞?
軟件安全漏洞的靜態(tài)檢測(cè)技術(shù)
Linux發(fā)現(xiàn)更多安全漏洞LHA 與imlib受到波及
Intel發(fā)布補(bǔ)丁 修復(fù)vPro安全漏洞

基于區(qū)塊鏈的網(wǎng)絡(luò)安全漏洞檢測(cè)系統(tǒng)
基于循環(huán)神經(jīng)網(wǎng)絡(luò)的Modbus/TCP安全漏洞測(cè)試
分解漏洞掃描,什么是漏洞掃描?

Acunetix Web Vulnerability Scanner(AWVS)工具簡(jiǎn)介
Trivy:面向鏡像的漏洞檢測(cè)工具

常見(jiàn)的漏洞掃描工具

?這10款容器安全工具特點(diǎn)分析

如何消除內(nèi)存安全漏洞

評(píng)論