Trivy を使うと、自分たちが使うコンテナイメージやソースコードに、既知の脆弱性や API キーなどの秘密情報が紛れていないかを調べられます。調べる相手は自分の手元にあるファイルなので、最初の 1 本として試しやすいツールです。
この記事は、Docker や npm などで依存ライブラリを使って開発している人に向けています。読み終えると、次のことができるようになります。
- 手元のプロジェクトにある依存ライブラリの脆弱性を一覧にする
- 深刻度で結果を絞り、修正版があるものから手を付ける
- コンテナイメージを調べる
Trivy でできること
Trivy は「どこを調べるか(ターゲット)」と「何を探すか(スキャナー)」を組み合わせて使います。
| 調べる場所 | 探すもの |
|---|---|
| コンテナイメージ | OS パッケージと依存ライブラリの一覧(SBOM) |
| ファイルシステム(手元のフォルダ) | 既知の脆弱性(CVE) |
| Git リポジトリ(リモート) | IaC の設定ミス |
| 仮想マシンのイメージ | 秘密情報(API キーなど) |
| Kubernetes | ソフトウェアのライセンス |
左右の列は 1 対 1 ではありません。たとえば手元のフォルダに対して、脆弱性・秘密情報・設定ミスをまとめて探せます。
インストール
公式のインストールページに方法がまとまっています。代表的なものは次のとおりです。
- macOS・Linux:Homebrew で
brew install trivy - Debian・Ubuntu、RHEL・CentOS:公式のパッケージリポジトリを追加して入れる
- Windows:リリースページから
trivy_<バージョン>_windows-64bit.zipを入手し、展開する - Docker:公式イメージ
aquasec/trivyを使う
インストールしたら trivy --version でバージョンが表示されるか確かめます。
安全な試し方:手元のプロジェクトを調べる
-
調べたいプロジェクトのフォルダに移動します。
-
次のコマンドで、脆弱性・秘密情報・設定ミスをまとめて調べます。
trivy fs --scanners vuln,secret,misconfig . -
初回は脆弱性のデータベースをダウンロードするので、少し時間がかかります。終わると、見つかった問題が表で表示されます。
Trivy が外に出す通信は、主にこのデータベースと設定ミスのチェック定義の取得です。どちらも mirror.gcr.io か ghcr.io から取ってきます。2 回目からは手元のキャッシュを使い、--skip-db-update を付ければデータベースを更新しません。依存関係を特定するために API へ問い合わせることもあり、これは --offline-scan で止められます。
結果を絞り込む
最初の結果は件数が多くなりがちです。次のオプションで、今すぐ手を付けるものに絞ります。
| オプション | すること |
|---|---|
--severity HIGH,CRITICAL |
深刻度が HIGH と CRITICAL のものだけ表示する |
--ignore-unfixed |
修正版が出ているものだけ表示する |
--exit-code 1 |
問題が見つかったら終了コード 1 で終わる(CI で失敗させたいとき) |
-f json -o 結果.json |
結果を JSON でファイルに保存する |
コンテナイメージは trivy image <イメージ名> で調べます。たとえば trivy image --severity HIGH,CRITICAL python:3.4-alpine は、古い Python イメージの深刻な脆弱性だけを表示します。
注意点
- 2026 年 3 月に、Trivy の配布物そのものが改ざんされました。 盗まれた認証情報で、悪意のある v0.69.4 のリリースと、GitHub Actions の
trivy-action・setup-trivyのタグ、Docker Hub の v0.69.5 と v0.69.6 のイメージが公開されました。どれも数時間から半日ほどで取り除かれています。その期間にこれらを使った CI や端末がある場合は、公式アドバイザリ(GHSA-69fq-xp46-6x23)で影響を確かめ、そこから触れられた秘密情報を入れ替えてください。今後も、バージョンを固定し、イメージはダイジェストで指定すると、差し替えの影響を受けにくくなります。 - 見つかった件数だけで慌てないでください。実際に使っている機能か、外から届く場所にあるかで、急ぐべきかが変わります。
- 秘密情報のスキャンで見つかったキーは、リポジトリから消すだけでは足りません。履歴に残るので、キー自体を無効にして作り直します。
次に読む
出典
- 公式リポジトリ(README)github.com/aquasecurity/trivy
- ドキュメント:インストールtrivy.dev/docs/latest/getting-started/installation/
- ドキュメント:結果の絞り込みtrivy.dev/docs/latest/guide/configuration/filtering/
- ドキュメント:データベースtrivy.dev/docs/latest/guide/configuration/db/
- ドキュメント:trivy filesystem のオプションtrivy.dev/docs/latest/guide/references/configuration/cli/trivy_filesystem/
- セキュリティアドバイザリ GHSA-69fq-xp46-6x23(2026 年 3 月のサプライチェーン侵害)github.com/advisories/GHSA-69fq-xp46-6x23
確認日 2026-10-25
似たツール
Gitleaks
影響範囲 手元だけGit リポジトリやファイルに紛れ込んだパスワード、API キー、トークンなどの秘密情報を見つけるコマンドラインツール。
- 用途
- 防御
- 形式
- コマンドライン
- 難易度
- 初級
- ライセンス
- 自由に使えるMIT
- 分類
- 脆弱性スキャン
OSV-Scanner
影響範囲 手元だけプロジェクトが使っている依存ライブラリを読み取り、OSV.dev の脆弱性データベースと照らし合わせる Google 製のコマンドラインツール。
- 用途
- 防御
- 形式
- コマンドライン
- 難易度
- 初級
- ライセンス
- 自由に使えるApache-2.0
- 分類
- 脆弱性スキャン
Prowler
影響範囲 外に届くAWS、Azure、Google Cloud などのクラウドの設定を読み取り、セキュリティの基準に合っていない箇所を一覧にする監査ツール。
- 用途
- 診断・監査
- 形式
- コマンドライン
- 難易度
- 中級
- ライセンス
- 自由に使えるApache-2.0
- 分類
- コンテナ・クラウド