コンテンツにスキップ

TrivyのStatusの意味と確認方法

公開日:2026年9月18日

はじめに

Trivyの脆弱性スキャンには、修正版が提供されているものと、提供されていないものが含まれます。 修正版がない場合も、修正が先送りされているのか、修正しない方針なのかによって、次に確認する内容が変わります。 この違いを読み取る項目がStatusです。

Status: fixedは、スキャン対象の修正が完了したことを意味しません。 検出された脆弱性について修正版が提供されていることを示し、対象に入っているバージョンと修正版は別々の項目で確認します。

この記事では、次のことを記載します。

  • Statusの種類とFixedVersionとの違い
  • 実際のスキャン結果に含まれるfixedとfix_deferredの読み方
  • 情報源による違いと、フィルターで除外される結果
  • 修正対応を決めるときの確認事項

スキャン方法とJSON全体の構造は、Trivyの基礎とスキャン結果の読み方を参照してください。

StatusとFixedVersionの違い

JSONでは、脆弱性の検出結果はResults[].Vulnerabilities[]にあります。 対象パッケージのバージョン、修正版、対応状況を次の項目で確認します。

項目 表す内容
InstalledVersion スキャン対象に含まれるパッケージのバージョン
FixedVersion 脆弱性情報に記録された修正バージョン
Status 対象プラットフォームでの脆弱性の対応状況
DataSource 検出に使われた脆弱性情報の出典

Statusがfixedでも、スキャン対象には修正前のバージョンが入っている場合があります。 fixedは「修正版が提供されている」という意味で、「スキャン対象に修正版が適用されている」という意味ではありません。3

Statusの種類

Trivyが定義する主な対応状況は次のとおりです。利用できる状態は、OSや情報源によって異なります。1

Status 意味
fixed 対象プラットフォームで修正版が提供されている
affected 影響ありとされているが、修正版はまだ提供されていない
fix_deferred 影響ありとされ、修正は先送りされている
will_not_fix 影響ありとされているが、現時点で修正する予定がない
end_of_life 問題のあるコンポーネントを含むが、サポート範囲などの事情により影響の分析が行われていない

Trivyにはunknown(不明)、not_affected(影響なし)、under_investigation(影響を調査中)というStatusも定義されています。 ただし、この3種類は通常のスキャン結果の脆弱性一覧には表示されません。21

スキャン結果の実例

ここでは、2026年9月12日にTrivy 0.71.2で取得した、nginx:1.27のイメージIDを対象とするスキャン結果から主要項目を抜粋します。 検出されたOSはDebian 12.11で、以下の2件のDataSourceはDebian Security Trackerです。 値は保存済みレポートのものであり、現在の対応状況や再スキャンの結果とは異なる場合があります。4

fixedの例

{
  "VulnerabilityID": "CVE-2025-10148",
  "PkgName": "curl",
  "InstalledVersion": "7.88.1-10+deb12u12",
  "FixedVersion": "7.88.1-10+deb12u15",
  "Status": "fixed"
}

スキャン対象には7.88.1-10+deb12u12が入っており、修正版として7.88.1-10+deb12u15が記録されています。 この結果から分かるのは更新先が示されていることで、コンテナへの更新適用や再作成まで完了していることではありません。

fix_deferredの例

{
  "VulnerabilityID": "CVE-2024-38949",
  "PkgName": "libde265-0",
  "InstalledVersion": "1.0.11-1+deb12u2",
  "Status": "fix_deferred"
}

このレコードにはFixedVersionがなく、修正が先送りされていることが記録されています。 FixedVersionの有無だけで集計すると、affectedやwill_not_fixと同じ「修正版なし」にまとめられ、この違いが失われます。

fix_deferredは修正日程の確約ではありません。例えばRed Hatも、この状態では将来の修正が保証されないと説明しています。 修正を待つ場合は、対象の情報源で理由と進捗を確認します。5

修正方針の確認先

OSパッケージのStatusを読むときは、そのパッケージを配布しているOSの脆弱性情報を確認します。 Trivyは、OSの配布元が提供する脆弱性情報とパッケージを照合します。例えば、DebianのパッケージにはDebianの脆弱性情報を使います。6

Debian 12のパッケージにwill_not_fixと表示された場合、それはDebian 12向けのパッケージに対する修正方針です。 ソフトウェアの開発元や、別のOSリリースにも修正版がないという意味ではありません。7

修正を待つか、別のリリースへ移行するかを検討するときは、検出結果のDataSourceで情報源を確認します。 その情報源で対象の脆弱性IDとOSリリースを調べ、修正しない理由や、修正版が提供されるリリースを確認します。

Statusの確認とフィルタリング

以下はTrivyを使用するコマンド例です。<image>を確認対象のイメージ名またはイメージIDに置き換えてください。 まず、Statusによる絞り込みを行わずに、スキャン結果をJSON形式で保存します。

trivy image --scanners vuln --format json --output trivy-result.json '<image>'

修正版がある検出結果だけを表示するには、--ignore-unfixedを使えます。 特定のStatusを除外する場合は--ignore-statusを使います。8

trivy image --scanners vuln --ignore-unfixed '<image>'
trivy image --scanners vuln --ignore-status will_not_fix '<image>'

1つ目は修正版がある結果に絞り、2つ目はwill_not_fixを除外します。 両方を指定すると、Trivy 0.71.2では--ignore-statusが優先され、--ignore-unfixedは無視されます。8

これらのフィルターはJSON出力にも適用されます。9 設定ファイルや環境変数、.trivyignoreにも除外条件がある場合は、それらを含めて確認してください。

Statusごとの確認事項

Statusから、次に確認することを整理できます。

Status 次に確認すること
fixed FixedVersionと対象リリースを確認し、パッケージやベースイメージの更新を検討する
affected・fix_deferred 情報源の対応状況を追跡し、修正までの緩和策や影響を受ける機能の停止を検討する
will_not_fix 修正しない理由を確認し、別のリリース・パッケージへの移行や緩和策を検討する
end_of_life 対象コンポーネントとサポート範囲を確認し、サポートされる構成への移行を検討する
欠落・不明な値 元の値を保持し、情報源と使用したTrivyの仕様を確認する

対応の順序はStatusだけでは決まりません。修正版がない問題にも対応が必要な場合があるため、深刻度、悪用情報、外部公開の状況などと合わせて判断します。 悪用情報については、KEV Catalogの基礎と使い方とEPSSの基礎とスコアの確認方法を参照してください。

まとめ

Statusは対象プラットフォームでの脆弱性の対応状況を、FixedVersionは修正バージョンを示します。 fixedは修正版が提供されているという意味で、スキャン対象に適用済みという意味ではありません。

スキャン結果を読むときは、Statusだけでなく、InstalledVersion・FixedVersionと情報源を併せて確認します。 修正版がない場合も、affected・fix_deferred・will_not_fixなどの違いから、配布元の対応状況を確認できます。

参考資料


KestreLynxは、稼働中のDocker・KubernetesコンテナのイメージをTrivyで定期的にスキャンし、前回からの変化と、深刻度・CISA KEV・EPSSに基づく優先度をSlackやWebhookへ通知するOSSです。Docker・Compose向けの修正計画と修正PR(実験的)で、更新候補の比較からGitHubへのPR作成まで修正を支援します(既定で無効)。マージ・再ビルド・デプロイは利用者が行います。

KestreLynxについて · GitHubでソースコードを見る