Webhookの修正計画の更新前後の検査のフィールド
このページでは、言語パッケージの更新前後の検査と、更新ファイルのフィールドを説明します。 修正計画全体の構造は修正計画の全体像を参照してください。
language_items[].source_checkは、依存ファイルの検査記録がある場合に含め、スキャンの失敗や検査の不合格でも記録があれば出力します。
language_items[].artifactsは、採用した更新ファイルの情報がある場合に含め、空なら省略します。
各表のフィールド名は、表の直前に示すオブジェクトからの相対名です。 「値がないとき」の読み方は、レポートのフィールドを参照してください。
更新前後の検査
language_items[].source_checkのフィールドは次のとおりです。
| フィールド名 | 型 | 意味 | 値がないとき |
|---|---|---|---|
commit_sha |
string | 更新前の依存ファイルを取得したコミットのSHA | — |
before |
objectの配列 | 更新前に検査したファイルの一覧 | null |
after |
objectの配列 | 更新後に検査したファイルの一覧 | null |
conditions |
object | スキャン条件の記録 | — |
counts |
integerの配列 | 解消・残存・新規検出の順に並ぶ3つの件数 | — |
truncated |
boolean | 脆弱性や再解決の比較結果の一覧を件数上限で省略したか | falseなら省略 |
resolved |
objectの配列 | 更新前だけに検出された脆弱性の一覧 | 省略 |
remaining |
objectの配列 | 更新前後に検出された脆弱性の一覧 | 省略 |
introduced |
objectの配列 | 更新後だけに検出された脆弱性の一覧 | 省略 |
passed |
boolean | 更新前後の検査に合格したか | false |
basis |
string | 再解決のスキャン比較に使った比較方法 | 追加の比較がなければ省略 |
chain_new_findings |
objectの配列 | 持ち越しを除き、更新後に新たに見つかったパッケージの版ごとの脆弱性 | 省略 |
chain_entry_growth |
objectの配列 | lockfile内で脆弱なパッケージの使用箇所が増えた結果 | 省略 |
chain_edge_growth |
objectの配列 | 脆弱なパッケージを使う依存関係が増えた結果 | 省略 |
chain_carried |
objectの配列 | 版が変わっても同じ依存関係に残る脆弱性の持ち越し | 省略 |
chain_position_refusals |
objectの配列 | 依存関係の変化を確認して不合格とした理由 | 省略 |
次のフィールドには補足があります。
counts- パッケージ名と脆弱性IDの組を1件として数え、版や使用箇所が複数あっても同じ組は1件
- Pythonのパッケージ名は、小文字化し、連続する
-・_・.を1つの-にそろえて照合 - 更新対象のパッケージだけでなく、対象のパッケージマネージャーについて依存ファイルから検出した脆弱性を集計
- 一覧を件数上限で省略する前の件数を出力
- 使用箇所数、依存関係数、
chain_*の一覧の件数は含めない - 比較に到達する前にスキャンなどが失敗した場合も
[0, 0, 0]になるため、0件だけでは検査の完了を判断できない
truncatedresolved・remaining・introducedと、5つのchain_*の一覧は、それぞれ最大500件- いずれかの一覧が上限を超えると
true
passed- 検査の合否を示し、PRの作成済みを意味しない
- 不合格や未完了の理由は、
language_items[].reasonとlanguage_items[].detailも確認
次は、検査記録からコミット、ファイル一覧、件数、合否を抜粋した例です。
{
"commit_sha": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"before": [
{
"path": "package-lock.json",
"sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
},
{
"path": "package.json",
"sha256": "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
}
],
"after": [
{
"path": "package-lock.json",
"sha256": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
},
{
"path": "package.json",
"sha256": "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
}
],
"counts": [
2,
0,
0
],
"passed": true
}
検査したファイル
language_items[].source_check.before[]とlanguage_items[].source_check.after[]の1要素のフィールドは次のとおりです。
| フィールド名 | 型 | 意味 | 値がないとき |
|---|---|---|---|
path |
string | language_items[].source.directoryを基準とした検査対象ファイルの相対パス |
— |
sha256 |
string | 検査したファイル内容のSHA-256を表す16進文字列 | — |
各一覧はpathの順に並びます。
検査対象のファイルと、PRに書き込むartifacts[]のファイルは一致するとは限りません。
スキャン条件
language_items[].source_check.conditionsのフィールドは次のとおりです。
| フィールド名 | 型 | 意味 | 値がないとき |
|---|---|---|---|
TrivyVersion |
string | 検査に使ったTrivyの版 | "" |
VulnerabilityDB |
object | 脆弱性データベースの情報 | — |
JavaDB |
object | Javaデータベースの情報 | — |
Severities |
stringの配列 | 検出対象とした深刻度の一覧 | null |
AnalysisSettings |
string | スキャンに適用した解析設定を識別する文字列 | "" |
VulnerabilityDBSHA |
string | 脆弱性データベースのファイル内容のSHA-256を表す16進文字列 | "" |
JavaDBSHA |
string | Javaデータベースのファイル内容のSHA-256を表す16進文字列 | "" |
TrivySHA |
string | Trivyの実行ファイルのSHA-256を表す16進文字列 | "" |
次のフィールドには補足があります。
TrivyVersionなどのキーremediation.conditionsとは名前が異なり、大文字・小文字を含めて表のとおりに出力- 情報を記録できなかった場合も、
conditionsとその子フィールドは省略しない
Severities- 大文字にそろえ、重複を除いて文字列順に出力
AnalysisSettings- 固定の分類コードではなく、スキャン方法や解析設定を識別する文字列
データベース情報
language_items[].source_check.conditions.VulnerabilityDBとlanguage_items[].source_check.conditions.JavaDBのフィールドは次のとおりです。
| フィールド名 | 型 | 意味 | 値がないとき |
|---|---|---|---|
Version |
integer | データベースのスキーマの版 | 0 |
UpdatedAt |
string | データベースが作成された日時(RFC 3339形式) | "0001-01-01T00:00:00Z" |
Versionだけではデータベースの内容を識別できません。
内容の識別には、対応するVulnerabilityDBSHAまたはJavaDBSHAを使います。
次は、更新前後のスキャンが成功した場合の検査記録から、conditionsを抜粋した例です。
{
"TrivyVersion": "0.71.2",
"VulnerabilityDB": {
"Version": 2,
"UpdatedAt": "2026-10-09T03:00:00Z"
},
"JavaDB": {
"Version": 1,
"UpdatedAt": "2026-10-09T03:00:00Z"
},
"Severities": [
"CRITICAL",
"HIGH"
],
"AnalysisSettings": "fs;scanners=vuln;pkg-types=default;ignore-unfixed=false;list-all-pkgs=true;dev-deps=included;config=none;ignorefile=none;vex=none;env=sanitized;workdir=isolated",
"VulnerabilityDBSHA": "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
"JavaDBSHA": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
"TrivySHA": "1111111111111111111111111111111111111111111111111111111111111111"
}
更新前後のスキャンが完了する前に失敗した場合は、conditions全体が未記録のまま出力されます。
その場合、Trivyの版・解析設定・ハッシュは""、深刻度一覧はnull、各データベースの版は0、日時は"0001-01-01T00:00:00Z"になります。
解消・残存・新規検出の脆弱性
language_items[].source_check.resolved[]、language_items[].source_check.remaining[]、language_items[].source_check.introduced[]の1要素のフィールドは次のとおりです。
| フィールド名 | 型 | 意味 | 値がないとき |
|---|---|---|---|
package |
string | 脆弱性が検出されたパッケージ名 | — |
version |
string | 脆弱性が検出されたパッケージの版 | "" |
vuln_id |
string | 脆弱性ID | — |
severity |
string | 検出された脆弱性の深刻度 | 省略 |
fixed_ver |
string | スキャンが報告した修正版情報 | 省略 |
kev |
boolean | CISA KEVへの掲載を確認したか | falseなら省略 |
次のフィールドには補足があります。
versionresolved[]は更新前、remaining[]とintroduced[]は更新後の検出結果の版- 同じパッケージ名と脆弱性IDが複数の版で検出された場合は、版の文字列順で先頭になる検出結果を代表として出力
- 代表の版は、バージョン番号として比較した最古の版とは限らない
fixed_ver- スキャンが報告した文字列を出力するため、単一の版番号とは限らない
kev- 未掲載の場合と、掲載を確認する情報がない場合は、どちらも省略
次は、resolved[]の1要素の例です。
深刻度
severityの主な値と、conditions.Severities[]の値は次のとおりです。
| 値 | 意味 |
|---|---|
CRITICAL |
緊急 |
HIGH |
高 |
MEDIUM |
中 |
LOW |
低 |
UNKNOWN |
不明 |
severityはスキャンが返した文字列をそのまま出力します。
再解決のスキャン比較
依存元からの再解決では、パッケージの版ごとの脆弱性に加え、脆弱なパッケージの使用箇所や依存関係の変化を記録します。
countsと通常の3つの脆弱性一覧は、引き続きパッケージ名と脆弱性IDの組による比較結果です。
language_items[].source_check.basisの値は次のとおりです。
| 値 | 意味 |
|---|---|
package_version_vuln_edges_positions |
パッケージ名・版・脆弱性ID、使用箇所数、依存関係数に加え、変化した依存関係の位置を確認 |
package_version_vuln_edges |
パッケージ名・版・脆弱性ID、使用箇所数、依存関係数を比較 |
依存関係の位置の確認を行った場合は、chain_carried[]やchain_position_refusals[]に結果が入ることがあります。
一覧が省略されていても、位置を確認したかどうかはbasisで区別できます。
新たに見つかった脆弱性
language_items[].source_check.chain_new_findings[]の1要素のフィールドは次のとおりです。
| フィールド名 | 型 | 意味 | 値がないとき |
|---|---|---|---|
package |
string | 更新後に新たな脆弱性が見つかったパッケージ名 | — |
version |
string | 更新後に脆弱性が検出されたパッケージの版 | "" |
vuln_id |
string | 新たに見つかった脆弱性ID | — |
severity |
string | 検出された脆弱性の深刻度 | 省略 |
fixed_ver |
string | スキャンが報告した修正版情報 | 省略 |
kev |
boolean | CISA KEVへの掲載を確認したか | falseなら省略 |
パッケージ名・版・脆弱性IDの組が更新前になく、持ち越しとして認められなかったものを出力します。 同じパッケージ名と脆弱性IDが更新前にもあっても、版が変わるとこの一覧に入ることがあります。
fixed_verとkevの扱いは、解消・残存・新規検出の脆弱性と同じです。
使用箇所の増加
language_items[].source_check.chain_entry_growth[]の1要素のフィールドは次のとおりです。
| フィールド名 | 型 | 意味 | 値がないとき |
|---|---|---|---|
package |
string | 使用箇所が増えたパッケージ名 | — |
version |
string | 版ごとの増加を示す場合のパッケージの版 | 版をまとめる場合は省略 |
vuln_id |
string | 使用箇所が増えた版にある脆弱性ID | — |
before |
integer | 更新前のlockfile内の使用箇所数 | 0 |
after |
integer | 更新後のlockfile内の使用箇所数 | — |
次のフィールドには補足があります。
version- 値がある場合は、その版の使用箇所数を比較した結果
- 省略される場合は、その脆弱性があるパッケージの版をまとめた使用箇所数
- 同じパッケージ名と脆弱性IDについて版ごとの増加を出力した場合は、版をまとめた増加を重ねて出力しない
before・after- lockfile内のパッケージの記録を数え、プロジェクトからの経路の総数は数えない
- pnpmではsnapshotごと、uvでは同じパッケージ名と版を1件として数える
依存関係の増加
language_items[].source_check.chain_edge_growth[]の1要素のフィールドは次のとおりです。
| フィールド名 | 型 | 意味 | 値がないとき |
|---|---|---|---|
package |
string | 依存関係が増えたパッケージ名 | — |
version |
string | 版を限定して数える場合のパッケージの版 | 現在の出力では省略 |
vuln_id |
string | 依存関係が増えた版にある脆弱性ID | — |
before |
integer | 脆弱性がある版を使う更新前の依存関係数 | 0 |
after |
integer | 脆弱性がある版を使う更新後の依存関係数 | — |
次のフィールドには補足があります。
version- 現在はパッケージ名と脆弱性IDごとに該当する版をまとめて数えるため、出力しない
before・after- プロジェクトからの直接依存と、パッケージ間の依存を数え、peer依存も含める
- 同じ依存元から同じ名前で同じlockfile項目を参照する依存は、適用条件が同じなら1件にまとめる
- 適用条件が異なる依存は別に数える
脆弱性の持ち越し
language_items[].source_check.chain_carried[]の1要素のフィールドは次のとおりです。
| フィールド名 | 型 | 意味 | 値がないとき |
|---|---|---|---|
package |
string | 脆弱性が残るパッケージ名 | — |
from |
string | 変更前の代表の版 | — |
to |
string | 変更後の版 | — |
vuln_id |
string | 残る脆弱性ID | — |
positions |
integer | 同じ脆弱性が残る依存関係の箇所数 | — |
kev |
boolean | CISA KEVへの掲載を確認したか | falseなら省略 |
次のフィールドには補足があります。
from- 変更前の版が複数ある場合は、版の文字列順で先頭になる1つを出力
positions- プロジェクトから脆弱なパッケージまでの経路の総数とは異なる
kev- 未掲載の場合と、掲載を確認する情報がない場合は、どちらも省略
chain_carried[]は、パッケージ名・変更後の版・脆弱性IDごとにまとめます。
持ち越した脆弱性は、この更新では解消していません。
依存関係の位置の検査で不合格とした理由
language_items[].source_check.chain_position_refusals[]の1要素のフィールドは次のとおりです。
| フィールド名 | 型 | 意味 | 値がないとき |
|---|---|---|---|
package |
string | 不合格の原因となるパッケージ名 | — |
version |
string | 不合格の原因となるパッケージの版 | — |
parent |
string | そのパッケージを使う依存元のパッケージ名 | 省略 |
check |
string | 依存関係の位置の検査で不合格とした理由 | — |
vuln_id |
string | 対応する旧版になかった脆弱性IDの1つ | checkがnew_vuln以外なら省略 |
次のフィールドには補足があります。
package・versioncheckがsplitの場合は、分かれる前のパッケージ名と版split以外では、更新後の依存先のパッケージ名と版
parent- 依存元がプロジェクト自身の場合と、
checkがsplitの場合は省略
- 依存元がプロジェクト自身の場合と、
vuln_id- 該当する脆弱性IDが複数ある場合は、文字列順で先頭になる1つを出力
checkの値は次のとおりです。
| 値 | 意味 |
|---|---|
no_position |
更新前の同じ位置に対応する依存関係を確認できない |
merged |
複数の依存経路が合流し、比較する更新前のパッケージの記録を1つに決められない |
name |
同じ位置の依存先のパッケージ名が変わる |
new_vuln |
対応する旧版にはない脆弱性が新しい版にある |
split |
更新前の1つのパッケージの記録が、更新後の複数の脆弱なパッケージの記録に分かれる |
持ち越しがあっても合格とは限らず、検査の合否はlanguage_items[].source_check.passedで確認します。
再解決の採否はlanguage_items[].update.chain.outcomeで確認し、値の意味は依存元からの再解決の結果を参照してください。
language_items[].source_checkは、処理結果に残した1回分の検査記録です。
次のフィールドには補足があります。
language_items[].source_checkとlanguage_items[].artifacts- 更新ファイルがある場合は、同じ採用した更新に対応
language_items[].update.chain.outcomeがadoptedなら再解決の結果で、再解決を不採用にして通常更新を採用した場合は通常更新の結果
language_items[].source_check- 通常更新が失敗し、その後の再解決も不採用になった場合は、再解決の検査記録があればその記録を残す
- その後、パッケージを外して通常更新を再実行し、その結果を採用または失敗として確定した場合は、再実行の検査記録に置き換える
- 再実行が保留になった場合は、再実行前の検査記録を残すことがある
5つの一覧はそれぞれ最大500件で、省略がある場合はlanguage_items[].source_check.truncatedがtrueになります。
再解決のスキャン比較の合否は、省略前の全件で判定します。
検査条件は再解決の検査条件、持ち越しの例は脆弱性の持ち越しを参照してください。
更新ファイル
language_items[].artifacts[]の1要素のフィールドは次のとおりです。
| フィールド名 | 型 | 意味 | 値がないとき |
|---|---|---|---|
path |
string | 更新ファイルのリポジトリのルートからの相対パス | — |
sha256 |
string | 更新後のファイル内容のSHA-256を表す16進文字列 | — |
size |
integer | 更新後のファイルのバイト数 | 0 |
mode |
string | 更新ファイルのGitのファイルモード | 省略 |
modeで使う値は次のとおりです。
| 値 | 意味 |
|---|---|
100644 |
実行権限のない通常ファイル |
100755 |
実行権限のある通常ファイル |
ファイルの内容は含めません。
artifacts[]があることだけでは、PRが作成されたかどうかは判断できません。
次は、language_items[]の1要素から更新ファイルを抜粋した例です。