コンテンツにスキップ

Webhookのフィールド仕様

ペイロードの範囲

汎用Webhookは、現在のスキャン結果を構造化JSONで送信します。 diffモードでは、現在の結果に加えて前回からの差分を含めます。

Low、通知オフの所見、Slackで畳み込むEOLパッケージ、対象コンテナとWorkloadも含みます。 Slackと併用できますが、DiscordやTeams専用のメッセージ形式には変換しません。

送信先は設定、送信のタイミングは通知の送信条件を参照してください。 修正計画のJSONはWebhookの修正計画フィールドに記載しています。

レポートのフィールド

各表のフィールド名は、表で示すオブジェクトからの相対パスです。 省略条件を記載していないフィールドは、そのオブジェクトがある場合に出力します。

トップレベル

フィールド名 型 意味・省略条件
generated_at string RFC 3339形式のスキャン時刻
environment object 環境
summary object サマリー
eosl_images stringの配列またはnull EOLベースイメージの参照一覧で、該当なしはnullになる場合がある
actionable objectの配列 fixedのイメージで、該当なしは[]
watch objectの配列 affectedへ正規化したイメージで、該当なしは[]
wont_fix objectの配列 will_not_fixのイメージで、該当なしは[]
eol_packages objectの配列 全end_of_lifeグループのイメージで、該当なしは[]
scan_errors objectの配列 スキャン失敗で、該当なしは[]
diff object 差分で、fullモードでは省略
runtime object Sensorの情報と使用状況の件数で、稼働時の使用状況が無効なら省略
remediation object 修正計画とPR処理の結果で、修正計画が無効なら省略

watchは修正状態の区分で、優先度のWatchとは別です。 not_affectedは、どの検出結果の配列にも含めません。

環境

environmentのフィールド名 型 意味・省略条件
kind string dockerまたはkubernetes
name string 設定した環境名で、未設定なら省略

サマリー

summaryのフィールド名 型 意味・省略条件
images_total integer スキャン失敗を含む、一意なイメージ参照と実体の組み合わせ数
images_affected integer 対象脆弱性またはEOLベースOSがあるイメージ数
priority_counts object 優先度別のパッケージグループ件数で、トリアージ無効時は省略
priority_counts.act_now integer Act nowの件数
priority_counts.watch integer Watchの件数
priority_counts.low integer Lowの件数
intel object 脅威情報の利用可否と鮮度で、トリアージ無効時は省略
intel.degraded boolean KEVとEPSSの両方を利用できない場合はtrue
intel.kev_ok boolean KEVを利用できる場合はtrue
intel.epss_ok boolean EPSSを利用できる場合はtrue
intel.stale_days integer 使用中の古い脅威情報の経過日数

priority_countsには、EOLパッケージをAct nowの場合だけ加算します。 eol_packagesと集計対象が重なり、3値の合計は全パッケージグループ数とは限りません。

スキャン失敗

scan_errors[]のフィールド名 型 意味
image string スキャンに失敗したイメージ参照
error string エラー内容

失敗時の結果の扱いは、スキャン失敗時の扱いを参照してください。

イメージのフィールド

actionable、watch、wont_fix、eol_packagesの各要素は、修正状態ごとのイメージ参照と実体を表します。

イメージの識別情報

フィールド名 型 意味・省略条件
image string 表示用のイメージ参照
severity_counts object 整数値のCRITICAL・HIGH件数(対象の深刻度を広げた場合、HIGHにはCRITICAL以外のすべてを含む)
findings objectの配列 このイメージと修正状態に属するパッケージグループ
containers objectの配列 この実体に一致するコンテナで、該当なしは[]
content_id string 実体を確認できたDockerのconfig digest指定スキャンのsha256:<hex>で、それ以外は省略
registry_digests stringの配列 成功して実体を確認できた結果のregistry digestを、同じ参照について集めた一覧で、情報なしは[]
identity_resolved boolean この要素のスキャンで稼働中イメージの実体を確認できた場合はtrue
scan_target_kind string content_id、registry_digest、referenceのいずれか

registry_digestsは同じ参照全体の情報ですが、identity_resolvedとscan_target_kindは各要素の情報です。 Slackの注釈との対応は、スキャンの警告を参照してください。

コンテナ

containers[]のフィールド名 型 意味
name string Dockerでは先頭のスラッシュとリンク別名を除いた名前、Kubernetesでは<namespace>/<pod>/<container>
workload object Workloadの対応情報で、所属が不明でも出力

同じ参照が複数の実体を指す場合も、各要素にはその実体に一致するコンテナだけを含めます。

Workload

