
sbomlyze v0.3.6
SBOM용 Git diff—CycloneDX, SPDX, Syft 문서를 비교하고, 변조를 탐지하며, CI를 게이팅합니다.
sbomlyze
당신의 SBOM을 위한 git diff. 두 소프트웨어 자재 명세서(SBOM)를 비교하여 빌드, 버전, 릴리스 간 변경 사항을 확인하세요.
sbomlyze는 버전 문자열뿐만 아니라 구성 요소 해시를 비교합니다. 공격자가 버전을 올리지 않고 패키지를 교체하면 sbomlyze가 이를 플래그로 표시합니다. 생성기와 취약점 스캐너는 이를 놓칩니다.
[![CI][ci-img]][ci] [![GitHub Marketplace][marketplace-img]][marketplace] [![GitHub Release][release-img]][release] [![Go Report Card][go-report-img]][go-report] [![OpenSSF Scorecard][scorecard-img]][scorecard] [![License: Apache-2.0][license-img]][license] [![Downloads][download-img]][download]
이 신호가 매니페스트 또는 일반 구성 요소 diff와 어떻게 다른지 Manifest diff vs. SBOM diff vs. integrity drift에서 확인하세요.
생성기는 SBOM을 만들고 스캐너는 CVE를 찾습니다. sbomlyze는 두 SBOM 사이에 무엇이 변경되었는지, 그리고 그것을 신뢰할 수 있는지 알려줍니다. 생성기 다음에 실행하세요:
syft image:tag -o cyclonedx-json | sbomlyze - --compliance는 임시 파일 없이 생성된 SBOM을 분석하고 점수를 매깁니다. 기준선과 비교하여 드리프트를 분류하고 파이프라인을 게이트하세요.
GitHub Action 빠른 시작
[GitHub Marketplace의 SBOMlyze Diff][marketplace]를 추가하여 체크인된 SBOM 또는 별도로 생성된 SBOM을 git 기준선과 비교하세요. 아래의 불변 SHA는 게시된 v0.5.1 Action입니다.```yaml
steps:
-
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: fetch-depth: 0
-
uses: rezmoss/sbomlyze@31503690611fda8ebba4ed2bd186eda000442594 # v0.5.1 with: sbom-path: build/sbom.cdx.json
이 Action은 기본적으로 Job Summary를 작성하고, 정책을 적용하거나,
무결성 드리프트를 보고하거나, SARIF를 업로드하거나,
단일 풀 리퀘스트 코멘트를 유지할 수 있습니다.
입력, 출력, 권한 및 보안 지침은 [전체 Action 참조](https://github.com/rezmoss/sbomlyze/blob/main/ACTION.md)에서
확인하세요. [라이브 데모 저장소](https://github.com/rezmoss/sbomlyze-action-demo)에서
정상 통과하는 의존성 업데이트와 차단된 동일 버전 해시 변경을 확인할 수
있으며, 공개 워크플로 실행 및 SARIF 증거가 포함되어 있습니다.
포맷별 자체 사용(dogfood) 예시는 공개
[Go + SPDX](https://github.com/rezmoss/sbomlyze-go-spdx-demo),
[Node + CycloneDX](https://github.com/rezmoss/sbomlyze-node-cyclonedx-demo), 또는
[container](https://github.com/rezmoss/sbomlyze-container-demo) 데모를 사용하세요. 각 데모에는
재현 가능한 검토 시나리오 5개가 포함되어 있습니다.
[10분 베타 가이드](https://github.com/rezmoss/sbomlyze/blob/main/BETA.md)는 네 가지 핵심 활성화 및 신호
품질 질문을 다룹니다.
생성된 SBOM은 커밋할 필요가 없습니다. `baseline: workflow-artifact`는
성공한 기본 브랜치 실행에서 가장 최근의 일치하는 아티팩트를
검색합니다. [고정된 Syft 동반 워크플로](https://github.com/rezmoss/sbomlyze/blob/main/examples/workflows/syft-companion.yml)는
생성 및 베이스라인 게시를 보여주며, SBOMlyze는 검토와
정책을 담당합니다.
## 왜 sbomlyze인가?
많은 도구가 SBOM을 생성합니다. 그러나 그것들을 비교하는 도구는 드물고, 변경이 일상적인지 공급망 위험 신호인지 알려주는 도구는 더욱 드뭅니다. sbomlyze가 그 공백을 메웁니다.
| 기능 | **sbomlyze** | cyclonedx-cli | sbomqs | syft / trivy |
|---|:---:|:---:|:---:|:---:|
| SBOM 간 **diff** | ✅ | 기본 | ❌ | ❌ |
| **무결성 / 변조** 드리프트 (버전 변경 없이 해시 변경) | ✅ | ❌ | ❌ | ❌ |
| 의존성 그래프 diff + 전이적 깊이 위험 | ✅ | ❌ | ❌ | ❌ |
| **NTIA / CISA / BSI** 규정 준수 점수 | ✅ | ❌ | ✅ | ❌ |
| 포맷 변환 (Syft / CycloneDX / SPDX) | ✅ | ✅ | ❌ | 부분 |
| **TUI + Web UI** 탐색기 | ✅ | ❌ | ❌ | ❌ |
| 정책 게이트 + SARIF / JUnit / Markdown / HTML / Patch | ✅ | 부분 | 부분 | 부분 |
## 기능
- **SBOM diffing**: 두 SBOM을 비교하여 추가, 제거, 변경된 구성 요소를 한눈에 확인
- **Drift classification**: 버전 드리프트와 **무결성 드리프트**(버전 변경 없이 해시가 변경되어 변조를 나타냄) 및 메타데이터 드리프트를 구분
- **Compliance scoring**: 모든 SBOM을 **NTIA**, **CISA 2025**, **BSI TR-03183** 최소 요소 기준으로 점수화
- **Dependency graph diff**: 전이적 의존성과 공급망 깊이 추적
- **Multi-format support**: Syft, CycloneDX, SPDX (JSON)
- **Format conversion**: CycloneDX, SPDX, Syft 포맷 간 변환
- **Strong identity matching**: PURL → CPE → BOM-ref → namespace/name 우선순위
- **Statistics mode**: 단일 SBOM의 라이선스, 의존성, 무결성 지표 분석
- **Interactive TUI mode**: 키보드 탐색 및 검색으로 SBOM 탐색
- **Web UI mode**: 드래그 앤 드롭 업로드를 지원하는 브라우저 기반 SBOM 탐색기
- **Policy engine**: CI 파이프라인에서 드리프트, 라이선스, 규정 준수 점수 규칙 적용
- **GitHub Marketplace Action**: Job Summary, SARIF 및 선택적 코멘트 출력으로 SBOM 드리프트에 대한 풀 리퀘스트 게이팅
- **Duplicate & collision detection**: 동일 패키지의 여러 버전과 모호한 ID 일치 항목 탐지
- **Multiple output formats**: 텍스트, JSON, SARIF, JUnit XML, Markdown, HTML, JSON Patch
- **Tolerant parsing**: 구조화된 경고와 함께 오류 발생 시에도 계속 파싱
## 설치
### Homebrew (macOS/Linux)```bash
brew install rezmoss/sbomlyze/sbomlyze
설치 스크립트
설치 스크립트는 사용자의 OS/아키텍처에 맞는 올바른 바이너리를 다운로드합니다:```bash
Install to ./bin
curl -sSfL https://raw.githubusercontent.com/rezmoss/sbomlyze/main/install.sh | sh
Install to /usr/local/bin (requires sudo)
curl -sSfL https://raw.githubusercontent.com/rezmoss/sbomlyze/main/install.sh | sudo sh -s -- -b /usr/local/bin
Install specific version
curl -sSfL https://raw.githubusercontent.com/rezmoss/sbomlyze/main/install.sh | sh -s -- -v 0.4.0
**설치 옵션:**
| 옵션 | 설명 |
|--------|-------------|
| `-b <dir>` | 설치 디렉터리 (기본값: `./bin`) |
| `-d` | 디버그 출력 활성화 |
| `-v <ver>` | 특정 버전 설치 (기본값: 최신) |
설치 프로그램은 항상 릴리스 체크섬을 검증합니다. 호환되는 GitHub CLI가 설치되어 있으면, 릴리스의 빌드 출처(provenance)도 검증하며, 해당 검증이 성공하지 않으면 실패로 처리합니다.
### Go 설치```bash
go install github.com/rezmoss/sbomlyze/cmd/sbomlyze@latest
바이너리 릴리스에서
GitHub Releases에서 최신 바이너리를 다운로드하세요.
v0.3.7부터 릴리스 아카이브는 GitHub 아티팩트
증명과 함께 게시됩니다. 다음을 사용하여 다운로드를 독립적으로 검증하세요:```bash
gh attestation verify ./sbomlyze_0.4.0_Linux_x86_64.tar.gz
--repo rezmoss/sbomlyze
--signer-workflow rezmoss/sbomlyze/.github/workflows/release.yml
서명되지 않은 apt, rpm, apk 저장소 지침은 저장소가 패키지 관리자 기본 서명 검증을 지원할 때까지 제거되었습니다.
**macOS 사용자:** 다운로드 후 격리 플래그를 제거하십시오:```bash
xattr -d com.apple.quarantine ./sbomlyze
chmod +x ./sbomlyze
소스에서 빌드```bash
git clone https://github.com/rezmoss/sbomlyze.git cd sbomlyze go build -o sbomlyze ./cmd/sbomlyze
## 빠른 시작```bash
# Compare two SBOMs (the headline use case)
sbomlyze before.json after.json
# Analyze a single SBOM
sbomlyze image.json
# Read an SBOM from standard input
syft image:tag -o cyclonedx-json | sbomlyze -
# Use standard input on either side of a diff
syft image:tag -o cyclonedx-json | sbomlyze baseline.json -
# Score an SBOM against NTIA / CISA / BSI minimum elements
sbomlyze image.json --compliance
# Interactive TUI explorer
sbomlyze image.json -i
# Web UI (opens browser)
sbomlyze -web
# Convert between SBOM formats
sbomlyze convert syft.json --to spdx
sbomlyze convert cdx.json --to syft -o output.json
# JSON output for CI integration
sbomlyze before.json after.json --json
# SARIF output for GitHub Code Scanning
sbomlyze before.json after.json --format sarif
# Markdown report for PR comments
sbomlyze before.json after.json --format markdown
# Apply policy checks
sbomlyze before.json after.json --policy policy.json
사용법```
sbomlyze <sbom1|-> [sbom2|-] [options] sbomlyze convert <sbom|-> --to [-o output]
Modes: Single file: sbomlyze [--json] Show statistics Interactive: sbomlyze -i Interactive explorer Convert: sbomlyze convert --to Convert SBOM format Web server: sbomlyze -web [--port 8080] Web UI explorer Two files: sbomlyze [...] Show diff
Use - in place of one SBOM path to read it from standard input.
Options: -i, --interactive Interactive TUI explorer -web, --web Start web UI server --port Web server port (default 8080) --json Output in JSON format (shortcut for --format json) --format Output format: text, json, sarif, junit, markdown, html, patch --compliance Show NTIA/CISA/BSI compliance scoring --policy Policy file for CI checks --strict Fail on parse warnings --tolerant Continue on parse warnings (default) --no-pager Disable automatic paging of output --to Target format for convert: cyclonedx (cdx), spdx, syft -o, --output Output file for convert (default: stdout) --version, -v Show version information --help, -h Show this help message
## 명령어
### 통계 모드 (단일 파일)
