
스키마 검증과 증거 출처 보존 기능을 갖춘 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입니다. 하나의 프로필이 호출 내 모든 입력에 적용됩니다. |
--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로 프로필을 명시적으로 선택하며, 하나의 프로필이 호출 내
모든 입력에 적용됩니다. 지원되지 않는 도구 또는 버전과 잘못된 형식이거나
모순되는 정규 증거는 종료 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입니다.출력은 결정적입니다. 결과, 규칙 및 보고서 envelope는 안정적으로 정렬되며, 타임스탬프는 생성되지 않고, 모든 출력은 JSON 이스케이프됩니다. JSON 지수 오버플로를 포함한 비유한 수는 게시 전에 실패합니다.
potentially_affected, precondition_present 및 likely_exposed의 경우 warning; unknown, 지원되지 않음, 수정됨 또는 완화된 관찰의 경우 note. 이는 분류 수준이며 CVSS 점수나 악용 가능성 주장이 아닙니다.checkerIdentity/v1 부분 지문을 가집니다.관찰당 하나의 JSON 객체와 그 뒤에 명시적 summary 레코드가 오며, 이는 빈 변환이나 불완전한 변환에도 작성됩니다. 요약에는 complete, result_count, observation_count 및 보고서 envelope(reports)가 포함됩니다.
검증된 각 입력은 결과 행과 독립적으로 보고서 envelope에도 기여합니다. SARIF는 이를 각 일치하는 실행의 properties.input_reports 아래에 저장하고, NDJSON 요약은 이를 reports에 저장합니다.
envelope는 다음을 유지합니다:
report_sha256;evidence_sha256; 및evidence 객체.따라서 정규 규칙 스냅샷과 제한 사항은 빈 실행에서도 유지됩니다. 입력 파일 이름은 절대 게시되지 않습니다. 반복된 동일 입력은 반복된 상태로 유지되며, 서로 다른 입력은 다이제스트로 귀속 가능하게 유지됩니다. 이는 콘텐츠 정체성이며, 진위나 배포된 패치 증명이 아닙니다. 보고서 메타데이터는 관찰 증거와 동일한 구조적 프라이버시 투영을 사용합니다.