
スキーマ検証と証拠の来歴を保持したまま、セキュリティレポートをSARIF 2.1.0およびNDJSONへオフラインで変換するコンバーター。スキャンやアップロードは行いません。
CompleteTech セキュリティチェッカーの JSON レポートを SARIF 2.1.0 または NDJSON にオフライン変換します。プライバシーを保護するデフォルトのプロジェクションを備えています。
scan_results_bridge.py は既存のローカル JSON レポートを読み取り、SARIF 2.1.0 または NDJSON を書き出します。これはオプションであり、個々のチェッカーはこれに依存しません。
exploitability: not_tested を保持します。出力される内容は悪用を裏付けるものではなく、報告された修正バージョンは、検証済みのデプロイ済みパッチや安全性の主張では決してありません。jsonschema は、出力された SARIF のオプションの開発用チェックにのみ必要です。同梱のサンプルは合成データです。
# Convert a report to SARIF (the output file must not already exist)
python scan_results_bridge.py --input examples/report.json --format sarif --output report.sarif
# NDJSON to stdout, publishing reported relative source paths
python scan_results_bridge.py --input examples/report.json --format ndjson --include-relative-paths
# A legacy node2shell-check report (placeholder file name), failing CI on findings or unknowns
python scan_results_bridge.py --input node-report.json --input-schema node2shell-v1 --fail-on either
# Run the tests and show all options
python -m unittest -v
python scan_results_bridge.py --help
無関係なレポートをコミットに含めないでください。
このツールは提供されたローカルの証拠のみを使用します。対象に接触したり、評価対象のソフトウェアを実行したりすることはありません。
python scan_results_bridge.py --input REPORT [--input REPORT ...]
[--input-schema PROFILE] [--format {sarif,ndjson}] [--include-relative-paths]
[--fail-on {none,findings,unknown,either}] [--output FILE [--force]]
| オプション | 意味 |
|---|---|
--input FILE | 必須。既存のレポート JSON ファイル。最大 20 個の入力まで繰り返し指定可能。 |
--input-schema PROFILE | 入力コントラクト。デフォルトは contract-v1.0。1 つのプロファイルが呼び出し内のすべての入力に適用されます。 |
--format {sarif,ndjson} | 出力形式。デフォルトは sarif。 |
--include-relative-paths | 有効な報告済みソースパスの公開をオプトインします。インベントリ由来のロケーションは決して公開されません。プライバシーと証拠を参照してください。 |
--fail-on {none,findings,unknown,either} | 正常な出力後にポリシー終了コード 1 を返します。デフォルトは none。終了コードを参照してください。 |
--output FILE | stdout の代わりに新しいファイルへ書き込みます。 |
--force | 既存の --output ファイルをアトミックに置き換えます。入力やチェッカー自体を置き換えることは決してありません。 |
--output ファイルは、
--force が指定されない限り拒否されます。--force があっても上書きから保護されます。| コード | 意味 |
|---|---|
0 | 変換が成功し、すべての入力が complete: true を報告し、選択された --fail-on ポリシーが満たされました。 |
1 | 変換は成功して書き込まれましたが、--fail-on に一致しました。 |
2 | 運用上の失敗: 不正な形式、未サポート、または上限超過の入力、保護された、または書き込み不能な出力、あるいは complete: false を報告する入力。不完全な入力は終了前に変換・書き込みされ、出力内で不完全としてマークされます。 |
130 | 中断されました。 |
--fail-on ポリシー:
| ポリシー | 出力に以下が含まれる場合に終了コード 1 |
|---|---|
none (デフォルト) | 決して該当しません。 |
findings | potentially_affected、precondition_present、または likely_exposed。 |
unknown | unknown、unsupported_runtime、または source_discrepancy。 |
either | 上記のいずれか。 |
ポリシーによる終了が結果を抑制することは決してありません。終了コード 2 は 1 より優先されます。 運用上の失敗は評価結果とは区別されます。
プロファイルは --input-schema で明示的に選択します。1 つのプロファイルが呼び出し内の
すべての入力に適用されます。未サポートのツールやバージョン、および不正な形式または
矛盾する正規の証拠は、終了コード 2 でフェイルクローズします。正規のバリデータは
Sharp の共通コントラクト
から同じコードライセンスの下でバンドルされており、インストール済みの共有パッケージは
必要ありません。
| プロファイル | 入力 |
|---|---|
contract-v1.0 (デフォルト) | tool/rules/results を含む完全なスキーマ 1.0 オブジェクト。意味論的な証拠参照の検証を含みます。 |
node2shell-v1 | レガシーのバージョンなし node2shell-check tool_version 1.0.0 JSON。名前付きアダプターのみで、汎用スキーマではありません。 |
copyescape-v1.1 | copyescape-check schema_version 1.1 |
vm2-v1.1 | vm2-nesting-check report_schema_version 1.1 |
simplegit-v1.1 | simplegit-rce-check report_schema_version 1.1 |
atlassian-v1 | atlassian-cve-2026-21589-check 整数 schema_version 1 |
flowise-v1 | flowise-cve-2026-69254-check 整数 schema_version 1。version_status は正規化されたステータスにマッピングされます。 |
すべてのプロファイルに共通:
major.minor.patch を使用しなければなりません。自由形式のバージョンラベルは、プライベートなメタデータを含む可能性があるため、出力前に拒否されます。exploitability: not_tested を持たなければなりません。脅威メタデータはそれとは別に保持され、いかなる入力ステータスも確認済みの悪用にはなりません。unknown になります。出力は決定論的です。結果、ルール、レポートエンベロープは安定した順序で並び、タイムスタンプは生成されず、すべての出力は JSON エスケープされます。非有限数(JSON 指数のオーバーフローを含む)は公開前に失敗します。
potentially_affected、precondition_present、likely_exposed には warning、unknown、未サポート、修正済み、または緩和済みの観測には note。これはトリアージレベルであり、CVSS スコアや悪用可能性の主張ではありません。checkerIdentity/v1 の部分フィンガープリントを持ちます。観測ごとに 1 つの JSON オブジェクトがあり、その後に明示的な summary レコードが続きます。これは空または不完全な変換でも書き込まれます。サマリーには complete、result_count、observation_count、およびレポートエンベロープ(reports)が含まれます。
検証済みの各入力は、その結果行とは独立してレポートエンベロープにも寄与します。SARIF はこれらを一致する各実行の properties.input_reports の下に保存し、NDJSON サマリーはそれらを reports に保存します。
エンベロープは以下を保持します:
report_sha256(完全に正規化された入力のダイジェスト)evidence_sha256(レポートレベルのメタデータのダイジェスト)evidence オブジェクト