
sbomlyze v0.5.3
Git diff for SBOMs—CycloneDX, SPDX और Syft दस्तावेज़ों की तुलना करें, छेड़छाड़ का पता लगाएँ और CI को गेट करें।
sbomlyze
आपके SBOM के लिए git diff। दो Software Bills of Materials की तुलना करें और देखें कि builds, versions, और releases के बीच क्या बदला।
sbomlyze केवल version strings की तुलना नहीं करता, बल्कि component hashes की तुलना करता है। जब कोई attacker किसी package का version बढ़ाए बिना उसे बदल देता है, तो sbomlyze उसे flag करता है। Generators और vulnerability scanners इसे miss कर देते हैं।
[![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] [![OpenSSF Best Practices][best-practices-img]][best-practices] [![License: Apache-2.0][license-img]][license] [![Downloads][download-img]][download]
यह signal किसी manifest या साधारण component diff से कैसे अलग है, यह देखें Manifest diff vs. SBOM diff vs. integrity drift में।
Generators SBOMs बनाते हैं और scanners CVEs खोजते हैं। sbomlyze आपको बताता है कि दो SBOMs के बीच क्या बदला और क्या उस पर भरोसा करना चाहिए। इसे अपने generator के बाद चलाएँ:
syft image:tag -o cyclonedx-json | sbomlyze - --complianceबिना किसी temporary file के generated SBOM का विश्लेषण और स्कोर करता है। इसे किसी baseline से तुलना करें ताकि drift को classify किया जा सके और आपकी pipeline को gate किया जा सके।
GitHub Action quickstart
एक checked-in या अलग से generated SBOM की उसके git baseline से तुलना करने के लिए [SBOMlyze Diff from GitHub Marketplace][marketplace] जोड़ें। नीचे दिया गया immutable 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 अपलोड कर सकता है, या एकल pull-request टिप्पणी
बनाए रख सकता है। इनपुट, आउटपुट, अनुमतियों और सुरक्षा मार्गदर्शन के लिए
[पूर्ण Action संदर्भ](https://github.com/rezmoss/sbomlyze/blob/main/ACTION.md) देखें। पास होने वाले dependency अपडेट और
अवरुद्ध same-version hash परिवर्तन के लिए, सार्वजनिक workflow रन और SARIF
प्रमाण के साथ, [लाइव प्रदर्शन रिपॉज़िटरी](https://github.com/rezmoss/sbomlyze-action-demo)
देखें।
प्रारूप-विशिष्ट 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) उदाहरण का उपयोग करें। प्रत्येक
में पाँच पुनरुत्पादनीय समीक्षा परिदृश्य हैं।
[10-मिनट बीटा गाइड](https://github.com/rezmoss/sbomlyze/blob/main/BETA.md) चार केंद्रित सक्रियण और सिग्नल
गुणवत्ता प्रश्न एकत्र करता है।
उत्पन्न SBOMs को commit करने की आवश्यकता नहीं है: `baseline: workflow-artifact`
एक सफल default-branch रन से सबसे हाल का मेल खाता artifact प्राप्त करता है। एक
[पिन किया गया Syft साथी workflow](https://github.com/rezmoss/sbomlyze/blob/main/examples/workflows/syft-companion.yml)
जनरेशन और baseline प्रकाशन दिखाता है जबकि SBOMlyze समीक्षा और नीति के लिए
जिम्मेदार बना रहता है।
## sbomlyze क्यों?
कई टूल्स SBOMs उत्पन्न करते हैं। कुछ ही उनकी तुलना करते हैं, और उससे भी कम बताते हैं कि कोई परिवर्तन नियमित है या supply-chain red flag। sbomlyze उस अंतराल को भरता है।
| क्षमता | **sbomlyze** | cyclonedx-cli | sbomqs | syft / trivy |
|---|:---:|:---:|:---:|:---:|
| SBOM-to-SBOM **diff** | ✅ | basic | ❌ | ❌ |
| **Integrity / tamper** drift (hash बिना version बदले बदल गया) | ✅ | ❌ | ❌ | ❌ |
| Dependency-graph diff + transitive depth risk | ✅ | ❌ | ❌ | ❌ |
| **NTIA / CISA / BSI** compliance scoring | ✅ | ❌ | ✅ | ❌ |
| Format conversion (Syft / CycloneDX / SPDX) | ✅ | ✅ | ❌ | partial |
| **TUI + Web UI** explorers | ✅ | ❌ | ❌ | ❌ |
| Policy gate + SARIF / JUnit / Markdown / HTML / Patch | ✅ | partial | partial | partial |
## विशेषताएँ
- **SBOM diffing**: दो SBOMs की तुलना करें और एक नज़र में जोड़े गए, हटाए गए और बदले गए components देखें
- **Drift classification**: version drift को **integrity drift** (hash बिना version परिवर्तन के बदल गया, जो tampering का संकेत देता है) और metadata drift से अलग करें
- **Compliance scoring**: किसी भी SBOM को **NTIA**, **CISA 2025**, और **BSI TR-03183** न्यूनतम तत्वों के विरुद्ध स्कोर करें
- **Dependency graph diff**: transitive dependencies और supply-chain depth को ट्रैक करें
- **Multi-format support**: Syft, CycloneDX, SPDX (JSON)
- **Format conversion**: CycloneDX, SPDX, और Syft प्रारूपों के बीच कनवर्ट करें
- **Strong identity matching**: PURL → CPE → BOM-ref → namespace/name प्राथमिकता
- **Statistics mode**: license, dependency, और integrity मेट्रिक्स के लिए एकल SBOMs का विश्लेषण करें
- **Interactive TUI mode**: कीबोर्ड नेविगेशन और खोज के साथ SBOMs का अन्वेषण करें
- **Web UI mode**: drag-and-drop अपलोड के साथ ब्राउज़र-आधारित SBOM explorer
- **Policy engine**: CI pipelines में drift, license, और compliance-score नियम लागू करें
- **GitHub Marketplace Action**: Job Summary, SARIF, और वैकल्पिक comment आउटपुट के साथ SBOM drift पर pull requests को gate करें
- **Duplicate & collision detection**: एक ही package के कई versions और अस्पष्ट identity matches खोजें
- **Multiple output formats**: Text, JSON, SARIF, JUnit XML, Markdown, HTML, JSON Patch
- **Tolerant parsing**: संरचित warnings के साथ errors पर जारी रखें
## इंस्टॉलेशन
### 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
इंस्टॉल होता है, तो यह रिलीज़ की बिल्ड प्रोवेनेंस भी सत्यापित करता है और यदि
वह सत्यापन सफल नहीं होता है तो विफल हो जाता है।
### Go Install```bash
go install github.com/rezmoss/sbomlyze/cmd/sbomlyze@latest
बाइनरी रिलीज़ से
GitHub Releases से नवीनतम बाइनरी डाउनलोड करें।
v0.3.7 से शुरू करते हुए, रिलीज़ आर्काइव GitHub artifact
attestations के साथ प्रकाशित किए जाते हैं। डाउनलोड को स्वतंत्र रूप से सत्यापित करें:```bash
gh attestation verify ./sbomlyze_0.4.0_Linux_x86_64.tar.gz
--repo rezmoss/sbomlyze
--signer-workflow rezmoss/sbomlyze/.github/workflows/release.yml
Unsigned apt, rpm, और apk रिपॉज़िटरी निर्देशों को हटा दिया गया है जब तक कि
रिपॉज़िटरी पैकेज-मैनेजर-नेटिव हस्ताक्षर सत्यापन का समर्थन नहीं करतीं।
**macOS उपयोगकर्ता:** डाउनलोड करने के बाद quarantine फ़्लैग हटाएँ:```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 -