containers[].workloadのフィールド名 型 意味・省略条件
kind string unknown、compose、deployment、statefulset、daemonset、job、cronjob、podのいずれか
group string Composeプロジェクトまたはnamespaceで、不明なら省略
name string Composeサービス、解決したWorkload名、単独Pod名で、不明なら省略

検出結果のフィールド

findings[]はパッケージグループを、その中のvulns[]は個々の脆弱性を表します。

パッケージ

findings[]のフィールド名 型 意味・省略条件
package string パッケージ名
class string osまたはlang
ecosystem string debian・python-pkgなどの種類で、不明なら""
installed string インストール済みバージョン
fixed string 修正版バージョンで、なければ""
status string fixed、affected、will_not_fix、end_of_lifeのいずれか
severity_counts object 整数値のCRITICAL・HIGH件数(対象の深刻度を広げた場合、HIGHにはCRITICAL以外のすべてを含む)
upgrade_risk string ""、distro_update、safe、caution、unknownのいずれか
priority string act_now、watch、lowのいずれかで、トリアージ無効時は省略
vuln_ids stringの配列 並べ替え済みの脆弱性ID
vulns objectの配列 脆弱性ごとの詳細
runtime object 所見の使用状況で、使用状況の判定が付いていない場合は省略

classとecosystemは、稼働時の使用状況が無効でも出力します。 修正状態と優先度の判定は、検出結果の分類と悪用情報による優先度を参照してください。

脆弱性

vulns[]のフィールド名 型 意味・省略条件
id string Slackリンク表記を含まない脆弱性ID
severity string Trivyの深刻度
status string 集約先と異なる元のTrivyステータスで、同じ場合は省略
url string 主要アドバイザリーURLで、取得できなければ省略
title string Trivyの短いタイトルで、取得できなければ省略
kev boolean 利用可能なKEVカタログに掲載されている場合はtrue
ransomware boolean KEVのランサムウェアフラグで、falseなら省略
epss numberまたはnull EPSS確率で、不明ならnull
priority string act_now、watch、lowのいずれかで、トリアージ無効時は省略
refs objectの配列 追加参照で、空なら省略

statusが省略されている場合は、所属するfindings[]のstatusと同じ値として読みます。 元のTrivyステータスがない場合は、unknownを出力します。

追加参照

refs[]のフィールド名 型 意味
kind string vendorまたはdiscussion
label string 表示ラベル
url string 参照URL

稼働時のフィールド

稼働時のフィールドは、稼働時の使用状況が有効な場合に追加します。 Sensorの状態の意味と観測の限界は、稼働時の使用状況を参照してください。

Sensorの情報

トップレベルのruntimeのフィールド名 型 意味・省略条件
sensor_status string ok、degraded、stale、not_reporting、permission_denied、evidence_invalid、isolation_failed、isolation_degradedのいずれか
heartbeat_at string RFC 3339形式のSensorの報告時刻で、報告時刻がなければ省略
interval_seconds integer 秒単位のサンプリング間隔で、0なら省略
rules object 使用状況の判定方法
rules.os_packages string executed_or_loaded_by_running_process
rules.lang_packages_binary string in_running_binary
rules.lang_packages_runtime string runtime_process_running
events_status string okまたはunavailableで、Sensorの報告がなければ""
events_reason string イベント観測の状態に伴う理由で、空なら省略
counts object 使用状況の件数

使用状況の件数

runtime.countsのフィールド名 型 意味
in_use integer 使用中のパッケージグループ数
not_observed integer 使用が確認されないパッケージグループ数
unavailable integer 使用状況を判定できないパッケージグループ数
muted integer 通知オフのパッケージグループ数

4つの検出結果の配列にある全グループを集計し、各件数は0でも出力します。 mutedは使用状況の件数と重なるため、4値を合計して全件数として扱わないでください。

所見の使用状況

findings[].runtimeのフィールド名 型 意味・省略条件
usage string in_use、not_observed、unavailableのいずれか
reason string 判定できない理由で、空なら省略
evidence_kinds stringの配列 観測の種類で、空なら省略
events_coverage string since_start、partial、noneのいずれかで、情報なしは省略
exposure string host_published_all、host_published_loopback、container_listening、unknownのいずれかで、情報なしは省略
high_privilege boolean UID 0かつuser namespaceなし、危険なcapability、privilegedのいずれかに該当する場合はtrueで、それ以外は省略
containers objectの配列 コンテナの証拠で、空なら省略
muted boolean 通知オフの場合はtrueで、それ以外は省略
muted_reason string 通知オフの理由no_fix_not_in_use_7dで、理由がなければ省略
evidence_kinds[]の値 意味
exe サンプリングで実行中を確認
mapped_library サンプリングでライブラリの読み込みを確認
exec_event eBPFで実行を観測
library_load_event eBPFでライブラリの読み込みを観測
events_coverageの値 意味
since_start コンテナの起動前からeBPFで欠落なく観測
partial 一部の期間やイベントを観測
none eBPFによるイベント観測なし

