
सॉफ़्टवेयर बिल ऑफ़ मटेरियल्स (SBOMs) की सुरक्षा कमजोरियों के लिए स्कैन करता है

bomber एक एप्लिकेशन है जो SBOMs को सुरक्षा कमजोरियों के लिए स्कैन करता है।
तो आपने एक विक्रेता से उनके एक बंद-स्रोत उत्पाद के लिए सॉफ्टवेयर बिल ऑफ मटेरियल्स (SBOM) मांगा है, और उन्होंने आपको एक JSON फ़ाइल में प्रदान किया है... अब क्या?
पहली चीज़ जो आप करना चाहेंगे वह यह देखना है कि SBOM के अंदर सूचीबद्ध किसी भी घटक में सुरक्षा कमजोरियाँ हैं या नहीं, और इन घटकों के पास किस प्रकार के लाइसेंस हैं। यह आपको यह पहचानने में मदद करेगा कि उत्पाद का उपयोग करके आप किस प्रकार का जोखिम उठा रहे हैं।
SBOM में पहचाने गए घटकों के लिए सुरक्षा कमजोरियाँ और लाइसेंस जानकारी ढूंढना ठीक वही है जो bomber करने के लिए बनाया गया है। bomber किसी भी JSON या XML आधारित CycloneDX प्रारूप, या JSON SPDX या Syft स्वरूपित SBOM को पढ़ सकता है, और आपको बहुत जल्दी बता सकता है कि कोई कमजोरी है या नहीं।
सॉफ्टवेयर या तो ओपन सोर्स या क्लोज्ड सोर्स हो सकता है। आप GitHub या किसी भी सार्वजनिक स्रोत रिपॉजिटरी में मिलने वाले तृतीय-पक्ष घटकों को ओपन सोर्स के रूप में देख सकते हैं। तकनीकी रूप से, आप अपनी कंपनी में आंतरिक रूप से बनाए गए सॉफ्टवेयर को भी ओपन सोर्स मान सकते हैं - यह सार्वजनिक नहीं है, लेकिन आपकी आंतरिक टीमें इसे देख सकती हैं। क्लोज्ड सोर्स सॉफ्टवेयर भी आंतरिक हो सकता है, लेकिन आमतौर पर यह वह सॉफ्टवेयर है जिसे आप बाहरी विक्रेताओं से खरीदते हैं।
कंपनियाँ GitHub, Sonatype, Snyk आदि जैसे विक्रेताओं द्वारा प्रदान किए गए SCA टूल का उपयोग करके किसी भी प्रकार के ओपन सोर्स को स्कैन कर सकती हैं और कमजोरी डेटा प्रदान कर सकती हैं - और कुछ मामलों में SBOM भी उत्पन्न कर सकती हैं। वे अभी तक (अभी तक...) वह क्लोज्ड सोर्स सॉफ्टवेयर स्कैन नहीं कर सकतीं जिसमें आपकी दृश्यता नहीं है। यहाँ SBOM और bomber की भूमिका आती है। SBOM उस सॉफ्टवेयर की संरचना प्रदान करते हैं जिसे आप एक्सेस नहीं कर सकते, और bomber यह निर्धारित करता है कि SBOM में किसी भी चीज़ में कमजोरियाँ हैं या नहीं।
हमने bomber को उन क्लोज्ड सोर्स SBOMs को स्कैन करने के लिए बनाया है जो विक्रेताओं से प्राप्त होने पर प्रदान किए जाते हैं। यह ओपन सोर्स SBOMs को भी स्कैन कर सकता है, और तकनीकी रूप से आप चाहें तो bomber का उपयोग एक ओपन सोर्स SCA टूल के रूप में भी कर सकते हैं।
आजकल काफी सारे SBOM प्रारूप उपलब्ध हैं। bomber निम्नलिखित का समर्थन करता है:

