Trivy
https://raw.githubusercontent.com/aquasecurity/trivy/becd5088dff0bad78120fa2d7dd2316029a4716f/docs/imgs/logo.png
/icons/github.icon https://github.com/aquasecurity/trivy
Trivy とは?
A Simple and Comprehensive Vulnerability Scanner for Containers, Suitable for CI.
CI に親和性のある、簡単で包括的なコンテナの脆弱性スキャナ。
Docker と同じく Go で構築されているので、ワンバイナリ を配置するだけで利用可能になっている。
開発はコンテナやサーバーレスのセキュリティソリューションを提供する Aqua Security Software, Inc. が行っている。
機能一覧
公式の README に確認時点で記述されている機能が下記の通り。
全体的な脆弱性の検知
イメージのベースとなっているOSの脆弱性検知
対応OS: Alpine、Red Hat Universal Base Image、Red Hat Enterprise Linux、CentOS、Oracle Linux、Debian、Ubuntu、Amazon Linux、openSUSE Leap、SUSE Enterprise Linux、Photon OS、Distroless
アプリケーションの依存関係における脆弱性検知
対応環境: Bundler、Composer、Pipenv、Poetry、npm、yarn、Cargo
高速な動作
簡単な使用方法
イメージ名を渡すだけで利用できる
高精度な脆弱性検知
Alpine Linux と RHEL/CentOS には特に強いらしい
DevSecOps 対応
CI との親和性を考慮した設計になっている
Dockle との違い
似たツールに Dockle があるが、こちらはあくまで Linter。
なので、生成済みのイメージを解析して、生成コマンドの良し悪しや、付帯しての CIS Benchmarks に関するセキュリティチェックを行ってくれるが、一番の違いは、イメージに含まれるOSやアプリケーションの依存関係に関する脆弱性を詳細に調べてくれる点。カバーしてくれる範囲が異なるので、より強固にするのであれば 併用が好ましそう。
脆弱性情報の取得について
trivy は起動時に最新の脆弱性情報の一覧を取得する。これは trivy-db という専用のリポジトリで管理されており、ここに情報の生成ツールのコードが含まれている他、Releases で実際に取得される一覧がデータベースとして提供されている。
データベースの種別は標準版と軽量版の2種類があり、12時間ごとに常に更新版がリリースされている。取得できるのは確認時点で、最新のバージョンから過去最大3バージョンまでのようだ。
CI と組み合わせての利用
バイナリを配置して、ネットワークが繋がってさえいれば利用できるため、Docker イメージのビルドをCIで行っている場合などではCIと組み合わせておけば、生成されたイメージのセキュリティの向上が期待できる。
メジャーどころの CI ツールとの統合方法が記載されているので興味があれば参考にしてほしい。
https://github.com/aquasecurity/trivy#continuous-integration-ci