
ऑफ़लाइन सिंगल-बाइनरी वेब ऐप जो CycloneDX, SPDX और syft SBOMs को इनजेस्ट करता है, CVE स्कैनरों का एक एन्सेम्बल चलाता है, निष्कर्षों को EPSS, CISA-KEV और nuclei के साथ समृद्ध करता है, और SARIF, CSAF और PDF निर्यात करता है।
SBOM (Software Bill of Materials) फ़ाइलों की जाँच करने के लिए एकल-बाइनरी, ऑफ़लाइन वेब एप्लिकेशन। एक SBOM अपलोड करें या उनका एक फ़ोल्डर आयात करें, प्रत्येक का स्वतंत्र टूल्स के समूह से विश्लेषण करें, सामान्यीकृत निष्कर्षों की समीक्षा एक स्थानीय UI में करें, और परिणाम को आठ प्रारूपों में निर्यात करें। कोई इंस्टॉलेशन नहीं, कोई नेटवर्क एक्सेस नहीं, कोई टेलीमेट्री नहीं।
NOASSERTION को केवल अनुपस्थित फ़ील्ड से अलग करते हुए।होम पृष्ठ (/) प्रत्येक संग्रहीत SBOM को सूचीबद्ध करता है और संग्रह बढ़ने पर भी उपयोगी बना रहता है:
log4j या openssl जैसी क्वेरी उस घटक को शामिल करने वाले प्रत्येक SBOM को ढूँढ लेती है। क्वेरी की लंबाई सीमित है और इसे उदारता से पार्स किया जाता है।प्रत्येक टूल रनटाइम पर वैकल्पिक है और PATH पर पता लगाया जाता है (SBA_TOOL_<NAME>_BIN से बाइनरी ओवरराइड करें)। निष्कर्ष कभी भी किसी एकल टूल पर निर्भर नहीं होते।
| टूल | भूमिका |
|---|---|
| syft | SBOM सामान्यकर्ता / CycloneDX 1.6 कन्वर्टर |
| grype | CVE मैचर |
| trivy | भेद्यता स्कैनर |
| osv-scanner | OSV डेटाबेस लुकअप |
| bomber | स्वतंत्र समूह मैचर |
| bomdrift | आपूर्ति-श्रृंखला ड्रिफ्ट / typosquat (SARIF) |
| inspektr | SBOM भेद्यता स्कैनर (JSON) |
| shieldbom | ऑफ़लाइन एम्बेडेड/IoT CVE स्कैनर (SARIF) |
| provenant | लाइसेंस / कॉपीराइट / provenance (ScanCode) |
पहले आठ टूल्स CVE-आकार के भेद्यता निष्कर्ष में योगदान करते हैं; provenant भिन्न है — यह लाइसेंस, कॉपीराइट, धारक और लेखक provenance की रिपोर्ट करता है, जिसे ऑडिटर अपने स्वयं के निष्कर्ष आकार के रूप में संग्रहीत और प्रदर्शित करता है (प्रति रन एक "Licence & provenance" अनुभाग, Markdown निर्यात में शामिल) बजाय इसे त्यागने के।
स्कैनर प्रत्येक प्रारूप को सीधे नहीं पढ़ सकते: bomber केवल CycloneDX ≤ 1.6 उपभोग करता है, और कोई भी स्कैनर SPDX 3.0 JSON-LD नहीं पढ़ता। दोनों मामलों में ऑडिटर पहले syft convert के माध्यम से इनपुट को CycloneDX में सामान्यीकृत करता है, और जब syft अनुपलब्ध हो तो एक प्रलेखित कारण के साथ छोड़ देता है बजाय किसी टूल को शून्य पैकेज रिपोर्ट करने देने के। grype का भेद्यता डेटाबेस प्रति रन एक बार (आउट-ऑफ-बैंड) ताज़ा किया जाता है ताकि नियमित पुरानापन एक नया स्कैन हो, विफल नहीं।
विश्लेषण के बाद, प्रत्येक CVE-आकार के निष्कर्ष को एक vulnlookup सेवा (डिफ़ॉल्ट https://vulnlookup.ndaal.eu) से खींचे गए तीन वास्तविक संकेतों के साथ संवर्धित किया जाता है:
प्रत्येक निष्कर्ष अपने KEV, Nuclei, EPSS और Source मान दिखाता है, जहाँ Source vulnlookup रिकॉर्ड पर वापस लिंक करता है, और निष्कर्ष सर्वाधिक-अत्यावश्यक-पहले क्रमित होते हैं: ज्ञात-शोषित (KEV) प्रविष्टियाँ आगे, फिर उच्चतर EPSS प्रतिशतक वाली; बिना संवर्धन वाले निष्कर्ष विश्लेषक द्वारा उत्पन्न क्रम बनाए रखते हैं। संवर्धन प्रत्येक निर्यात प्रारूप में जाता है — SARIF 2.1 / 2.2, Markdown, ODT, DOCX, PDF और CSAF 2.1 / 2.2, जहाँ CSAF EPSS को एक मूल मीट्रिक के रूप में रखता है और CISA-KEV तथा nuclei को नोट्स के रूप में दर्ज करता है — और निर्यात फ़ॉर्म अब डिफ़ॉल्ट रूप से प्रत्येक प्रारूप को टिक करता है।
इसे Settings → Vulnerability enrichment के अंतर्गत कॉन्फ़िगर करें: एक on/off टॉगल (डिफ़ॉल्ट रूप से सक्षम) और अधिकतम तीन vulnlookup स्रोत, प्रत्येक में एक बेस URL, एक TCP पोर्ट और एक QUIC पोर्ट (खाली पोर्ट को 443 माना जाता है)। स्रोत 1 और 2 डिफ़ॉल्ट रूप से पोर्ट 443 पर सार्वजनिक https://vulnlookup.ndaal.eu पर; स्रोत 3 डिफ़ॉल्ट रूप से इस होस्ट के अपने 8680 (TCP) / 8681 (QUIC) पोर्ट पर एक लूपबैक https://127.0.0.1 पर, ताकि सह-स्थित vulnlookup बॉक्स से बाहर एक कार्यशील फ़ॉलबैक हो। स्रोतों को क्रम में आज़माया जाता है — पहला प्राथमिक है, अन्य फ़ॉलबैक हैं।
#![forbid(unsafe_code)] के साथ लिखा गया; लिंट नीति उत्पादन कोड में पैनिक करने वाले शॉर्टकट, अनियंत्रित अंकगणित और अनियंत्रित इंडेक्सिंग को अस्वीकार करती है।--encryption-key-file)।--tls-key एक PKCS#1 RSA कुंजी (no-RSA नीति) और, Unix पर, एक समूह- या विश्व-पठनीय कुंजी फ़ाइल को अस्वीकार करता है।GET /export/download केवल मान्यता प्राप्त निर्यात या चेकसम-साइडकार एक्सटेंशन वाले नामों को परोसता है, ताकि एक गलत कॉन्फ़िगर की गई निर्यात निर्देशिका किसी सिस्टम फ़ाइल को न सौंप सके।cargo audit स्वच्छ है।crates.io से प्रकाशित रिलीज़ इंस्टॉल करें — cargo install इसे स्रोत से बनाता है, cargo binstall GitLab रिलीज़ से पहले से बनी बाइनरी प्राप्त करता है:
cargo install sbom-auditor # build from source
cargo binstall sbom-auditor # prebuilt GitLab-release binary
या इस चेकआउट को सीधे बनाएँ (एक हालिया स्थिर Rust टूलचेन आवश्यक है):
cargo build --release
./target/release/sbom-auditor
फिर https://127.0.0.1:8680 खोलें (ब्राउज़र स्व-हस्ताक्षरित प्रमाणपत्र के बारे में एक बार चेतावनी देगा)। शीर्ष नेविगेशन Home, Upload, Import, Export, Components, Tools, Settings चलाता है, इसके बाद दाईं ओर डार्क/लाइट थीम स्विच, भाषा मेनू और जानकारी मेनू। इंटरफ़ेस 49 भाषाओं में आता है — English, Deutsch और Français के साथ-साथ प्रत्येक यूरोपीय आधिकारिक भाषा, Norwegian Nynorsk, नॉर्वे में आधिकारिक तीन सामी भाषाएँ (Northern, Lule और Southern Sámi), और तीन एशियाई अतिरिक्त — चीनी (中文), हिन्दी (हिन्दी) और उर्दू (اردو, दाएँ-से-बाएँ) — भाषा मेनू से चयन योग्य (और प्रति ब्राउज़र याद रखी जाती हैं)। नीचे दिया गया समर्थित GUI भाषाएँ अनुभाग पूरा विवरण देता है।
--port <PORT> Listen port (default 8680, env SBA_PORT)
--bind <ADDR> Bind address (default 127.0.0.1, env SBA_BIND)
--data-dir <DIR> Data directory (SQLite store + stored SBOMs)
--db <PATH> Database path (default <data-dir>/auditor.db)
--encryption-key-file <F> Enable storage encryption with this 32-byte key
--tls-cert <F> --tls-key <F> Operator certificate instead of self-signed
--allow-non-loopback Permit binding a non-loopback address
--check-update Check gitlab.com for a newer release, then exit
--self-update Download + verify + install the latest release
--help Full option list
पोर्ट: 8680 TLS 1.3 (HTTP/1.1 + HTTP/2) पर API और वेब UI परोसता है; 8681 भविष्य के QUIC / HTTP-3 लिसनर के लिए आरक्षित है (अभी लागू नहीं)।
वेब UI 49 भाषाओं में आता है। English, Deutsch और Français अनुरक्षित, मानव-रचित सेट हैं और भाषा स्विचर के सामने पिन किए गए हैं; हर अन्य भाषा उसके अंग्रेज़ी नाम के अनुसार वर्णानुक्रम में आती है।
इस चक्र में तीन एशियाई भाषाएँ जुड़ीं: चीनी / 中文 (मंदारिन, सरलीकृत), हिन्दी / हिन्दी और उर्दू / اردو। उर्दू दाएँ-से-बाएँ है — जब यह चयनित होती है तो एप्लिकेशन <html dir="rtl"> रेंडर करता है।
पिन किए गए तीन के अतिरिक्त प्रत्येक भाषा मशीन-अनुवादित है और देशी समीक्षा की प्रतीक्षा में है; किसी अनुवाद से छूटी कोई भी स्ट्रिंग स्वचालित रूप से अंग्रेज़ी पर वापस आ जाती है। इन-पेज स्विचर प्रत्येक भाषा को उसके स्वयं के देशी-नाम endonym द्वारा सूचीबद्ध करता है और यह आधिकारिक सूची है — यहाँ किसी गणना के बजाय उससे परामर्श करें।
यह केवल वेब UI पर लागू होता है। उत्पन्न रिपोर्टें (SARIF, CSAF और PDF निर्यात) और HTTP API केवल अंग्रेज़ी में रहते हैं।
cargo nextest run # unit + integration suite
cargo test --doc # doctests
अतिरिक्त हार्नेस: loom-harness/ (समवर्तीता क्रमपरिवर्तन मॉडल), test/bruno/ (API संग्रह), test/playwright/ (ब्राउज़र E2E), test/example-corpus/ (बंडल किए गए example/ SBOM संग्रह पर API + GUI अपलोड→विश्लेषण→निर्यात) और loadtest/ (Goose लोड परिदृश्य)। tests/scripts/test_examples_upload_via_api.sh (एक सहोदर .bats के साथ) एक चल रहे इंस्टेंस के विरुद्ध प्रत्येक example/ SBOM अपलोड करता है और दावा करता है कि प्रत्येक स्ट्रीम किए गए POST /export/download ZIP के माध्यम से एक SARIF, एक CSAF और एक PDF देता है; TLS गैर-लूपबैक होस्ट के लिए सत्यापित किया जाता है और localhost के स्व-हस्ताक्षरित प्रमाणपत्र के लिए छोड़ दिया जाता है, और --base-url किसी भी इंस्टेंस को लक्षित करता है (उदाहरण के लिए https://sbom.ndaal.eu/)। test/magnitude/ सूट (Magnitude, *.mag.ts) नेवबार क्रम और निर्यात डिफ़ॉल्ट तथा Start download की AI-संचालित दृश्य जाँच जोड़ता है; यह नियतात्मक परीक्षणों का पूरक है, चलाने के लिए एक LLM चाहिए और अवरोधक CI गेट का हिस्सा नहीं है। example/ निर्देशिका में 651 सार्वजनिक परीक्षण SBOM हैं (Git LFS); देखें example/PROVENANCE.md। मॉड्यूल मैप और अनुरोध प्रवाह के लिए देखें documentation/structure.md।
कोड Apache-2.0 के अंतर्गत लाइसेंस प्राप्त है। बंडल किए गए UI एसेट्स की अपनी लाइसेंस हैं (Bootstrap MIT, htmx 0BSD, Roboto OFL-1.1); src/static/ के अंतर्गत प्रति-फ़ाइल .license साइडकार देखें।