Trivy 容器鏡像掃描工具學習

簡介

官方地址://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 //github.com/knqyf263/trivy-ci-test

server-client 模式

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

集成與擴展

根據互聯網數據統計,超過 30%的 Docker Hub官方鏡像存在高危漏洞,超過 18%的GitHub開源項目包含惡意代碼,而日常開發人員編寫的代碼中,往往就引用/借鑒了一定的開源項目。這就直接可能導致惡意代碼、鏡像直接進入生產環境,隨着開發人員的代碼提交而成為在線業務,這種供應鏈對企業帶來的風險可想而知。
trivy除了作為一個獨立的鏡像掃描工具外,還能和其他平台/工具做集成或擴展、嵌入CI流水線中:

同類產品比較

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