通知オフの条件は、修正版がない所見の通知オフを参照してください。

コンテナの証拠

次の表は、findings[].runtime.containers[]のフィールドです。 使用中の場合は、公開範囲、権限の順に最も強い証拠を持つコンテナを先頭に配置します。

フィールド名 型 意味・省略条件
name string コンテナ名
container_id string 64桁の16進数のコンテナID
generation_started_at string RFC 3339形式のコンテナの世代の起動時刻で、不明なら省略
usage string in_use、not_observed、unavailableのいずれか
reason string 判定できない理由で、空なら省略
last_seen string RFC 3339形式の最後に確認した時刻で、不明なら省略
ports stringの配列 0.0.0.0:443/tcpなどのポートの証拠で、空なら省略
kinds_ambiguous boolean OSパッケージの複数の観測種類を個々のプロセスに対応付けられない場合はtrueで、それ以外は省略
process_exes stringの配列 kinds_ambiguousの場合の、重複を除いた観測済み実行ファイルの一覧で、空なら省略
process object プロセスの観測がある場合だけ出力
process.exe string 実行ファイルのパスで、空なら省略
process.effective_uid integer 実効UIDで、0でも出力
process.userns boolean user namespaceの使用有無で、falseでも出力
process.dangerous_caps stringの配列 危険なcapabilityの一覧で、空なら省略
process.privileged boolean privilegedの使用有無で、falseでも出力
instances objectの配列 言語パッケージのインスタンスで、空なら省略
instances[].type string インスタンスの種類で、空なら省略
instances[].target string 対象の実行ファイルなどで、空なら省略
instances[].pkg_path string パッケージのパスで、空なら省略
instances[].usage string in_use、not_observed、unavailableのいずれか
instances[].reason string 判定できない理由で、空なら省略

kinds_ambiguousがtrueの場合は、evidence_kindsの各種類をprocess.exeやprocess_exesの各要素に対応付けて解釈しないでください。

判定できない理由

所見、コンテナ、インスタンスのreasonには、次の理由コードを使用します。

理由コード 意味
sensor_not_reporting Sensorからの報告なし
sensor_stale Sensorの報告が古い
evidence_invalid 証拠の検証に失敗
isolation_failed Sensorの分離に失敗
permission_denied 読み取り権限なし
initializing パッケージの索引を準備中
stalled 観測処理が制限時間を超過
parse_failed パッケージデータベースの解析に失敗
truncated 読み取り上限により証拠が不足
incomplete 観測の一部が欠落
generation_unverified コンテナの世代とスキャン対象の対応を確認できない
container_not_observed 対応するコンテナの観測なし
db_absent パッケージデータベースなし
db_error パッケージデータベースの読み取り・解析エラー
db_unsupported 未対応のパッケージデータベース
no_file_list パッケージのファイル一覧なし
attribution_ambiguous 観測したパスの所有パッケージを一意に特定できない
file_replaced 観測したファイルが置き換わっている
version_mismatch パッケージの版が一致しない
ecosystem_unmapped エコシステムに対応する実行環境を特定できない
binary_path_unknown 実行ファイルのパスが不明

差分のフィールド

diffは、前回からの変化を種類別に表します。 変化が成立する条件は、差分と履歴の判定を参照してください。

差分オブジェクト

diffのフィールド名 型 意味・省略条件
new objectの配列 通常のパッケージの変化で、該当なしは[]
resolved objectの配列 パッケージの解消で、該当なしは[]
replaced objectの配列 イメージの実体変更で、該当なしは[]
reference_changes objectの配列 イメージ参照の更新で、該当なしは省略
new_eosl stringの配列 新規EOLベースイメージで、該当なしは[]
resolved_eosl stringの配列 EOLとして記録されなくなった参照で、該当なしは[]
new_eol_packages objectの配列 EOLパッケージの変化で、該当なしは[]
resolved_eol_packages objectの配列 EOLパッケージの解除で、該当なしは[]
oldest_open_days integer 未解決の最長期間で、0でも出力

通常のパッケージの変化

