
Git diff for SBOMs—CycloneDX, SPDX और Syft दस्तावेज़ों की तुलना करें, छेड़छाड़ का पता लगाएँ और CI को गेट करें।
आपके 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]
यह संकेत मेनिफेस्ट या सामान्य घटक डिफ़ से क्यों अलग है, यह देखें: मेनिफेस्ट डिफ़ बनाम SBOM डिफ़ बनाम इंटीग्रिटी ड्रिफ्ट।
जनरेटर SBOM बनाते हैं और स्कैनर CVE खोजते हैं। sbomlyze आपको बताता है कि दो SBOM के बीच क्या बदला और क्या आपको उस पर भरोसा करना चाहिए। इसे अपने जनरेटर के बाद चलाएँ:
syft image:tag -o cyclonedx-json | sbomlyze - --complianceबिना किसी अस्थायी फ़ाइल के उत्पन्न SBOM का विश्लेषण और मूल्यांकन करता है। ड्रिफ्ट को वर्गीकृत करने और अपनी पाइपलाइन को गेट करने के लिए इसकी तुलना बेसलाइन से करें।
चेक-इन किए गए या अलग से जनरेट किए गए SBOM की उसकी git बेसलाइन से तुलना करने के लिए [GitHub Marketplace से SBOMlyze Diff][marketplace] जोड़ें। नीचे दिया गया अपरिवर्तनीय 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 लिखता है और नीति लागू कर सकता है, integrity drift की रिपोर्ट कर सकता है, SARIF अपलोड कर सकता है, या एक एकल pull-request टिप्पणी बनाए रख सकता है। inputs, outputs, permissions और security guidance के लिए [संपूर्ण Action संदर्भ](https://github.com/rezmoss/sbomlyze/blob/HEAD/ACTION.md) देखें। एक सफल निर्भरता अद्यतन और एक अवरुद्ध same-version हैश परिवर्तन के लिए [लाइव प्रदर्शन रिपॉजिटरी](https://github.com/rezmoss/sbomlyze-action-demo) देखें, जिसमें सार्वजनिक workflow runs और SARIF साक्ष्य शामिल हैं।
फ़ॉर्मैट-विशिष्ट dogfood के लिए, सार्वजनिक [Go + SPDX](https://github.com/rezmoss/sbomlyze-go-spdx-demo), [Node + CycloneDX](https://github.com/rezmoss/sbomlyze-node-cyclonedx-demo), या [कंटेनर](https://github.com/rezmoss/sbomlyze-container-demo) उदाहरण का उपयोग करें। प्रत्येक में पाँच reproducible समीक्षा परिदृश्य हैं। [10-मिनट बीटा गाइड](https://github.com/rezmoss/sbomlyze/blob/HEAD/BETA.md) चार केंद्रित सक्रियण और सिग्नल गुणवत्ता प्रश्न एकत्र करता है।
जनरेट किए गए SBOM को commit करने की आवश्यकता नहीं है: `baseline: workflow-artifact` एक सफल default-branch run से सबसे हालिया मेल खाता artifact प्राप्त करता है। एक [पिन किया गया Syft सहयोगी workflow](https://github.com/rezmoss/sbomlyze/blob/HEAD/examples/workflows/syft-companion.yml) जनरेशन और baseline प्रकाशन दिखाता है जबकि SBOMlyze समीक्षा और नीति के लिए ज़िम्मेदार रहता है।
## sbomlyze क्यों?
कई उपकरण SBOM जनरेट करते हैं। कुछ उनकी तुलना करते हैं, और और भी कम आपको बताते हैं कि कोई परिवर्तन नियमित है या supply-chain का red flag। sbomlyze इस अंतर को भरता है।
| क्षमता | **sbomlyze** | cyclonedx-cli | sbomqs | syft / trivy |
|---|:---:|:---:|:---:|:---:|
| SBOM-से-SBOM **diff** | ✅ | बुनियादी | ❌ | ❌ |
| **Integrity / tamper** drift (बिना संस्करण बदले हैश बदला) | ✅ | ❌ | ❌ | ❌ |
| Dependency-graph diff + transitive गहराई जोखिम | ✅ | ❌ | ❌ | ❌ |
| **NTIA / CISA / BSI** compliance स्कोरिंग | ✅ | ❌ | ✅ | ❌ |
| प्रारूप रूपांतरण (Syft / CycloneDX / SPDX) | ✅ | ✅ | ❌ | आंशिक |
| **TUI + Web UI** एक्सप्लोरर | ✅ | ❌ | ❌ | ❌ |
| Policy gate + SARIF / JUnit / Markdown / HTML / Patch | ✅ | आंशिक | आंशिक | आंशिक |
## विशेषताएँ
- **SBOM diffing**: दो SBOM की तुलना करें और एक नज़र में जोड़े गए, हटाए गए और बदले गए घटक देखें
- **Drift वर्गीकरण**: संस्करण drift को **integrity drift** (बिना संस्करण परिवर्तन के हैश बदलना, जो tampering का संकेत है) और metadata drift से अलग करें
- **Compliance स्कोरिंग**: किसी भी SBOM को **NTIA**, **CISA 2025** और **BSI TR-03183** न्यूनतम तत्वों के विरुद्ध स्कोर करें
- **Dependency graph diff**: transitive निर्भरताओं और supply-chain गहराई को ट्रैक करें
- **बहु-प्रारूप समर्थन**: Syft, CycloneDX, SPDX (JSON)
- **प्रारूप रूपांतरण**: CycloneDX, SPDX और Syft प्रारूपों के बीच रूपांतरण करें
- **मजबूत पहचान मिलान**: PURL → CPE → BOM-ref → namespace/name वरीयता
- **सांख्यिकी मोड**: लाइसेंस, निर्भरता और integrity मेट्रिक्स के लिए एकल SBOM का विश्लेषण करें
- **इंटरैक्टिव TUI मोड**: कीबोर्ड नेविगेशन और खोज के साथ SBOM एक्सप्लोर करें
- **Web UI मोड**: drag-and-drop अपलोड के साथ ब्राउज़र-आधारित SBOM एक्सप्लोरर
- **पॉलिसी इंजन**: CI पाइपलाइनों में drift, लाइसेंस और compliance-score नियम लागू करें
- **GitHub Marketplace Action**: Job Summary, SARIF और वैकल्पिक टिप्पणी आउटपुट के साथ SBOM drift पर pull requests को गेट करें
- **डुप्लिकेट और टकराव का पता लगाना**: एक ही पैकेज के कई संस्करण और अस्पष्ट पहचान मिलान खोजें
- **एकाधिक आउटपुट प्रारूप**: Text, JSON, SARIF, JUnit XML, Markdown, HTML, JSON Patch
- **सहिष्णु पार्सिंग**: संरचित चेतावनियों के साथ त्रुटियों पर जारी रखें
## स्थापना
### Homebrew (macOS/Linux)```bash
brew install rezmoss/sbomlyze/sbomlyze
इंस्टॉलर स्क्रिप्ट आपके OS/आर्किटेक्चर के लिए सही बाइनरी डाउनलोड करती है:```bash
curl -sSfL https://raw.githubusercontent.com/rezmoss/sbomlyze/main/install.sh | sh
curl -sSfL https://raw.githubusercontent.com/rezmoss/sbomlyze/main/install.sh | sudo sh -s -- -b /usr/local/bin
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 स्थापित होती है, तो यह रिलीज़ की बिल्ड प्रोवेनेंस की भी पुष्टि करता है, और यदि वह सत्यापन सफल नहीं होता है, तो यह विफल होकर बंद हो जाता है (fail closed)।
### 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
Bिना हस्ताक्षर वाले apt, rpm, और apk रिपॉजिटरी निर्देशों को तब तक हटा दिया गया है जब तक कि रिपॉजिटरी पैकेज-मैनेजर-मूल हस्ताक्षर सत्यापन का समर्थन नहीं करतीं।
**macOS उपयोगकर्ता:** डाउनलोड करने के बाद quarantine फ्लैग हटाएँ:```bash
xattr -d com.apple.quarantine ./sbomlyze
chmod +x ./sbomlyze
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
## कमांड्स
### सांख्यिकी मोड (एकल फ़ाइल)
किसी SBOM का विश्लेषण करके घटकों, लाइसेंसों और निर्भरताओं के बारे में जानकारी प्राप्त करें।```bash
sbomlyze image.json
आउटपुट में स्कैन संदर्भ, स्वतः-पहचाने गए प्रमुख निष्कर्ष और आँकड़े शामिल हैं:``` Scan Context: Tool: syft 1.40.1 Schema: 16.0.18 Scan Scope: all-layers Source Type: image Source: alpine:latest
Key Findings: 💻 OS/Distro: Alpine Linux v3.21 📦 Dominated by apk: 71 of 71 packages (100.0%) 📂 8,542 files tracked on filesystem 🔗 Relationships: 71 containment + 64 dependency 📜 License profile: 72% permissive, 20% copyleft ⚠️ Low hash coverage: 0.0% (71 of 71 missing) 🔍 Top catalogers: apkdb-cataloger (71)
Total Components: 71
By Package Type: apk 71
Licenses: With license: 71 Without license: 0
Top Licenses: MIT 17 BSD-3-Clause 8 GPL-2.0-only 8
Integrity: With hashes: 0 Without hashes: 71
Dependencies: Components with deps: 65 Total dep relations: 176
#### मुख्य निष्कर्ष
sbomlyze आपके SBOM के बारे में स्वचालित रूप से अंतर्दृष्टि उत्पन्न करता है। एकल-फ़ाइल विश्लेषण के लिए, इनमें शामिल हैं:
| खोज | विवरण |
|---------|-------------|
| **OS/distro पहचान** | SBOM मेटाडेटा से ऑपरेटिंग सिस्टम या डिस्ट्रो की पहचान करता है |
| **प्रमुख इकोसिस्टम** | जब एक पैकेज प्रकार हावी होता है (सभी पैकेजों का >60%) तो रिपोर्ट करता है |
| **फ़ाइलसिस्टम पदचिह्न** | फ़ाइलसिस्टम पर ट्रैक की गई फ़ाइलों की संख्या |
| **संबंध घनत्व** | कंटेनमेंट और डिपेंडेंसी-ऑफ संबंधों की गणना |
| **स्थान हॉटस्पॉट** | वे शीर्ष निर्देशिकाएँ जहाँ घटक पाए जाते हैं |
| **लाइसेंस जोखिम प्रोफ़ाइल** | अनुमेय/कॉपीलेफ्ट/अज्ञात लाइसेंस प्रतिशत का विवरण |
| **डेटा गुणवत्ता चेतावनियाँ** | जब लाइसेंस (<50%), हैश (<50%), या PURL (<80%) कवरेज कम हो तो सतर्क करता है |
| **डुप्लिकेट चेतावनियाँ** | डुप्लिकेट घटक समूहों को फ़्लैग करता है |
| **कैटलॉगर ब्रेकडाउन** | वे शीर्ष स्कैनर/कैटलॉगर जिन्होंने घटकों का पता लगाया (Syft SBOMs) |
#### कवरेज मेट्रिक्स
सांख्यिकी मोड डेटा गुणवत्ता मूल्यांकन के लिए कवरेज प्रतिशत की गणना करता है:
| मीट्रिक | विवरण |
|--------|-------------|
| **PURL कवरेज** | पैकेज URL वाले घटकों का प्रतिशत |
| **CPE कवरेज** | CPE वाले घटकों का प्रतिशत (भेद्यता स्कैनिंग तत्परता) |
| **लाइसेंस कवरेज** | कम से कम एक लाइसेंस वाले घटकों का प्रतिशत |
| **हैश कवरेज** | अखंडता हैश वाले घटकों का प्रतिशत |
#### लाइसेंस वर्गीकरण
लाइसेंस स्वचालित रूप से इस प्रकार वर्गीकृत किए जाते हैं:
| श्रेणी | उदाहरण |
|----------|----------|
| **कॉपीलेफ्ट** | GPL, LGPL, AGPL, MPL, EPL, CDDL |
| **अनुमेय** | MIT, BSD, Apache, ISC, Zlib, Unlicense |
| **सार्वजनिक डोमेन** | सार्वजनिक डोमेन समर्पण |
| **अज्ञात** | अपरिचित या अनुपलब्ध लाइसेंस |
### कन्वर्ट मोड
SBOM को CycloneDX, SPDX, और Syft JSON प्रारूपों के बीच कन्वर्ट करें। इनपुट प्रारूप स्वचालित रूप से पहचाना जाता है।```bash
# CycloneDX to SPDX
sbomlyze convert image.cdx.json --to spdx
# Syft to CycloneDX (cdx is an alias for cyclonedx)
sbomlyze convert syft-output.json --to cdx
# SPDX to Syft, writing to a file
sbomlyze convert spdx-output.json --to syft -o converted.json
रूपांतरण घटक नाम, संस्करण, PURLs, CPEs, लाइसेंस, हैश, आपूर्तिकर्ता जानकारी और निर्भरता संबंधों को संरक्षित करता है। प्रारूप-विशिष्ट फ़ील्ड (जैसे Syft भाषा, foundBy, locations) को CDX में रूपांतरित करते समय CycloneDX गुणों के माध्यम से ले जाया जाता है।
दो SBOMs की तुलना करके देखें कि संस्करणों के बीच क्या बदला।```bash sbomlyze v1.0.json v2.0.json
#### Diff अवलोकन
Diff की शुरुआत साथ-साथ मेटाडेटा तुलना (फ़ाइल नाम, आकार, OS जानकारी, टूल जानकारी, घटक गणना) से होती है, जिसके बाद उपलब्ध होने पर स्कैन संदर्भ विवरण दिए जाते हैं।
#### आउटपुट```
📊 Drift Summary:
📦 Version drift: 58 components
⚠️ Integrity drift: 1 component (hash changed without version change!)
📝 Metadata drift: 2 components
🔑 Key Findings:
📈 Attack surface: +5 packages (7.0%), +120 files (3.2%)
🚨 2 version downgrades detected: openssl 3.1.4→3.0.2, curl 8.5.0→8.4.0
🔄 56 version upgrades (2 major, 12 minor, 42 patch) among 65 shared packages
⚠️ Integrity drift (1 total): 1 npm (review recommended)
❌ python ecosystem entirely removed (15 → 0 packages)
➕ New ecosystem: golang (8 packages)
✅ Core system packages stable: apk (71) unchanged
+ Added (2):
+ libgcrypt 1.10.3-r0
+ libgpg-error 1.49-r0
- Removed (3):
- libapk 3.0.3-r1
- libgcc 15.2.0-r2
- nghttp3 1.13.1-r0
~ Changed (58):
~ nginx
version: 1.29.4-r1 -> 1.27.3-r1
~ suspicious-pkg ⚠️ [INTEGRITY]
hash[SHA256]: abc123 -> def456
>> Added dependencies:
pkg:apk/alpine/libxslt: +[so:libgcrypt.so.20]
<< Removed dependencies:
pkg:apk/alpine/libcurl: -[so:libnghttp3.so.9]
🔗 New transitive dependencies (3):
+ pkg:npm/lodash (depth 2)
via: [pkg:npm/my-app pkg:npm/express pkg:npm/lodash]
+ pkg:npm/underscore (depth 3)
via: [pkg:npm/my-app pkg:npm/express pkg:npm/lodash pkg:npm/underscore]
📊 New deps by depth:
Depth 2: 1
Depth 3+ (risky): 2 ⚠️
डिफ़ मोड में, sbomlyze दोनों SBOM की तुलना करते हुए स्वचालित रूप से समृद्ध अंतर्दृष्टि उत्पन्न करता है:
जोड़े और हटाए गए घटकों को पैकेज प्रकार के अनुसार नमूना सूचियों के साथ समूहीकृत किया जाता है, जिससे यह देखना आसान हो जाता है कि प्रत्येक इकोसिस्टम में क्या बदला।
किसी भी SBOM को तीन प्रमुख न्यूनतम-तत्व ढाँचों के आधार पर स्कोर करें, ताकि उस प्रश्न का उत्तर दिया जा सके जो लेखा परीक्षक (auditors) और क्रय टीमें बार-बार पूछती हैं: "क्या यह SBOM पर्याप्त रूप से पूर्ण है?"```bash
sbomlyze image.json --compliance
sbomlyze before.json after.json --compliance
sbomlyze image.json --compliance --json
### मूल्यांकन किए गए फ्रेमवर्क
| फ्रेमवर्क | जाँचें | उल्लेखनीय आवश्यकताएँ |
|-----------|--------|----------------------|
| **NTIA न्यूनतम तत्व** (2021) | 7 | नाम, संस्करण, आपूर्तिकर्ता, विशिष्ट ID (PURL/CPE), निर्भरता संबंध, SBOM लेखक, टाइमस्टैम्प |
| **CISA 2025 न्यूनतम तत्व** (अगस्त 2025 ड्राफ़्ट) | 10 | NTIA के अतिरिक्त सॉफ़्टवेयर निर्माता, लाइसेंस जानकारी, **कंपोनेंट हैश**, और टूल नाम जोड़ता है |
| **BSI TR-03183-2** (v2.1.0, 2025) | 9 | कंपोनेंट निर्माता का संपर्क, **SHA-512 हैश**, SPDX-प्रारूप लाइसेंस, और SBOM निर्माता का संपर्क आवश्यक है |
### स्कोर प्रस्तुति
प्रत्येक फ्रेमवर्क एक प्रतिशत (पास हुई जाँचें / कुल जाँचें) और एक समग्र स्कोर (सभी फ्रेमवर्क में औसत) रिपोर्ट करता है, स्थिति संकेतकों के साथ:
| संकेतक | स्कोर |
|-----------|-------|
| 🟢 | ≥ 90% |
| 🟡 | 70–89% |
| 🟠 | 50–69% |
| 🔴 | < 50% |
JSON आउटपुट (`--compliance --json`) में प्रति-जाँच पास/फेल विवरण के साथ पूरी रिपोर्ट शामिल होती है; HTML प्रारूप रिपोर्ट पृष्ठ में अनुपालन रिपोर्ट को एम्बेड करता है।
### CI में गेटिंग अनुपालन
[पॉलिसी इंजन](#policy-engine) के माध्यम से अनुपालन सीमाएँ लागू करें। कोई भी सीमा निर्धारित करने पर बिना `--compliance` फ़्लैग के अनुपालन मूल्यांकन ट्रिगर हो जाता है:```json
{
"min_ntia_score": 85,
"min_cisa_score": 70,
"min_bsi_score": 80,
"min_overall_compliance": 75
}
No input content was provided to translate. Please supply the actual Markdown text for chunk 33 so that I can translate it into Hindi.```bash sbomlyze image.json --policy compliance-policy.json
## निर्भरता ग्राफ अंतर
sbomlyze साधारण कंपोनेंट सूची अंतर से आगे बढ़कर पूर्ण निर्भरता ग्राफ का विश्लेषण करता है, ट्रांज़िटिव निर्भरताओं के माध्यम से उत्पन्न आपूर्ति-श्रृंखला जोखिमों का पता लगाता है।
### विशेषताएँ
| Feature | Description |
|---------|-------------|
| **किनारा अंतर** | सीधी निर्भरताएँ जोड़ी/हटाई गईं (A, B पर निर्भर है) |
| **ट्रांज़िटिव पहुंच** | ग्राफ के माध्यम से दिखाई देने वाली नई अप्रत्यक्ष निर्भरताएँ |
| **ट्रांज़िटिव हानि ट्रैकिंग** | वे ट्रांज़िटिव निर्भरताएँ जो हटा दी गईं |
| **पथ ट्रैकिंग** | दिखाता है कि प्रत्येक नई ट्रांज़िटिव निर्भरता तक कैसे पहुँचा जाता है |
| **गहराई ट्रैकिंग** | प्रत्येक नई निर्भरता आपके कोड से कितने हॉप्स दूर है |
| **जोखिम सारांश** | गहराई 3+ वाली निर्भरताएँ उच्च जोखिम के रूप में चिह्नित |
### गहराई क्यों मायने रखती है
ग्राफ में गहराई से जोड़ी गई निर्भरताएँ:
- ऑडिट और समीक्षा करना कठिन
- अक्सर स्पष्ट अनुमोदन के बिना शामिल की जाती हैं
- सप्लाई चेन हमलों के सामान्य वेक्टर (जैसे, event-stream घटना)
गहराई सारांश समीक्षा को प्राथमिकता देने में मदद करता है:
| Depth | Risk Level | Description |
|-------|------------|-------------|
| **1** | कम | सीधी निर्भरताएँ (आपने इन्हें चुना है) |
| **2** | मध्यम | आपकी निर्भरताओं की निर्भरताएँ |
| **3+** | उच्च ⚠️ | गहरी ट्रांज़िटिव निर्भरताएँ - ध्यान से समीक्षा करें |
### उदाहरण: गहरी ट्रांज़िटिव निर्भरताओं का पता लगाना```bash
# Before: app -> express (simple, 1 dep)
# After: app -> express -> lodash -> underscore -> deep-lib (chain of 4)
sbomlyze before.json after.json
There is no content provided to translate. The input section is empty, so there is nothing to output.``` 🔗 New transitive dependencies (3):
📊 New deps by depth: Depth 2: 1 Depth 3+ (risky): 2 ⚠️
### निर्भरता ग्राफ़ के लिए JSON आउटपुट```json
{
"dependencies": {
"added_deps": {
"pkg:npm/express": ["pkg:npm/lodash", "pkg:npm/body-parser"]
},
"removed_deps": {},
"transitive_new": [
{
"target": "pkg:npm/underscore",
"via": ["pkg:npm/my-app", "pkg:npm/express", "pkg:npm/lodash", "pkg:npm/underscore"],
"depth": 3
}
],
"transitive_lost": [],
"depth_summary": {
"depth_1": 0,
"depth_2": 2,
"depth_3_plus": 2
}
}
}
sbomlyze घटक परिवर्तनों को तीन ड्रिफ्ट प्रकारों में वर्गीकृत करता है, जिससे आप सामान्य अपडेट्स को संभावित संदिग्ध परिवर्तनों से अलग कर सकते हैं।
अखंडता ड्रिफ्ट तब होता है जब किसी घटक का हैश बदलता है लेकिन उसका संस्करण वही रहता है। यह संकेत दे सकता है:
~ suspicious-pkg ⚠️ [INTEGRITY] hash[SHA256]: abc123 -> def456
**Recommendation**: हमेशा इंटीग्रिटी ड्रिफ्ट की जाँच करें। यह हानिरहित हो सकता है, लेकिन यह सप्लाई चेन सुरक्षा के लिए एक महत्वपूर्ण संकेत है।
### ड्रिफ्ट के लिए JSON आउटपुट
ड्रिफ्ट सारांश `diff` ऑब्जेक्ट के अंदर है:```json
{
"diff": {
"changed": [
{
"id": "pkg:npm/suspicious-pkg",
"name": "suspicious-pkg",
"changes": ["hash[SHA-256]: abc123 -> def456"],
"drift": {
"type": "integrity",
"hash_changes": {
"changed": {
"SHA-256": {"before": "abc123", "after": "def456"}
}
}
}
}
],
"drift_summary": {
"version_drift": 55,
"integrity_drift": 1,
"metadata_drift": 2
}
}
}
ड्रिफ्ट सारांश निकाला जा रहा है:```bash
sbomlyze before.json after.json --json | jq '.diff.drift_summary'
sbomlyze before.json after.json --json | jq -e '.diff.drift_summary.integrity_drift > 0'
## डुप्लिकेट और टकराव का पता लगाना
### डुप्लिकेट का पता लगाना
sbomlyze किसी SBOM के भीतर समान पहचान लेकिन विभिन्न संस्करणों वाले घटकों की पहचान करता है:```
⚠️ Duplicates Found: 2
lodash: [4.17.20, 4.17.21]
express: [4.18.0, 4.19.2]
In diff mode, duplicate version diffing tracks:
टक्कर अस्पष्ट पहचान मिलान होते हैं जहाँ घटक समान ID साझा करते हैं लेकिन परस्पर विरोधी विशेषताएँ रखते हैं:
| प्रकार | विवरण |
|---|---|
| नाम बेमेल | समान पहचान ID पर मैप किए गए विभिन्न घटक नाम |
| हैश बेमेल | किसी घटक के समान संस्करण में अलग-अलग हैश होते हैं (संभावित छेड़छाड़) |
sbomlyze sbom.json -i

### TUI कीबोर्ड शॉर्टकट
#### नेविगेशन
| कुंजी | क्रिया |
|-----|--------|
| `↑` / `k` | ऊपर जाएँ |
| `↓` / `j` | नीचे जाएँ |
| `PgUp` / `Ctrl+u` | आधा पेज ऊपर |
| `PgDn` / `Ctrl+d` | आधा पेज नीचे |
| `Home` / `g` | शीर्ष पर जाएँ |
| `End` / `G` | सबसे नीचे जाएँ |
| `Enter` | घटक विवरण देखें |
| `Esc` / `Backspace` | वापस जाएँ |
| `q` / `Ctrl+c` | बाहर निकलें |
#### खोज और फ़िल्टर
| कुंजी | क्रिया |
|-----|--------|
| `/` | सभी फ़ील्ड्स (नाम, PURL, लाइसेंस, रॉ JSON) में गहन खोज |
| `t` | पैकेज प्रकार (npm, apk, golang, pypi, आदि) द्वारा फ़िल्टर करें |
| `c` | सभी सक्रिय फ़िल्टर साफ़ करें |
#### दृश्य
| कुंजी | संदर्भ | क्रिया |
|-----|---------|--------|
| `j` | विवरण दृश्य | सिंटैक्स हाइलाइटिंग के साथ रॉ घटक JSON देखें |
| `d` | JSON दृश्य | विवरण दृश्य पर वापस स्विच करें |
| `Enter` | JSON दृश्य | घटक JSON को फ़ाइल में निर्यात करें |
| `?` | कोई भी दृश्य | सभी कीबाइंडिंग के साथ सहायता दिखाएँ |
### घटक विवरण दृश्य
विवरण दृश्य व्यापक घटक जानकारी दिखाता है:
- पैकेज जानकारी (नाम, संस्करण, PURL, नेमस्पेस, आपूर्तिकर्ता)
- दृश्य संकेतकों के साथ लाइसेंस
- अखंडता हैश
- CPEs (कॉमन प्लेटफ़ॉर्म एन्यूमरेशन)
- निर्भरता सूची
- पहचानकर्ता (ID, BOM-ref, SPDX-ID)
## वेब UI मोड
ड्रैग-एंड-ड्रॉप फ़ाइल अपलोड के साथ ब्राउज़र-आधारित SBOM एक्सप्लोरर प्रारंभ करें:```bash
# Start web server on default port 8080
sbomlyze -web
# Start on custom port
sbomlyze -web --port 3000
फिर अपने ब्राउज़र में http://localhost:8080 खोलें।
वेब UI व्यापक आँकड़े दिखाता है, जिनमें शामिल हैं:
सुरक्षा समीक्षा
अनुपालन ऑडिट
विकास डिबगिंग
वेब UI में SBOM के भीतर फ़ाइलों का अन्वेषण करने के लिए एक पूर्ण फाइलसिस्टम ब्राउज़र शामिल है (विशेष रूप से फ़ाइल मेटाडेटा वाले Syft-जनरेटेड SBOM के लिए उपयोगी):
*.so, /usr/lib/**/*.conf)-i (इंटरैक्टिव मोड)कीबोर्ड नियंत्रणों के साथ SBOM नेविगेट करने के लिए टर्मिनल-आधारित TUI एक्सप्लोरर लॉन्च करें।```bash sbomlyze image.json -i
Features: ट्री नेविगेशन, घटक विवरण, खोज, लाइसेंस/हैश निरीक्षण।
### `-web` (वेब सर्वर मोड)
ब्राउज़र-आधारित SBOM अन्वेषण के लिए एक वेब सर्वर शुरू करें।```bash
# Default port 8080
sbomlyze -web
# Custom port
sbomlyze -web --port 3000
वेब UI ड्रैग-एंड-ड्रॉप अपलोड, इंटरैक्टिव ट्री व्यू, डीप सर्च और स्टैटिस्टिक्स डैशबोर्ड प्रदान करता है।
--complianceSBOM को NTIA, CISA 2025 और BSI TR-03183 न्यूनतम-तत्व फ्रेमवर्क के विरुद्ध स्कोर करें। देखें कम्प्लायंस स्कोरिंग।```bash sbomlyze image.json --compliance sbomlyze image.json --compliance --json
### `--format` / `-f`
आउटपुट प्रारूप चुनें। सात प्रारूप उपलब्ध हैं:
| प्रारूप | फ़्लैग | विवरण | सर्वोत्तम उपयोग |
|--------|------|-------------|----------|
| **text** | `--format text` (डिफ़ॉल्ट) | मानव-पठनीय टर्मिनल आउटपुट | स्थानीय निरीक्षण |
| **json** | `--json` या `--format json` | संरचित JSON | CI पाइपलाइन, स्क्रिप्टिंग |
| **sarif** | `--format sarif` | GitHub कोड स्कैनिंग के लिए SARIF 2.1.0 | GitHub एकीकरण |
| **junit** | `--format junit` | JUnit XML परीक्षण परिणाम | CI परीक्षण डैशबोर्ड |
| **markdown** | `--format markdown` | PR-टिप्पणी-तैयार Markdown रिपोर्ट | पुल रिक्वेस्ट टिप्पणियाँ |
| **html** | `--format html` | स्व-निहित HTML रिपोर्ट (इनलाइन CSS/JS) | ऑडिटर, साझा करने योग्य रिपोर्ट |
| **patch** | `--format patch` | RFC 6902 JSON पैच ऑपरेशन | प्रोग्रामेटिक पैचिंग |```bash
# SARIF output for GitHub Code Scanning
sbomlyze before.json after.json --format sarif > results.sarif
# JUnit output for CI test dashboards
sbomlyze before.json after.json --format junit > results.xml
# Markdown report for PR comments
sbomlyze before.json after.json --format markdown > report.md
# Self-contained HTML report
sbomlyze before.json after.json --format html > report.html
# JSON Patch operations
sbomlyze before.json after.json --format patch > changes.json
GitHub Code Scanning के लिए उपयुक्त SARIF 2.1.0 रिपोर्ट उत्पन्न करता है। पता लगाए गए नियमों में शामिल हैं:
integrity-drift (error): बिना संस्करण परिवर्तन के हैश बदल गयाdeep-dependency (warning): गहराई 3+ पर नई निर्भरताnew-component / removed-component (note): कंपोनेंट जोड़/हटानाversion-change (note): कंपोनेंट संस्करण अद्यतनpolicy-violation (error/warning): नीति नियम उल्लंघननिम्न के लिए परीक्षण मामलों के साथ JUnit XML उत्पन्न करता है:
निम्न के साथ एक Markdown रिपोर्ट उत्पन्न करता है:
एक एकल स्व-निहित HTML फ़ाइल (इनलाइन CSS और JavaScript, कोई बाहरी एसेट नहीं) उत्पन्न करता है, जो ऑडिटरों को ईमेल करने या रिलीज़ के साथ संलग्न करने के लिए उपयुक्त है। जब --compliance सेट होता है, तो इसमें सांख्यिकी डैशबोर्ड, निर्भरता वृक्ष, ड्रिफ्ट सारांश और एम्बेडेड अनुपालन रिपोर्ट शामिल होती है।
अंतर दर्शाने वाले RFC 6902 JSON Patch ऑपरेशनों (add, remove, replace) की एक सरणी उत्पन्न करता है।
--json--format json के लिए शॉर्टहैंड। प्रोग्रामेटिक उपभोग के लिए परिणामों को JSON प्रारूप में आउटपुट करता है।```bash
sbomlyze image.json --json
sbomlyze before.json after.json --json
**स्टैट्स JSON संरचना:**```json
{
"stats": {
"total_components": 71,
"by_type": {"apk": 71},
"by_license": {"MIT": 17, "BSD-3-Clause": 8},
"without_license": 0,
"with_hashes": 0,
"without_hashes": 71,
"total_dependencies": 176,
"with_dependencies": 65,
"duplicate_count": 0,
"by_language": {"go": 45, "python": 12},
"by_found_by": {"apk-db-cataloger": 71},
"license_categories": {
"copyleft": 8,
"permissive": 55,
"public_domain": 0,
"unknown": 8
},
"with_cpes": 71,
"without_cpes": 0,
"with_purl": 71,
"without_purl": 0
},
"warnings": []
}
--policy <file>पॉलिसी नियम लागू करें और उल्लंघन होने पर CI विफल करें।```bash sbomlyze before.json after.json --policy policy.json
विवरण के लिए [Policy Engine](#policy-engine) देखें।
### `--strict`
किसी भी पार्सिंग त्रुटि पर तुरंत विफल हो जाएँ।```bash
sbomlyze broken.json --strict
# Error parsing broken.json: unknown SBOM format
# exit status 1
--tolerant (डिफ़ॉल्ट)त्रुटियों पर प्रोसेसिंग जारी रखें, चेतावनियाँ एकत्र करें।```bash sbomlyze broken.json --tolerant
पार्स चेतावनियों में संरचित जानकारी शामिल होती है: स्रोत फ़ाइल, एक मानव-पठनीय संदेश, और वैकल्पिक रूप से वह फ़ील्ड जिसके कारण समस्या उत्पन्न हुई।
### `--no-pager`
स्वचालित आउटपुट पेजिंग अक्षम करें। आउटपुट को किसी अन्य कमांड में पाइप करते समय या गैर-इंटरैक्टिव वातावरण में चलाते समय उपयोगी।```bash
sbomlyze image.json --no-pager
sbomlyze before.json after.json --no-pager | head -20
CI/CD पाइपलाइनों में नियम लागू करने के लिए पॉलिसियाँ बनाएँ। उल्लंघन होने पर sbomlyze कोड 1 के साथ बाहर निकलता है।
{ "max_added": 10, "max_removed": 5, "max_changed": 100, "deny_licenses": ["GPL-3.0", "AGPL-3.0"], "require_licenses": true, "deny_duplicates": true, "deny_integrity_drift": true, "max_depth": 3, "warn_supplier_change": true, "warn_new_transitive": true, "min_ntia_score": 85, "min_cisa_score": 70, "min_bsi_score": 80, "min_overall_compliance": 75 }
### नीति नियम
| Rule | प्रकार | विवरण |
|------|------|-------------|
| `max_added` | int | अधिकतम नए घटकों की अनुमति (0 = असीमित) |
| `max_removed` | int | अधिकतम हटाए गए घटकों की अनुमति (0 = असीमित) |
| `max_changed` | int | अधिकतम बदले गए घटकों की अनुमति (0 = असीमित) |
| `deny_licenses` | []string | निषिद्ध लाइसेंस पहचानकर्ताओं की सूची |
| `require_licenses` | bool | सभी *जोड़े गए* घटकों के पास लाइसेंस होना आवश्यक है (केवल diff मोड में नए जोड़े गए घटकों की जाँच करता है) |
| `deny_duplicates` | bool | यदि परिणाम में डुप्लिकेट पैकेज मौजूद हों तो विफल करें |
| `deny_integrity_drift` | bool | यदि बिना संस्करण परिवर्तन के घटक हैश बदल गया हो तो विफल करें (आपूर्ति श्रृंखला जोखिम) |
| `max_depth` | int | यदि गहराई >= N पर नई ट्रांज़िटिव निर्भरताएँ हों तो विफल करें (0 = असीमित) |
| `warn_supplier_change` | bool | यदि घटक का आपूर्तिकर्ता/लेखक बदल गया हो तो चेतावनी दें (विफल नहीं करें) |
| `warn_new_transitive` | bool | किसी भी नई ट्रांज़िटिव निर्भरता पर चेतावनी दें (विफल नहीं करें) |
| `min_ntia_score` | int | यदि NTIA अनुपालन स्कोर इससे कम है तो विफल करें (0-100, 0 = अक्षम) |
| `min_cisa_score` | int | यदि CISA अनुपालन स्कोर इससे कम है तो विफल करें (0-100, 0 = अक्षम) |
| `min_bsi_score` | int | यदि BSI अनुपालन स्कोर इससे कम है तो विफल करें (0-100, 0 = अक्षम) |
| `min_overall_compliance` | int | यदि समग्र अनुपालन स्कोर इससे कम है तो विफल करें (0-100, 0 = अक्षम) |
> किसी भी `min_*_score` थ्रेशोल्ड को सेट करना स्वचालित रूप से अनुपालन मूल्यांकन ट्रिगर करता है, भले ही `--compliance` फ़्लैग न हो।
### उदाहरण: सख्त नीति```json
{
"max_added": 5,
"max_removed": 3,
"max_changed": 20,
"deny_licenses": ["GPL-3.0", "AGPL-3.0", "SSPL-1.0"],
"require_licenses": true,
"deny_duplicates": true,
"deny_integrity_drift": true,
"max_depth": 3,
"warn_supplier_change": true,
"warn_new_transitive": true,
"min_overall_compliance": 80
}
!! Policy Violations (3): [max_added] too many components added: 10 > 5 [max_removed] too many components removed: 7 > 3 [deny_licenses] component foo has denied license: GPL-3.0
## समर्थित SBOM प्रारूप
| प्रारूप | फ़ाइल पहचान | निकाले गए पहचानकर्ता |
|--------|----------------|----------------------|
| Syft (मूल) | JSON कुंजी `"artifacts"` + `"source"`, `"distro"`, `"descriptor"` में से एक | PURL, CPE, name |
| CycloneDX | JSON कुंजी `"bomFormat"` = `"CycloneDX"`, या `"$schema"` जिसमें `cyclonedx` हो | PURL, CPE, BOM-ref, group (namespace) |
| SPDX | JSON कुंजी `"spdxVersion"` जो `"SPDX-"` से शुरू होती है | PURL, CPE, SPDXID |
सभी प्रारूप JSON होने चाहिए। XML समर्थन वर्तमान में उपलब्ध नहीं है।
### प्रारूप रूपांतरण
sbomlyze किसी भी तीन समर्थित प्रारूपों के बीच रूपांतरण कर सकता है:```bash
sbomlyze convert input.json --to spdx # any format → SPDX 2.3
sbomlyze convert input.json --to cyclonedx # any format → CycloneDX 1.5
sbomlyze convert input.json --to syft # any format → Syft JSON
विवरण के लिए कन्वर्ट मोड देखें।
sbomlyze विभिन्न प्रारूपों में SBOMs की तुलना कर सकता है:```bash
sbomlyze syft-output.json cyclonedx-output.json
sbomlyze spdx-output.json syft-output.json
**नोट:** विभिन्न SBOM प्रारूप विवरण के विभिन्न स्तर निकालते हैं। एक क्रॉस-प्रारूप अंतर ऐसे परिवर्तन दिखा सकता है जो प्रारूप अंतर (जैसे, फ़ील्ड उपलब्धता) को दर्शाते हैं, न कि वास्तविक सिस्टम परिवर्तनों को। मुख्य निष्कर्ष प्रणाली पहचान होने पर स्कैन संदर्भ बेमेल के बारे में चेतावनी देगी।
## घटक पहचान मिलान
घटकों का मिलान प्राथमिकता-आधारित पहचान प्रणाली का उपयोग करके किया जाता है:
| प्राथमिकता | पहचानकर्ता | उदाहरण | विवरण |
|----------|------------|---------|-------------|
| 1 | PURL | `pkg:npm/lodash` | पैकेज URL (संस्करण हटाया गया) |
| 2 | CPE | `cpe:vendor:product` | CPE विक्रेता:उत्पाद (संस्करण हटाया गया) |
| 3 | BOM-ref / SPDXID | `ref:component-123` | CycloneDX bom-ref या SPDX पहचानकर्ता |
| 4 | Namespace + Name | `com.example/mypackage` | नाम के साथ समूह/नेमस्पेस |
| 5 | Name | `simple-package` | केवल नाम पर फ़ॉलबैक |
## सीआई/सीडी एकीकरण
### GitHub Actions
SBOMlyze एक डिपेंडेंसी-मुक्त JavaScript Action के रूप में उपलब्ध है। यह चेक-इन किए गए या अलग से उत्पन्न हेड SBOM की तुलना पुल रिक्वेस्ट के git आधार पर मौजूद फ़ाइल से करता है, एक जॉब सारांश प्रकाशित करता है, और वैकल्पिक रूप से SARIF उत्पन्न करता है या एक PR टिप्पणी अपडेट करता है।```yaml
name: SBOM Check
on:
pull_request:
permissions:
contents: read
jobs:
sbom-diff:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
fetch-depth: 0
- id: sbomlyze
uses: rezmoss/sbomlyze@31503690611fda8ebba4ed2bd186eda000442594 # v0.5.1
with:
sbom-path: build/sbom.cdx.json
policy: .github/sbom-policy.json
fail-on: policy
Action कभी भी जनरेटर कमांड नहीं चलाता। हेड SBOM को एक अलग, समीक्षित चरण में बनाएँ या इसे रिपॉज़िटरी में कमिट करें। comment और sarif दोनों डिफ़ॉल्ट रूप से false होते हैं; फोर्क किए गए PRs को अभी भी पूरा Job Summary मिलता है जब comment अनुमति उपलब्ध नहीं होती। हर input/output, SHA-pinning, SARIF upload, permissions, और सुरक्षा व्यवहार के लिए Action reference देखें।
sbom-diff: stage: test script: - syft . -o json > current.json - sbomlyze baseline.json current.json --policy policy.json --json > sbom-report.json - sbomlyze baseline.json current.json --format junit > sbom-junit.xml artifacts: paths: - sbom-report.json reports: junit: sbom-junit.xml when: always
### अखंडता विचलन अलर्ट```bash
# Alert on any integrity drift (CI example)
if sbomlyze baseline.json current.json --json | jq -e '.diff.drift_summary.integrity_drift > 0' > /dev/null; then
echo "⚠️ INTEGRITY DRIFT DETECTED - Investigate immediately!"
exit 1
fi
if sbomlyze baseline.json current.json --json | jq -e '.diff.dependencies.depth_summary.depth_3_plus > 0' > /dev/null; then echo "⚠️ New deep transitive dependencies detected - Review required!" fi
### अनुपालन गेट```bash
# Fail the build if the SBOM doesn't meet minimum-element requirements
sbomlyze current.json --policy compliance-policy.json
# where compliance-policy.json sets min_overall_compliance / min_ntia_score / etc.
| Code | Meaning |
|---|---|
| 0 | सफलता, कोई अंतर या उल्लंघन नहीं |
| 1 | अंतर मिले (कोई भी जोड़े/हटाए/बदले गए घटक), नीति उल्लंघन, या त्रुटियाँ |
नोट: diff मोड में, जब भी किसी भी घटक में परिवर्तन पता चलता है, exit code 1 लौटाया जाता है, भले ही कोई पॉलिसी फ़ाइल न हो। यह इसे CI में एक सरल "क्या कुछ बदला है?" गेट के रूप में उपयोगी बनाता है।
syft nginx:1.25-alpine -o json > nginx-125.json syft nginx:1.26-alpine -o json > nginx-126.json
sbomlyze nginx-125.json nginx-126.json
### लाइसेंस ऑडिट```bash
# Check for GPL licenses in new dependencies
cat > audit-policy.json << EOF
{
"deny_licenses": ["GPL-2.0", "GPL-3.0", "LGPL-2.1", "LGPL-3.0"],
"require_licenses": true
}
EOF
sbomlyze old.json new.json --policy audit-policy.json
cat > no-drift.json << EOF { "max_added": 0, "max_removed": 0, "max_changed": 0 } EOF
sbomlyze baseline.json current.json --policy no-drift.json
### अनुपालन जांच```bash
# Score an SBOM and enforce a minimum
sbomlyze image.json --compliance
cat > compliance-policy.json << EOF
{
"min_ntia_score": 90,
"min_overall_compliance": 80
}
EOF
sbomlyze image.json --policy compliance-policy.json
syft alpine:latest -o json > alpine-syft.json sbomlyze convert alpine-syft.json --to cyclonedx -o alpine-cdx.json
sbomlyze convert vendor-sbom.cdx.json --to spdx > vendor-sbom.spdx.json
sbomlyze convert input.json --to spdx | jq '.packages | length'
### ब्राउज़र में SBOM एक्सप्लोर करें```bash
# Generate SBOM and explore in web UI
syft alpine:latest -o json > alpine.json
# Start web server
sbomlyze -web
# Then open http://localhost:8080 and drag-drop alpine.json
sbomlyze alpine.json -i
## विकास
### टेस्ट चलाएँ```bash
make test
# or
go test -v ./...
make lint # runs go vet + golangci-lint + staticcheck make vulncheck # runs govulncheck for known CVEs
### निर्माण```bash
make build-quick
# or
go build -o sbomlyze ./cmd/sbomlyze
make all # Run test, lint, and build make test # Run all tests with race detector make lint # Run go vet, golangci-lint, and staticcheck make vulncheck # Run govulncheck for known vulnerabilities make build # Build with goreleaser (snapshot) make build-quick # Quick build for development make snapshot-test # Run snapshot tests only make update-snapshot # Update snapshot golden files make clean # Remove build artifacts
## योगदान
योगदान का स्वागत है! अच्छे पहले मुद्दों को [`good first issue`](https://github.com/rezmoss/sbomlyze/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) लेबल दिया गया है। यदि उपलब्ध हो तो [CONTRIBUTING.md](https://github.com/rezmoss/sbomlyze/blob/HEAD/CONTRIBUTING.md) देखें, और बदलाव प्रस्तावित करने के लिए issue या चर्चा खोलने में संकोच न करें।
[ci]: https://github.com/rezmoss/sbomlyze/actions/workflows/ci.yml
[ci-img]: https://github.com/rezmoss/sbomlyze/actions/workflows/ci.yml/badge.svg
[marketplace]: https://github.com/marketplace/actions/sbomlyze-diff
[marketplace-img]: https://img.shields.io/badge/Marketplace-SBOMlyze%20Diff-blue?logo=github
[release]: https://github.com/rezmoss/sbomlyze/releases
[release-img]: https://img.shields.io/github/v/release/rezmoss/sbomlyze
[go-report]: https://goreportcard.com/report/github.com/rezmoss/sbomlyze
[go-report-img]: https://goreportcard.com/badge/github.com/rezmoss/sbomlyze
[license]: https://raw.githubusercontent.com/rezmoss/sbomlyze/main/LICENSE
[license-img]: https://img.shields.io/badge/License-Apache%202.0-blue.svg
[download]: https://github.com/rezmoss/sbomlyze/releases
[download-img]: https://img.shields.io/github/downloads/rezmoss/sbomlyze/total
[scorecard]: https://scorecard.dev/viewer/?uri=github.com/rezmoss/sbomlyze
[scorecard-img]: https://api.scorecard.dev/projects/github.com/rezmoss/sbomlyze/badge
| प्रारूप | --to मान | आउटपुट |
|---|
| CycloneDX 1.5 | cyclonedx या cdx | मेटाडेटा, निर्भरताएँ और गुणों के साथ CycloneDX JSON |
| SPDX 2.3 | spdx | पैकेज, संबंधों और बाहरी संदर्भों के साथ SPDX JSON |
| Syft | syft | आर्टिफैक्ट्स, संबंधों, स्रोत और डिस्ट्रो जानकारी के साथ Syft JSON |
| निष्कर्ष | विवरण |
|---|
| स्कैन संदर्भ बेमेल | चेतावनी देता है यदि SBOM के बीच स्कीमा संस्करण या स्कैन दायरा बदल गया है |
| आक्रमण सतह डेल्टा | पैकेज, फ़ाइल और संबंध गिनती में प्रतिशत के साथ परिवर्तन |
| लुप्त/नए इकोसिस्टम | पैकेज प्रकार जो पूरी तरह से प्रकट या गायब हो गए |
| OS/डिस्ट्रो माइग्रेशन | स्कैन के बीच ऑपरेटिंग सिस्टम में परिवर्तन का पता लगाता है |
| संस्करण परिवर्तन विश्लेषण | अपग्रेड बनाम डाउनग्रेड की गिनती करता है, परिवर्तनों को मेजर/माइनर/पैच के रूप में वर्गीकृत करता है |
| संस्करण डाउनग्रेड | डाउनग्रेड को घटक विवरण के साथ सुरक्षा संकेत के रूप में चिह्नित करता है |
| अखंडता ड्रिफ्ट संदर्भ | पैकेज प्रकार के अनुसार अखंडता ड्रिफ्ट का विवरण देता है, जोखिम मार्गदर्शन के साथ |
| प्रमुख पथ पैटर्न | प्रकार और फ़ाइलसिस्टम पथ के अनुसार केंद्रित परिवर्तन |
| हटाने/जोड़ने के हॉटस्पॉट | परिवर्तनों से प्रभावित शीर्ष निर्देशिकाएँ |
| स्थिर प्रकार | समान गिनती वाले पैकेज प्रकार (अपरिवर्तित कोर) |
| लाइसेंस श्रेणी बदलाव | कॉपीलेफ्ट/परमिसिव संतुलन में परिवर्तन |
| कैटलॉगर अंतराल | स्कैनर जिन्होंने Before में पैकेज पाए लेकिन After में कुछ नहीं |
| प्रकार | संकेतक | विवरण | गंभीरता |
|---|
| संस्करण | 📦 | संस्करण संख्या बदली | सामान्य |
| अखंडता | ⚠️ | हैश बिना संस्करण परिवर्तन के बदला | उच्च - जांच करें! |
| मेटाडेटा | 📝 | केवल मेटाडेटा (लाइसेंस आदि) बदला | निम्न |
| विशेषता | विवरण |
|---|
| ड्रैग और ड्रॉप अपलोड | किसी भी SBOM फ़ाइल (Syft, CycloneDX, SPDX) को पेज पर ड्रॉप करें (500MB तक) |
| निर्भरता ट्री | विस्तार/संक्षेपण नेविगेशन के साथ इंटरैक्टिव ट्री दृश्य (5000 से अधिक घटकों के लिए पेजिनेटेड) |
| घटक विवरण | लाइसेंस, हैश, निर्भरताएँ, आपूर्तिकर्ता जानकारी, फ़ाइल गिनती देखें |
| Raw JSON दृश्य | प्रत्येक घटक के लिए सिंटैक्स-हाइलाइटेड JSON |
| गहन खोज | raw JSON डेटा सहित सभी फ़ील्ड्स में खोजें |
| सांख्यिकी डैशबोर्ड | कवरेज मेट्रिक्स, लाइसेंस श्रेणियाँ, भाषा वितरण |
| फाइलसिस्टम ब्राउज़र | निर्देशिका नेविगेशन, खोज और लेयर फ़िल्टरिंग के साथ SBOM के भीतर फ़ाइलें ब्राउज़ करें |