コンテナイメージの脆弱性スキャンツールTrivyを使ってみる 〜とりあえず試す編〜

Docker Bench for Securityに引き続き、コンテナイメージの脆弱性スキャンツールTrivyを使ってみます。

Docker Bench for Securityについてのエントリーはこちら takapi86.hatenablog.com

Trivyとは何か

Docker Bench for Securityがコンテナイメージの作成方法や動作環境が基準に沿ったセキュアな環境かどうか診断するのに対し、Trivyはイメージに含まれる具体的な脆弱性情報を検知してくれるツールです。

対象はyum/rpm, apt/apt-get/dpkg, apkやGemfile.lockやcomposer.lockなど、アプリケーションのライブラリの依存関係から脆弱性情報を検知できます。

https://github.com/aquasecurity/trivy#os-packages https://github.com/aquasecurity/trivy#application-dependencies

また、リポジトリのAboutにもある通り、

A Simple and Comprehensive Vulnerability Scanner for Containers, Suitable for CI

と、CIに組み込みやすい特徴があるようです。

公式リポジトリ

https://github.com/aquasecurity/trivy

今回はお試しということで、CIには組み込まず、コマンドで実行し脆弱性情報を確認するところまでやっていきます。

インストールする

様々なパッケージ管理システムを使ってインストールできるようです。 https://github.com/aquasecurity/trivy#installation

実行する

  • 直接コマンドで実行する場合
trivy image [your_image]
  • コンテナイメージを使う場合
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock -v [YOUR_CACHE_DIR]:/root/.cache/ aquasec/trivy [YOUR_IMAGE_NAME]

試す

2年ほど放置していて稼働していないPrivateリポジトリにあるRailsアプリケーションのイメージで試してみます。

trivy image rails_app

このようにたんまり脆弱性情報が出てしまいました 🥺

usr/src/app/Gemfile.lock
========================
Total: 22 (UNKNOWN: 0, LOW: 0, MEDIUM: 11, HIGH: 9, CRITICAL: 2)

+----------------------+------------------+----------+-------------------+--------------------------------+--------------------------------+
|       LIBRARY        | VULNERABILITY ID | SEVERITY | INSTALLED VERSION |         FIXED VERSION          |             TITLE              |
+----------------------+------------------+----------+-------------------+--------------------------------+--------------------------------+
| XXXXXXXXXX           | XXXXXXXXXX       | HIGH     | XXXXX             | XXXXXXXXXX                     | XXXXXXXXXX                     |
|                      |                  |          |                   |                                | XXXXXXXXXX                     |
+                      +------------------+----------+                   +                                +--------------------------------+
|                      | XXXXXXXXXX       | MEDIUM   |                   |                                | XXXXXXXXXX                     |
|                      |                  |          |                   |                                | XXXXXXXXXX                     |
|                      |                  |          |                   |                                | XXXXXXXXXX                     |
+----------------------+------------------+          +                   +--------------------------------+--------------------------------+
(この下にもばーっと脆弱性情報が出ています)

GitHub Actionsに組み込んで試す

続いて、CIで検知できるようGitHub Actionsに組み込んでみようと思います。 こちらはCI導入編ということで別エントリーであげようと思います。

今回はここまで