diff.new[]のフィールド名 型 意味・省略条件
image string イメージ参照
package string パッケージ名
kind string new、escalated、new_cves、now_fixable、unmutedのいずれか
ecosystems stringの配列 変化にまとめたグループのエコシステムを重複なく並べ替えた一覧で、不明な種類は""として含む
runtime_usage string in_use、not_observed、unavailableのいずれかで、使用状況の判定がなければ省略
muted boolean この変化の全グループが通知オフの場合はtrueで、それ以外は省略
new_cve_count integer new_cvesの場合の追加CVE件数で、0なら省略
new_cve_ids stringの配列 new_cvesの場合の追加IDで、空なら省略
critical integer CRITICAL件数
high integer HIGH件数(CRITICAL以外の深刻度を含む)
priority string act_now、watch、lowのいずれかで、優先度がなければ省略
reason string escalatedの判定根拠またはunmutedの理由で、空なら省略

new_cve_idsはSlackリンク表記を含まず、その要素数はnew_cve_countと一致します。 reasonの説明文は、通知の言語設定にかかわらず英語です。

パッケージの解消

diff.resolved[]のフィールド名 型 意味
image string イメージ参照
package string 通常側の検出結果からなくなったパッケージ名

解消の意味は、解消の判定を参照してください。

イメージの実体変更

diff.replaced[]のフィールド名 型 意味
ref string イメージ参照
prev_content_ids stringの配列 並べ替え済みの前回の確認済みcontent-ID集合
content_ids stringの配列 並べ替え済みの今回の確認済みcontent-ID集合

配列はnullにせず、空の場合は[]を出力します。

イメージ参照の更新

diff.reference_changes[]のフィールド名 型 意味
repository string 新参照からタグとdigestを除いたリポジトリで、レジストリのポートは保持
previous_ref string 省略していない旧イメージ参照
ref string 省略していない新イメージ参照
workloads stringの配列 旧参照と新参照に共通するWorkloadキーの並べ替え済み一覧で、空なら[]
対象 Workloadキーの形式
Compose compose/<project>/<service>
Kubernetes <kind>/<namespace>/<name>/<container>
所属Workloadが不明な単独Dockerコンテナ container/<name>

履歴を引き継ぐ条件は、イメージ参照の更新を参照してください。

ベースOSのEOL変化

フィールド名 要素の型 意味
diff.new_eosl[] string 新たにEOLとして記録されたベースイメージの参照
diff.resolved_eosl[] string EOLとして記録されなくなったイメージ参照

EOLパッケージの変化

Slackで畳み込むEOLパッケージの変化も含めます。

diff.new_eol_packages[]のフィールド名 型 意味・省略条件
image string イメージ参照
package string パッケージ名
kind string eol_new、eol_new_cves、eol_escalatedのいずれか
ecosystems stringの配列 変化にまとめたグループのエコシステムを重複なく並べ替えた一覧で、不明な種類は""として含む
runtime_usage string in_use、not_observed、unavailableのいずれかで、使用状況の判定がなければ省略
new_cve_ids stringの配列 eol_new_cvesの場合の並べ替え済み追加IDで、空なら省略
critical integer 今回のEOLグループのCRITICAL件数
high integer 今回のEOLグループのHIGH件数(CRITICAL以外の深刻度を含む)
priority string act_now、watch、lowのいずれかで、トリアージ無効時は省略
reason string eol_escalatedの場合の英語の判定根拠で、空なら省略

new_cve_idsはSlackリンク表記を含みません。 new_cve_countは出力しないため、追加件数はnew_cve_idsの要素数で確認します。

EOLパッケージの解除

diff.resolved_eol_packages[]のフィールド名 型 意味
image string イメージ参照
package string EOL区分からなくなったパッケージ名
still_open boolean 同じ参照とパッケージに通常側の検出結果が残る場合はtrueで、falseでも出力

未解決の最長期間

diff.oldest_open_daysは、対象となる記録の最も古い初回検出日からの日数です。 1日未満は切り捨て、対象がない場合は0を出力します。

対象 集計する初回検出日
通常のパッケージ 通常側の初回検出日で、Low・通知オフ・保持中の記録も含む
EOLベースOS ベースOSの初回EOL検出日
畳み込まれていないEOLパッケージ パッケージの初回EOL検出日
畳み込まれているAct nowのEOLパッケージ パッケージの初回EOL検出日
畳み込まれているAct now以外のEOLパッケージ 個別には加算せず、ベースOSの初回EOL検出日で集計

Slackのトリアージ有効時の経過日数とは対象が異なります。 Slack側の定義は、未解決の経過日数を参照してください。

互換性

エコシステム、稼働時の使用状況、EOL、参照更新の情報は、既存のフィールドと修正状態別の構造を維持して追加しています。

受信側では、未知の追加フィールドを許容し、各表の省略条件に従って処理してください。 省略、null、[]、""は、それぞれ別の値として扱います。