bomber कमजोरी जानकारी के लिए कई स्रोतों का समर्थन करता है। हम इन्हें प्रदाता कहते हैं। वर्तमान में, bomber डिफ़ॉल्ट प्रदाता के रूप में OSV का उपयोग करता है, लेकिन आप Github Advisory Database, Sonatype OSS Index, या Snyk का भी उपयोग कर सकते हैं।
इस समय, कृपया ध्यान दें कि OSV निःशुल्क है और इसका उपयोग करने के लिए किसी क्रेडेंशियल की आवश्यकता नहीं है, Sonatype OSS Index निःशुल्क है लेकिन इसमें पंजीकरण और टोकन प्राप्त करना आवश्यक है, और Snyk समर्थन के लिए Snyk लाइसेंस की आवश्यकता है।
प्रदाताओं से bomber द्वारा एकत्रित किए गए डेटा के अलावा, यह डेटा संवर्धन के माध्यम से कमजोरी डेटा को अतिरिक्त जानकारी जैसे शोषण संभावनाओं से समृद्ध करता है।
कृपया ध्यान दें कि प्रत्येक प्रदाता विभिन्न इकोसिस्टम का समर्थन करता है, इसलिए यदि आप एक में कोई कमजोरी नहीं देख रहे हैं, तो दूसरे का प्रयास करें। इकोसिस्टम का सीधा अर्थ पैकेज मैनेजर या पैकेज का प्रकार है। उदाहरणों में rpm, npm, gems आदि शामिल हैं। यह समझना महत्वपूर्ण है कि प्रत्येक प्रदाता विभिन्न कमजोरियों की रिपोर्ट कर सकता है। यदि संदेह हो, तो कुछ प्रदाताओं को देखें।
यदि bomber को कोई कमजोरी नहीं मिलती है, तो इसका मतलब यह नहीं है कि कोई कमजोरी नहीं है। इसका केवल यह अर्थ है कि उपयोग किए जा रहे प्रदाता ने कोई पहचान नहीं की, या वह इकोसिस्टम का समर्थन नहीं करता है। कुछ प्रदाताओं से ऐसी कमजोरियाँ आती हैं जिनमें कोई गंभीरता जानकारी नहीं होती। ऐसे मामले में, गंभीरता को "UNDEFINED" के रूप में सूचीबद्ध किया जाएगा।
bomber के लिए प्रदाता दस्तावेज़ीकरण यहाँ पाया जा सकता है:
आप bomber को स्थापित करने के लिए Homebrew का उपयोग कर सकते हैं:
brew tap devops-kung-fu/homebrew-tap
brew install devops-kung-fu/homebrew-tap/bomber
यदि आपके पास Homebrew नहीं है, तो आप नवीनतम रिलीज़ डाउनलोड (उदा.: bomber_0.4.1_darwin_all.tar.gz) कर सकते हैं, आर्काइव से फ़ाइलें निकाल सकते हैं, और bomber बाइनरी का उपयोग कर सकते हैं।
यदि आप चाहें, तो bomber बाइनरी को अपने /usr/local/bin निर्देशिका या अपने पथ पर कहीं भी ले जा सकते हैं।
bomber स्थापित करने के लिए, अपने प्लेटफ़ॉर्म के लिए नवीनतम रिलीज़ डाउनलोड करें और स्थानीय रूप से स्थापित करें। उदाहरण के लिए, Ubuntu पर bomber स्थापित करें:
dpkg -i bomber_0.5.0_linux_arm64.deb
आप bomber के साथ या तो SBOMs का एक पूरा फ़ोल्डर या एक व्यक्तिगत SBOM स्कैन कर सकते हैं। bomber इस बात की परवाह नहीं करता कि एक ही फ़ोल्डर में कई प्रारूप हैं। यह सब कुछ स्वयं ही सुलझा लेगा।
ध्यान दें कि bomber का डिफ़ॉल्ट आउटपुट STDOUT है। HTML या JSON में आउटपुट करने के विकल्प इस दस्तावेज़ में बाद में वर्णित हैं।
# OSV (डिफ़ॉल्ट प्रदाता) का उपयोग करना जिसमें किसी क्रेडेंशियल की आवश्यकता नहीं है
bomber scan cyclonedx.sbom.json
# क्रेडेंशियल की आवश्यकता वाले प्रदाता का उपयोग करना (ossindex)
bomber scan --provider=xxx --username=xxx --token=xxx [sbom.json]
यदि प्रदाता को कमजोरियाँ मिलती हैं, तो आपको निम्नलिखित के समान आउटपुट दिखाई देगा:

यदि प्रदाता कोई कमजोरी नहीं लौटाता है, तो आपको एक संदेश दिखाई देगा जिसमें कहा जाएगा कि कोई कमजोरी नहीं मिली।
नोट: केवल इसलिए कि निर्दिष्ट प्रदाता का उपयोग करके कोई कमजोरी नहीं मिली, इसका मतलब यह नहीं है कि कोई कमजोरी नहीं है। कृपया bomber द्वारा समर्थित अन्य प्रदाताओं का प्रयास करें।
यह तब उपयोगी होता है जब आपको एक ही उत्पाद के लिए एक विक्रेता से कई SBOM प्राप्त होते हैं। या, शायद आप यह जानना चाहते हैं कि आपके पूरे संगठन में कौन सी कमजोरियाँ हैं। एक फ़ोल्डर स्कैन सभी घटकों को ढूंढेगा, उन्हें डी-डुप्लिकेट करेगा, और फिर उन्हें कमजोरियों के लिए स्कैन करेगा।
# SBOMs के फ़ोल्डर को स्कैन करें (निम्नलिखित कमांड आपके वर्तमान फ़ोल्डर में "sboms" नामक फ़ोल्डर को स्कैन करेगा)
bomber scan --provider=xxx --username=xxx --token=xxx ./sboms
आपको एकल SBOM स्कैन के समान परिणाम दिखाई देगा।
bomber डेटा को तीन उपयोगी प्रारूपों में आउटपुट करता है। डिफ़ॉल्ट रूप से, आउटपुट कमांड लाइन पर प्रस्तुत किया जाता है। उन्नत रिपोर्टिंग के लिए, आप --output=html फ़्लैग का उपयोग करके HTML में आउटपुट कर सकते हैं। JSON में आउटपुट करने के लिए, --output=json फ़्लैग का उपयोग करें। एकाधिक प्रारूपों में आउटपुट प्राप्त करने के लिए अल्पविराम से अलग किए गए आउटपुट विनिर्देश का उपयोग करें --output=html,stdout,json।
यदि आप विस्तृत कमजोरी जानकारी के साथ एक पठनीय रिपोर्ट उत्पन्न करना चाहते हैं, तो आप HTML फ़ाइल में रिपोर्ट सहेजने के लिए --output फ़्लैग का उपयोग कर सकते हैं।
उदाहरण कमांड:
bomber scan bad-bom.json --output=html
यह आपके वर्तमान फ़ोल्डर में "YYYY-MM-DD-HH-MM-SS-bomber-results.html" प्रारूप में एक फ़ाइल सहेजेगा। यदि आप इस फ़ाइल को वेब ब्राउज़र में खोलते हैं, तो आपको निम्नलिखित के समान आउटपुट दिखाई देगा:

bomber --output फ़्लैग का उपयोग करके JSON प्रारूप में कमजोरी डेटा आउटपुट कर सकता है। डिफ़ॉल्ट आउटपुट STDOUT पर है। JSON आउटपुट में टर्मिनल पर प्रदर्शित होने वाली जानकारी की तुलना में बहुत अधिक जानकारी होती है। आप पैकेज विवरण और उसके उद्देश्य, कमजोरी का नाम, कमजोरी का सारांश, और अधिक देख पाएंगे।

