Trivy 容器映象掃描工具學習

01發表於2021-11-21

簡介

官方地址:https://github.com/aquasecurity/trivy

Trivy是aqua(專注雲原生場景下的安全)公司的一款開源工具,之前歷史文章也有對aqua的一些介紹。

Trivy是一個簡單易用且全面的掃描器,支援容器映象、檔案系統、git倉庫及配置檔案的檢測。
Trivy支援作業系統軟體包的檢測(例如:Alpine, RHEL, CentOS等)和特定語言軟體包(例如:Bundler, Composer, npm, yarn等)的漏洞。此外,Trivy掃描基礎架構即程式碼(IaC,基礎設施即程式碼是通過機器可讀的定義檔案,而不是物理硬體配置或互動式配置工具來管理和配置計算資料中心的過程)檔案,如Terraform(類似k8s的編排工具)、Dockerfile和Kubernetes,以檢測潛在的配置問題,提前發現潛在安全問題。支援多種作業系統環境。

安裝

提供了多種安裝方式,Liunx、mac甚至是docker,此處採用的是mac環境下使用brew的安裝:

brew install aquasecurity/trivy/trivy

掃描機制

基於檔案的靜態掃描,對於一些執行態的安全風險,例如逃逸、高危系統呼叫、異常程式檢測、檔案異常檢測、容器環境檢測等存在盲區。

功能

  • 掃描映象
  • 掃描打包好的映象
  • 掃描配置檔案
  • 整合與擴充套件

映象掃描

trivy image [YOUR_IMAGE_NAME]

儲存掃描結果:trivy -f json -o output [YOUR_IMAGE_NAME]

檔案掃描

trivy fs /path/to/project

git倉庫掃描

$ trivy repo https://github.com/knqyf263/trivy-ci-test

server-client 模式

基於掃描效率的考慮,出現了server-client模式,在初次掃描時,server會下載所需的漏洞資料庫,並在後臺持續獲取最新的資料庫。

整合與擴充套件

根據網際網路資料統計,超過 30%的 Docker Hub官方映象存在高危漏洞,超過 18%的GitHub開源專案包含惡意程式碼,而日常開發人員編寫的程式碼中,往往就引用/借鑑了一定的開源專案。這就直接可能導致惡意程式碼、映象直接進入生產環境,隨著開發人員的程式碼提交而成為線上業務,這種供應鏈對企業帶來的風險可想而知。
trivy除了作為一個獨立的映象掃描工具外,還能和其他平臺/工具做整合或擴充套件、嵌入CI流水線中:

同類產品比較

可以看到有映象掃描工具的“前輩” clair 也在列,但從支援檢測的語言包、易用性、準確性、和CI的整合度等方面,trivy略勝一籌。留個坑,後續有時間可以來深入學習下各個工具的異同。

相關文章