Trivy adalah pemindai kerentanan (vulnerability scanner) open-source dari Aqua Security yang mendeteksi CVE pada image container Docker, paket OS, dependensi bahasa pemrograman, file Infrastructure as Code (IaC), dan konfigurasi Kubernetes hanya dengan satu perintah. Pakai Trivy 0.58, Anda bisa memindai image Docker di Linux dalam hitungan detik, menghasilkan Software Bill of Materials (SBOM), serta mengintegrasikannya ke pipeline CI/CD untuk menerapkan praktik DevSecOps modern di tahun 2026.
Trivy 0.58 (rilis 2026) mendukung pemindaian image container, filesystem, repository Git, IaC (Terraform/Dockerfile), dan cluster Kubernetes melalui satu binary tunggal.
Database kerentanan Trivy memperbarui CVE dari NVD, GitHub Security Advisories, dan vendor Linux (Ubuntu USN, Red Hat OVAL) setiap 6 jam secara otomatis.
Pemasangan di Ubuntu 24.04 cukup dengan repositori APT resmi Aqua Security. Satu perintah trivy image nginx:latest sudah memindai puluhan layer.
Trivy unggul dibanding Grype dalam cakupan IaC dan misconfiguration, sementara Grype sedikit lebih cepat untuk SBOM murni. Pilih sesuai kebutuhan pipeline Anda.
Integrasi GitHub Actions dengan aquasecurity/trivy-action dapat memblokir pull request bila ditemukan CVE severity HIGH atau CRITICAL.
Trivy-operator menyediakan pemindaian berkelanjutan untuk workload Kubernetes dengan menulis temuan ke Custom Resource Definition (CRD).
Apa itu Trivy dan bagaimana cara kerjanya?
Trivy adalah pemindai kerentanan all-in-one yang ditulis dalam bahasa Go dan dirilis pertama kali pada 2019 oleh Aqua Security. Berbeda dengan tools tradisional seperti Clair atau Anchore yang memerlukan database server tersendiri, Trivy berjalan sebagai binary tunggal tanpa dependensi runtime. Itulah alasan utama mengapa Trivy jadi standar de facto untuk pemindaian image container di pipeline CI/CD modern.
Secara teknis, Trivy bekerja dalam tiga tahap. Pertama, ia melakukan image inspection, yaitu membongkar setiap layer container, lalu mengekstrak metadata package manager (apt, apk, dnf, npm, pip, gem, go.mod, dan lainnya). Kedua, Trivy mencocokkan setiap paket dengan database kerentanan internal yang dibangun dari NVD (National Vulnerability Database), GitHub Security Advisories (GHSA), Red Hat OVAL, Debian Security Tracker, dan Alpine secdb. Ketiga, hasil dilaporkan dalam berbagai format: table (default), JSON, SARIF, CycloneDX SBOM, atau template kustom.
Kelebihan utama Trivy dibanding alternatif seperti Snyk atau Anchore Enterprise adalah model lisensinya yang sepenuhnya Apache 2.0. Tidak ada tier berbayar yang mengunci fitur. Untuk konteks pengamanan server Linux secara holistik, pemindaian container adalah lapisan yang melengkapi konfigurasi firewall nftables yang ketat serta kebijakan Mandatory Access Control SELinux/AppArmor di host.
Cara install Trivy di Ubuntu 24.04 dan Debian 12
Cara paling andal untuk memasang Trivy di Ubuntu adalah melalui repositori APT resmi Aqua Security. Metode ini menjamin update otomatis ketika ada rilis baru dan signature GPG terverifikasi. Jujur saja, saya menyarankan Anda menghindari skrip curl | bash yang sering direkomendasikan di forum, karena tidak memberikan jalur pembaruan yang aman.
Untuk pengguna RHEL 9, AlmaLinux 9, atau Rocky Linux 9, gunakan repositori YUM yang setara. Instruksinya dapat dilihat di halaman instalasi resmi Trivy. Pengguna macOS dapat memakai brew install trivy, sementara pengguna Docker dapat menjalankan image aquasec/trivy:latest tanpa instalasi sama sekali.
Setelah terpasang, jalankan trivy --download-db-only untuk mengunduh database kerentanan secara eksplisit. Database berukuran sekitar 700 MB dan disimpan di ~/.cache/trivy/. Update terjadi otomatis setiap 6 jam, namun pada lingkungan air-gapped Anda perlu menjalankan mirror lokal menggunakan trivy-db sebagai OCI artifact.
Cara scan image Docker dengan Trivy
Perintah dasar untuk memindai image Docker cuma butuh satu argumen, yaitu nama image. Trivy akan menarik image dari registry (Docker Hub, GCR, ECR, atau registry privat), mengekstrak layer, dan mencocokkan setiap paket dengan database CVE.
# Scan image populer
trivy image nginx:1.27-alpine
# Tampilkan hanya CVE severity HIGH dan CRITICAL
trivy image --severity HIGH,CRITICAL nginx:1.27-alpine
# Output JSON untuk diproses oleh tool lain
trivy image --format json --output report.json nginx:1.27-alpine
# Abaikan CVE yang belum memiliki fix
trivy image --ignore-unfixed redis:7.4
# Exit code 1 jika ditemukan CRITICAL (penting untuk CI)
trivy image --exit-code 1 --severity CRITICAL myapp:latest
Opsi --ignore-unfixed sangat berguna di lingkungan produksi. Ia menyembunyikan kerentanan yang belum dirilis patch-nya oleh maintainer paket, sehingga laporan hanya berisi temuan yang dapat ditindaklanjuti. Tanpa flag ini, laporan image Debian-based bisa menampilkan ratusan CVE yang sebenarnya masih menunggu rilis upstream.
Trivy juga mendukung pemindaian secret (kredensial AWS, token GitHub, private key) yang tidak sengaja masuk ke image. Aktifkan dengan --scanners vuln,secret,misconfig. Untuk image multi-arch, gunakan --platform linux/amd64 agar Trivy memilih varian yang benar.
Memindai filesystem, Dockerfile, dan Terraform
Trivy tidak terbatas pada image container. Subcommand trivy fs memindai direktori filesystem untuk mendeteksi kerentanan di lockfile (package-lock.json, poetry.lock, go.sum) sekaligus konfigurasi yang berisiko. Ini cocok untuk shift-left security, yaitu menemukan masalah saat developer masih bekerja di laptop, sebelum kode masuk ke registry.
# Scan project Node.js / Python / Go
trivy fs --scanners vuln,secret ./my-project
# Scan repository Git langsung dari URL
trivy repo https://github.com/example/sample-app
# Scan Dockerfile untuk misconfiguration
trivy config ./Dockerfile
# Scan modul Terraform
trivy config --severity HIGH,CRITICAL ./terraform/
Pemindaian misconfiguration menggunakan rule bawaan yang sebagian besar berasal dari proyek defsec Aqua Security. Trivy akan menandai pola berbahaya seperti container yang berjalan sebagai root (USER root), instruksi ADD dengan URL eksternal, port 22 yang terbuka pada Security Group AWS, atau S3 bucket tanpa enkripsi. Aturan dapat diperluas dengan kebijakan Rego (OPA) kustom melalui flag --config-policy.
Bagi tim yang ingin menerapkan kebijakan keamanan secara konsisten, padukan pemindaian IaC dengan praktik hardening pada layer host, termasuk proteksi brute force SSH menggunakan Fail2ban agar server build CI Anda tidak menjadi titik lemah baru.
Menghasilkan SBOM (Software Bill of Materials)
Sejak Executive Order 14028 Amerika Serikat dan regulasi NIS2 Eropa berlaku penuh di 2026, banyak organisasi wajib menghasilkan SBOM untuk setiap artefak software yang mereka distribusikan. Trivy mendukung dua standar SBOM industri: CycloneDX (OWASP) dan SPDX (Linux Foundation).
# SBOM format CycloneDX
trivy image --format cyclonedx --output app-sbom.cdx.json myapp:v1.2.0
# SBOM format SPDX
trivy image --format spdx-json --output app-sbom.spdx.json myapp:v1.2.0
# Pindai SBOM yang sudah ada untuk menemukan CVE baru
trivy sbom app-sbom.cdx.json
Pendekatan scan-once, query-many dengan menyimpan SBOM ke repositori artefak (Artifactory, Nexus, atau OCI registry) memungkinkan tim keamanan memindai ulang setiap kali database CVE diperbarui, tanpa harus build ulang image. Ini juga menjadi bukti compliance untuk audit ISO 27001 maupun SOC 2.
Perbedaan Trivy dan Grype: mana yang lebih baik?
Pertanyaan ini sering muncul di forum DevSecOps. Grype dari Anchore memiliki fokus berbeda, yaitu kecepatan dan integrasi erat dengan Syft (generator SBOM). Tabel berikut merangkum perbandingan keduanya pada Mei 2026.
Fitur
Trivy 0.58
Grype 0.85
Lisensi
Apache 2.0
Apache 2.0
Sumber CVE
NVD, GHSA, OVAL, Alpine secdb, Photon
NVD, GHSA, OVAL, Alpine secdb
Scan image container
Ya
Ya
Scan IaC (Terraform, Dockerfile, K8s)
Ya, lengkap
Tidak
Misconfiguration detection
Ya (defsec)
Tidak
Pemindaian secret
Ya
Tidak
SBOM generation
CycloneDX, SPDX
Memerlukan Syft
Kecepatan rata-rata (image 500 MB)
~4 detik
~3 detik
Operator Kubernetes resmi
trivy-operator
Tidak ada
Singkatnya, pilih Trivy bila Anda ingin satu alat untuk seluruh kebutuhan DevSecOps (container, IaC, SBOM, secret, K8s). Pilih Grype bila workflow Anda sudah berbasis Syft dan hanya butuh pemindaian CVE murni dengan latensi minimum. Saya sempat membandingkan keduanya pada image node:20-bookworm, dan perbedaan kecepatan kurang dari 1 detik. Jadi keputusan praktis lebih ditentukan oleh cakupan fitur.
Integrasi Trivy dengan GitHub Actions dan GitLab CI
Manfaat utama Trivy baru terasa ketika diintegrasikan ke pipeline CI/CD. Berikut contoh workflow GitHub Actions yang memblokir pull request bila ditemukan CVE CRITICAL.
Output SARIF (Static Analysis Results Interchange Format) memungkinkan temuan muncul langsung di tab Security repository GitHub, sehingga reviewer dapat melihat baris kode atau layer image yang bermasalah tanpa membuka log CI.
Pemindaian Kubernetes dengan Trivy Operator
Untuk cluster Kubernetes produksi, pemindaian satu kali pada saat build saja tidak cukup. Anda perlu pemantauan kontinu karena CVE baru muncul setiap hari. Trivy Operator adalah controller Kubernetes yang menjalankan pemindaian otomatis pada semua Pod, Deployment, dan node, kemudian menyimpan hasilnya sebagai Custom Resource Definition.
# Install via Helm
helm repo add aqua https://aquasecurity.github.io/helm-charts/
helm repo update
helm install trivy-operator aqua/trivy-operator \
--namespace trivy-system \
--create-namespace \
--version 0.24.0
# Lihat laporan kerentanan per workload
kubectl get vulnerabilityreports -A
# Detail temuan
kubectl describe vulnerabilityreport \
-n default deployment-nginx-687cd47dc4
Trivy Operator juga menghasilkan ConfigAuditReports (apakah Deployment sesuai CIS Kubernetes Benchmark), ExposedSecretReports (secret yang terekspos), dan ClusterComplianceReports (PCI-DSS, NSA Hardening Guide). Hasilnya dapat di-scrape oleh Prometheus dan ditampilkan di Grafana dashboard.
Tuning, ignore file, dan menangani false positive
Tidak semua CVE relevan untuk konteks Anda. Sebagai contoh, kerentanan pada library ssh-client di image yang tidak pernah membuka koneksi SSH bisa diabaikan dengan aman. Trivy mendukung tiga mekanisme suppress.
Pertama, file .trivyignore di root project. Isinya daftar ID CVE satu per baris, opsional dengan tanggal kedaluwarsa:
# .trivyignore
# Kerentanan kernel, sudah dimitigasi pada host
CVE-2024-12345
# Kerentanan SSL, akan diperbaiki pada rilis 1.3.0, expire setelah review
CVE-2024-67890 exp:2026-08-01
Kedua, kebijakan VEX (Vulnerability Exploitability eXchange), yaitu standar OpenVEX yang menjelaskan mengapa CVE tidak berlaku untuk produk Anda. Gunakan --vex untuk menyertakan dokumen VEX dalam pemindaian. Ketiga, kebijakan Rego (OPA) yang lebih fleksibel, sehingga memungkinkan logika seperti "abaikan semua CVE dengan CVSS < 7 pada paket devel".
Untuk false positive yang berulang, laporkan ke Trivy issue tracker. Saya pernah mengirim dua issue dan tim Aqua membalas dalam dua hari. Mereka cukup responsif memperbaiki data feed yang salah.
Best practice DevSecOps dengan Trivy
Setelah memasang Trivy, ikuti enam praktik berikut agar value-nya maksimal di tim DevOps Anda.
Pindai sejak fase development. Tambahkan hook pre-commit (pre-commit framework) yang menjalankan trivy fs --scanners vuln,secret --severity HIGH,CRITICAL . sebelum git push.
Tetapkan SLA remediasi. CRITICAL diperbaiki dalam 7 hari, HIGH dalam 30 hari, MEDIUM dalam 90 hari. Lacak metrik ini di dashboard manajerial.
Gunakan base image minimal. Gantilah ubuntu:24.04 dengan chainguard/static, distroless, atau alpine:3.20. Jumlah CVE berkurang drastis karena permukaan serangan lebih kecil.
Aktifkan signing image dengan Cosign. Setelah image lolos pemindaian Trivy, tanda tangani dengan Sigstore dan verifikasi di admission controller Kubernetes (Kyverno atau Gatekeeper).
Simpan SBOM ke registry. Gunakan cosign attest --predicate sbom.cdx.json agar SBOM melekat pada image sebagai OCI artifact.
Audit cluster secara berkala. Jadwalkan trivy k8s cluster --report summary mingguan dan kirim ringkasan ke Slack atau email keamanan.
Trivy bukan pengganti program keamanan menyeluruh, ia hanyalah satu lapisan dari strategi defense-in-depth. Padukan dengan hardening host (kernel sysctl, AppArmor profile, journald audit), kontrol jaringan (network policy, service mesh mTLS), dan deteksi runtime (Falco, Tetragon) untuk mendapatkan postur keamanan yang benar-benar matang di lingkungan produksi 2026.
Pertanyaan yang Sering Diajukan
Apakah Trivy gratis untuk penggunaan komersial?
Ya. Trivy dirilis dengan lisensi Apache 2.0 sehingga gratis untuk penggunaan komersial maupun non-komersial. Tidak ada batasan jumlah scan, jumlah image, atau jumlah pengguna. Aqua Security menyediakan produk berbayar terpisah (Aqua Platform) untuk fitur enterprise seperti policy management terpusat dan dashboard analitik, namun Trivy CLI tetap sepenuhnya open source.
Berapa sering database kerentanan Trivy diperbarui?
Database Trivy diperbarui setiap 6 jam dan didistribusikan sebagai OCI artifact di GitHub Container Registry (ghcr.io/aquasecurity/trivy-db). Klien Trivy otomatis mengecek versi terbaru pada setiap pemindaian, kecuali Anda menggunakan flag --skip-db-update untuk menghemat bandwidth pada CI berulang.
Apa perbedaan Trivy dan Snyk?
Snyk adalah platform SaaS komersial dengan model freemium. Fitur lanjutan, dashboard tim, dan auto-remediation hanya tersedia di tier berbayar. Trivy adalah CLI open-source 100% gratis tanpa fitur terkunci. Untuk tim kecil atau organisasi yang ingin menghindari vendor lock-in, Trivy biasanya lebih cocok. Snyk unggul dalam fitur enterprise seperti Jira integration native dan policy management lintas tim besar.
Bisakah Trivy memindai image privat di registry kustom?
Ya. Trivy mendukung autentikasi ke semua registry yang kompatibel dengan Docker, termasuk Harbor, Artifactory, AWS ECR, Google GCR/Artifact Registry, Azure ACR, dan registry GitHub. Set kredensial via variabel lingkungan TRIVY_USERNAME dan TRIVY_PASSWORD, atau gunakan docker login sebelum menjalankan scan agar Trivy membaca ~/.docker/config.json.
Apakah Trivy dapat memblokir build secara otomatis?
Ya, dengan flag --exit-code 1 kombinasi --severity CRITICAL. Trivy akan keluar dengan exit code non-zero ketika menemukan kerentanan dengan severity yang ditetapkan, menyebabkan job CI gagal dan otomatis memblokir merge atau deployment. Praktik umum adalah memblokir hanya pada severity CRITICAL untuk mencegah CI menjadi terlalu sering merah karena CVE MEDIUM yang masih ditinjau.
Panduan praktis deploy Suricata 7 sebagai Network IDS/IPS di Linux 2026. Mode af-packet pasif, NFQUEUE inline, manajemen ruleset ET Open, dan tuning trafik 10 Gbps.
Panduan lengkap auditd dan Linux Audit Framework untuk forensik, deteksi syscall, dan kepatuhan PCI-DSS/HIPAA. Berisi auditctl rules, ausearch, dan integrasi Wazuh.