उदाहरण कमांड:
bomber scan bad-bom.json --output=json > filename.json
bomber मार्कडाउन प्रारूप में आउटपुट का भी समर्थन करता है। यह HTML आउटपुट के समान है, लेकिन स्टाइलिंग को मार्कडाउन रेंडरर, जैसे GitHub, पर छोड़ देता है। आउटपुट को "YYYY-MM-DD-HH-MM-SS-bomber-results.md" प्रारूप में एक फ़ाइल में सहेजा जाता है।
उदाहरण कमांड:
bomber scan bad-bom.json --output=md
यदि आवश्यक हो, तो आप कमजोरी आउटपुट में अनदेखा करने के लिए CVEs की सूची लोड करने के लिए --ignore-file फ़्लैग का उपयोग कर सकते हैं। इस सूची को एक विशिष्ट प्रारूप में होना चाहिए जहां अनदेखा करने के लिए प्रत्येक CVE को एक अलग पंक्ति में दर्ज किया जाए, जैसे:
CVE-2022-31163
CVE-2022-23520
यहाँ पर एक उदाहरण bomber.ignore फ़ाइल है
bomber.ignore फ़ाइल का उपयोग करने के लिए, निम्नानुसार सिंटैक्स का उपयोग करें:
bomber --ignore-file=bomber.ignore scan bom.json
आप विशिष्ट कमजोरी गंभीरता वापस करने के लिए --severity फ़्लैग सेट कर सकते हैं। उदाहरण के लिए, यदि आप --severity=moderate सेट करते हैं, तो केवल MODERATE या उससे ऊपर की गंभीरता वाली कमजोरियाँ वापस की जाएंगी।
उदाहरण के लिए, निम्नलिखित कमांड केवल उच्च और गंभीर कमजोरियाँ लौटाएगा।
bomber --severity=high scan bom.json
bomber में प्रदाताओं से प्राप्त कमजोरी डेटा को समृद्ध करने की क्षमता है। हमने अब तक जो पहला "एनरिचर" लागू किया है वह EPSS के लिए है।
नोट: EPSS स्कोरिंग bomber 0.5.0 और उससे ऊपर में अब डिफ़ॉल्ट नहीं है। EPSS स्कोर दिखाने के लिए, सुनिश्चित करें कि --enrich=epss फ़्लैग का उपयोग करें।
EPSS का मतलब एक्सप्लॉइट पूर्वानुमान स्कोरिंग सिस्टम है और यह एक ढांचा है जो किसी कमजोरी के शोषण की संभावना का अनुमान लगाता है। EPSS का उपयोग अक्सर उच्च जोखिम वाली कमजोरियों की पहचान करने में मदद के लिए किया जाता है ताकि उन्हें सुधार के लिए प्राथमिकता दी जा सके।
EPSS संभावना के लिए प्रतिशत का उपयोग करता है। इसलिए यदि आप 94 देखते हैं, तो स्कोर यह कहने की कोशिश कर रहा है कि उस कमजोरी में शोषण की 94% संभावना है। और यह समझ में आता है कि 94 जैसे स्कोर वाली कमजोरी तत्काल ध्यान देने योग्य है, जबकि 20 जैसे स्कोर वाली कमजोरी कम प्राथमिकता के योग्य है।
यदि आप चाहें, तो अपने क्रेडेंशियल स्टोर करने के लिए दो पर्यावरण चर सेट कर सकते हैं, और उन्हें कमांड लाइन पर टाइप नहीं करना पड़ेगा। इस README में बाद में पर्यावरण चर जानकारी देखें।
यदि आप अपने CI/CD पाइपलाइनों में bomber का उपयोग कर रहे हैं, तो आप Syft के साथ एक ऑल-इन-वन कमांड कर सकते हैं ताकि कमजोरियों के लिए एक SBOM उत्पन्न और स्कैन किया जा सके। ऐसा करने के लिए, आप निम्नलिखित कमांड जैसा कुछ कर सकते हैं:
# सुनिश्चित करें कि आप कमांड के अंत में - वर्ण शामिल करें। यह bomber को STDIN से पढ़ने के लिए ट्रिगर करता है
syft packages . -o cyclonedx-json | bomber scan --provider ossindex --output json -
यह कमांड एक SBOM बनाता है, इसे bomber में पाइप करता है, और JSON प्रारूप में परिणाम उत्पन्न करता है।
यदि आप हर बार क्रेडेंशियल दर्ज नहीं करना चाहते हैं, तो आप अपने .bashrc या .bash_profile में निम्नलिखित जोड़ सकते हैं
export BOMBER_PROVIDER_USERNAME={{आपका OSS Index उपयोगकर्ता नाम}}
export BOMBER_PROVIDER_TOKEN={{आपका OSS Index API टोकन}}
--exitcode फ़्लैग का उपयोग करने पर, सबसे अधिक कमजोरी गंभीरता का प्रतिनिधित्व करने वाला एक निकास कोड वापस आएगा। इस फ़्लैग के बिना आप सफलता के लिए निकास कोड 0, या त्रुटि होने पर 1 की उम्मीद कर सकते हैं।
यह मानते हुए कि कोई त्रुटि नहीं है, --exitcode होने पर bomber द्वारा निम्नलिखित मान वापस किए जाएंगे:
| गंभीरता | रिटर्न कोड |
|---|---|
| UNSPECIFIED (यह एक स्थिति है जहां प्रदाता हमें कुछ अजीब देता है, या कोई जानकारी नहीं) | 10 |
| LOW | 11 |
| MODERATE | 12 |
bomber में अब एक प्रायोगिक सुविधा है जो html आउटपुट में कमजोरियों के विवरण को समृद्ध करती है। यह सुविधा एक कमजोरी लेती है और विवरण को एक गैर-तकनीकी उपयोगकर्ता के लिए अधिक समझने योग्य चीज़ में बदल देती है।
नोट: यह सुविधा इस समय एक बड़ी अल्फा अवस्था में है। यह अत्यंत धीमी है, और आउटपुट बहुत अच्छी तरह से स्वरूपित नहीं है।
इस सुविधा का उपयोग करने के लिए, आपको एक OpenAI API कुंजी प्रदान करनी होगी। आप इस कुंजी को CLI में --openai-api-key={{आपकी OpenAI API कुंजी}} का उपयोग करके पास कर सकते हैं या एक पर्यावरण चर जोड़ सकते हैं:
export OPENAI_API_KEY={{आपकी OpenAI API कुंजी}}
अपनी OpenAI API कुंजी सेट करने के बाद, आप आउटपुट फ़्लैग को इस प्रकार सेट कर सकते हैं:
bomber scan --output ai [sbom.json]
यदि आप bomber का परीक्षण करना चाहते हैं, तो आपको test फ़ोल्डर में परीक्षण SBOMs का चयन मिलेगा।
--license जैसे फ़्लैग की आवश्यकता होती है। यदि आपको लाइसेंस जानकारी चाहिए, तो सुनिश्चित करें कि आप SBOM के साथ इसके लिए पूछें।bomber को कमजोरियाँ वापस पाने के लिए एक बार में एक PURL भेजने की आवश्यकता होती है, इसलिए एक बड़े SBOM में इसमें कुछ समय लगेगा। हम इस पर नज़र रखेंगे।यदि आप bomber के विकास में योगदान देना चाहते हैं, तो कृपया इस रिपॉजिटरी में CONTRIBUTING.md फ़ाइल देखें। योगदान देने से पहले कृपया CODE_OF_CONDUCT.md फ़ाइल पढ़ें।
bomber हर बार जब कोई डेवलपर इस रिपॉजिटरी में कोड कमिट करता है, तो एक सॉफ्टवेयर बिल ऑफ मटेरियल्स उत्पन्न करने के लिए Syft का उपयोग करता है (जब तक Hookz का उपयोग किया जा रहा है और इसे कार्यशील निर्देशिका में प्रारंभ किया गया है)। CycloneDX के लिए अधिक जानकारी यहाँ उपलब्ध है।
bomber के लिए वर्तमान CycloneDX SBOM यहाँ उपलब्ध है।
bomber के प्रायोजकों और समर्थकों का धन्यवाद

bomber लोगो के लिए ZERO में हमारे दोस्तों को एक बड़ा धन्यवाद।
Sonatype को Sonatype OSS Index जैसे शानदार टूल प्रदान करने के लिए धन्यवाद।
हमारे दोस्तों और साथी bomber योगदानकर्ताओं Snyk को बहुत-बहुत धन्यवाद, जिन्होंने एक प्रदाता बनाया और STDIN से SBOM प्रोसेस करने के लिए कोडिंग की। आप लोग कमाल के हैं।
EPSS विवरण Nucleus की टीम से आता है। धन्यवाद!
| HIGH | 13 |
| CRITICAL | 14 |