Hari ini Anda akan belajar cara memindai image Docker Container.
Pengantar
Sepele (tri diucapkan seperti tri ger, vy diucapkan seperti envy ) adalah pemindai sederhana dan komprehensif untuk kerentanan dalam gambar kontainer, sistem file, dan repositori Git, serta untuk masalah konfigurasi. Trivy mendeteksi kerentanan paket OS (Alpine, RHEL, CentOS, dll.) dan paket khusus bahasa (Bundler, Composer, npm, yarn, dll.).
Selain itu, Trivy memindai file Infrastruktur sebagai Kode (IaC) seperti Terraform, Dockerfile, dan Kubernetes, untuk mendeteksi potensi masalah konfigurasi yang membuat penerapan Anda berisiko diserang. Trivy mudah digunakan. Cukup instal biner dan Anda siap memindai.
Fitur
- Deteksi kerentanan yang komprehensif
- Paket OS (Alpine Linux, Red Hat Universal Base Image, Red Hat Enterprise Linux, CentOS, AlmaLinux, Rocky Linux, CBL-Mariner, Oracle Linux, Debian, Ubuntu, Amazon Linux, openSUSE Leap, SUSE Enterprise Linux, Photon OS dan Tanpa Distro)
- Paket khusus bahasa (Bundler, Komposer, Pipenv, Puisi, npm, benang, Kargo, NuGet, Maven, dan Go)
- Deteksi kesalahan konfigurasi (pemindaian IaC)
- Berbagai macam kebijakan bawaan disediakan out of the box
- Kubernetes, Docker, Terraform, dan lainnya segera hadir
- Mendukung kebijakan khusus
- Berbagai macam kebijakan bawaan disediakan out of the box
- Akurasi tinggi
- Mendukung banyak target
- gambar kontainer, sistem file lokal, dan repositori git jarak jauh
Pemasangan
Di CentOS
- Instal Trivy di CentOS dari repo-nya, jadi tambahkan repo trivy lalu instal sebagai berikut:
echo -e "\n[trivy]\nname=Trivy repository\nbaseurl=https://aquasecurity.github.io/trivy-repo/rpm/releases/\$releasever/\$basearch/\ngpgcheck=0\nenabled=1" | sudo tee -a /etc/yum.repos.d/kubernetes.repo
sudo yum -y install trivy
- Atau instal trivy dari sumber RPM-nya, Anda harus mendapatkan rilis Trivy terbaru lalu jalankan :
wget https://github.com/aquasecurity/trivy/releases/download/v0.23.0/trivy_0.23.0_Linux-64bit.rpm
sudo yum localinstall ./trivy_0.23.0_Linux-64bit.rpm
Di Ubuntu
- Dari repositori
sudo apt-get install wget apt-transport-https gnupg lsb-release
wget -qO - https://aquasecurity.github.io/trivy-repo/deb/public.key | sudo apt-key add -
echo deb https://aquasecurity.github.io/trivy-repo/deb $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/trivy.list
sudo apt-get update
sudo apt-get install trivy
- Dari sumber Debian, Anda juga perlu mendapatkan rilis Trivy terbaru seperti yang kami lakukan di CentOS lalu jalankan perintah di bawah ini:
wget https://github.com/aquasecurity/trivy/releases/download/v0.23.0/trivy_0.23.0_Linux-64bit.deb
sudo apt install ./trivy_0.23.0_Linux-64bit.deb
Di Arch Linux|Manjaro
pikaur -Sy trivy-bin
OR
yay -Sy trivy-bin
Gunakan Trivy
Memindai Filesystem dan git repo
- Sepele dapat memindai sistem file (seperti mesin host, image mesin virtual, atau sistem file image container yang belum dibongkar).
trivy fs /home/glassfish/
- Untuk memindai repo Git dengan trivy
trivy repo https://github.com/aquasecurity/trivy
Memindai gambar Container
- Mencantumkan gambar Anda
docker images
- Pindai dengan hal-hal sepele
trivy image httpd
Terapkan Trivy di Dockerfile
Anda dapat memasukkan sepele di Dockerfile . Anda dan itu akan memindai semuanya saat membangun gambar.
Misalnya:
- Buat Dockerfile yang berisi trivy
vim Dockerfile
- Tambahkan berikut ini:
FROM alpine:3.7
RUN apk add curl \
&& curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/master/contrib/install.sh | sh -s -- -b /usr/local/bin \
&& trivy filesystem --exit-code 1 --no-progress /
- Bangun gambarnya.
[root@unixcop ~]# docker build -t scanned-image .
Sending build context to Docker daemon 244.6MB
Step 1/2 : FROM alpine:3.7
3.7: Pulling from library/alpine
5d20c808ce19: Pull complete
Digest: sha256:8421d9a84432575381bfabd248f1eb56f3aa21d9d7cd2511583c68c9b7511d10
Status: Downloaded newer image for alpine:3.7
---> 6d1ef012b567
Step 2/2 : RUN apk add curl && curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/master/contrib/install.sh | sh -s -- -b /usr/local/bin && trivy filesystem --exit-code 1 --no-progress /
---> Running in 7f2b8771050d
fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/community/x86_64/APKINDEX.tar.gz
(1/4) Installing ca-certificates (20190108-r0)
(2/4) Installing libssh2 (1.9.0-r1)
(3/4) Installing libcurl (7.61.1-r3)
(4/4) Installing curl (7.61.1-r3)
Executing busybox-1.27.2-r11.trigger
Executing ca-certificates-20190108-r0.trigger
OK: 6 MiB in 17 packages
aquasecurity/trivy info checking GitHub for latest tag
aquasecurity/trivy info found version: 0.23.0 for v0.23.0/Linux/64bit
aquasecurity/trivy info installed /usr/local/bin/trivy
2022-02-12T11:47:49.846Z INFO Need to update DB
2022-02-12T11:47:49.846Z INFO Downloading DB...
2022-02-12T11:48:24.761Z INFO Detected OS: alpine
2022-02-12T11:48:24.761Z INFO Detecting Alpine vulnerabilities...
2022-02-12T11:48:24.789Z INFO Number of language-specific files: 0
2022-02-12T11:48:24.789Z WARN This OS version is no longer supported by the distribution: alpine 3.7.3
2022-02-12T11:48:24.789Z WARN The vulnerability detection may be insufficient because security updates are not provided
7f2b8771050d (alpine 3.7.3)
===========================
Total: 2 (UNKNOWN: 0, LOW: 0, MEDIUM: 0, HIGH: 0, CRITICAL: 2)
+------------+------------------+----------+-------------------+---------------+---------------------------------------+
| LIBRARY | VULNERABILITY ID | SEVERITY | INSTALLED VERSION | FIXED VERSION | TITLE |
+------------+------------------+----------+-------------------+---------------+---------------------------------------+
| musl | CVE-2019-14697 | CRITICAL | 1.1.18-r3 | 1.1.18-r4 | musl libc through 1.1.23 has |
| | | | | | an x87 floating-point stack |
| | | | | | adjustment imbalance, related... |
| | | | | | -->avd.aquasec.com/nvd/cve-2019-14697 |
+------------+ + + + + +
| musl-utils | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
+------------+------------------+----------+-------------------+---------------+---------------------------------------+
The command '/bin/sh -c apk add curl && curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/master/contrib/install.sh | sh -s -- -b /usr/local/bin && trivy filesystem --exit-code 1 --no-progress /' returned a non-zero code: 1
[root@unixcop ~]#
Seperti yang ditunjukkan di atas, trivy memindai kerentanan untuk gambar yang disertakan dalam Dockerfile saat membangun.
- Anda juga dapat memfilter kerentanan berdasarkan tingkat keparahan dengan:
trivy image --severity HIGH,CRITICAL httpd:latest
Seperti yang ditunjukkan di atas, kami memfilter hasilnya hanya untuk tingkat keparahan kritis dan tinggi.
- Pindai wadah dari dalam wadah
docker run --rm -it nginx \
&& curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/master/contrib/install.sh | sh -s -- -b /usr/local/bin \
&& trivy fs /
Kesimpulan
Itu dia
Dalam panduan ini, Kami mengilustrasikan cara memindai Gambar Wadah Docker untuk mengetahui Kerentanan dengan Trivy selain sistem file dan git repo.
terima kasih