SBOM भेद्यता स्कैनर

लॉकफ़ाइल या SBOM डालें और हर पिन किए गए संस्करण को ज्ञात भेद्यताओं से जाँचें — स्थानीय रूप से पार्स किया जाता है, OSV डेटाबेस से मिलान किया जाता है।

लॉकफ़ाइल उन संस्करणों की सटीक सूची है जिन्हें आपका बिल्ड वास्तव में इंस्टॉल करता है — और हर पिन किया गया संस्करण इस बात पर दाँव है कि तब से उसमें कोई छेद नहीं मिला है। यह स्कैनर उस सूची को पढ़ता है (package-lock.json, requirements.txt, go.mod, या CycloneDX / SPDX SBOM), केवल नाम-और-संस्करण के जोड़े सार्वजनिक OSV.dev भेद्यता डेटाबेस को भेजता है, और बताता है कि किन पैकेजों में ज्ञात भेद्यताएँ हैं, वे कितनी गंभीर हैं, प्रत्येक को कौन-सा संस्करण ठीक करता है, और क्या कोई CVE CISA की ज्ञात शोषित भेद्यताओं की सूची में है। साथी मार्गदर्शिका क्या आपकी लॉकफ़ाइल भेद्यताएँ छिपा रही है? बताती है कि परिणाम क्या साबित करते हैं — और क्या नहीं। यदि स्कैन किसी CVE को फ़्लैग करता है, तो Bulk CVE Triage डेस्क उसे शोषण के संदर्भ में रखता है।

अंतिम अपडेट:

आपकी लॉकफ़ाइल या SBOM

स्वीकार्य: package-lock.json, requirements.txt, go.mod, CycloneDX JSON, SPDX JSON। अधिकतम फ़ाइल आकार 5 MB।

फ़ॉर्मैट फ़ाइलनाम और सामग्री से पहचाना जाता है; आप नीचे स्वयं भी चुन सकते हैं।

🔒 आपकी लॉकफ़ाइल आपके ब्राउज़र में पार्स होती है और कभी अपलोड नहीं होती। केवल पैकेज के नाम और संस्करण OSV.dev को भेजे जाते हैं; केवल CVE आईडी KEV फ़्लैग के लिए हमारे अपने चेकर को भेजे जाते हैं।

स्कैन परिणाम

अभी तक कोई स्कैन नहीं हुआ। ऊपर लॉकफ़ाइल या SBOM अपलोड करें या पेस्ट करें और “भेद्यताओं के लिए स्कैन करें” दबाएँ।

आपकी लॉकफ़ाइल कभी इस पेज को नहीं छोड़ती

पार्सिंग पूरी तरह आपके ब्राउज़र में होती है: जो फ़ाइल आप डालते हैं — या जो टेक्स्ट आप पेस्ट करते हैं — वह स्थानीय रूप से पढ़ी जाती है और कहीं अपलोड नहीं होती। केवल निकाले गए पैकेज के नाम और संस्करण बाहर भेजे जाते हैं, सार्वजनिक OSV.dev भेद्यता डेटाबेस को (कोई खाता नहीं, कोई कुंजी नहीं), ताकि वह उन्हें ज्ञात भेद्यताओं से मिला सके। फिर मिलानों से प्राप्त CVE आईडी CISA KEV जाँच के लिए इस साइट के अपने चेकर को भेजे जाते हैं। इसके अलावा पेज से कुछ नहीं जाता: न फ़ाइल की सामग्री, न पथ, न प्रोजेक्ट के नाम।

स्कैन की सीमाएँ

प्रति रन अधिकतम 500 पैकेज स्कैन किए जाते हैं — अतिरिक्त पैकेज बिना स्कैन किए सूचीबद्ध होते हैं। अधिकतम 200 भेद्यता विवरण लाए जाते हैं। परिणाम आपकी फ़ाइल के सटीक संस्करणों के लिए OSV डेटाबेस से आते हैं; कोई पैकेज संस्करण जिसे डेटाबेस ने कभी नहीं देखा है, कोई मिलान नहीं देता, जो सुरक्षित होने के प्रमाण के समान नहीं है।

ईमानदार सीमाएँ

“कोई भेद्यता नहीं मिली” का अर्थ है कि इन सटीक संस्करणों के लिए OSV डेटाबेस में कोई नहीं है। इसका अर्थ यह नहीं है कि कोड सुरक्षित है: जिन भेद्यताओं की अभी तक किसी ने सूचना नहीं दी है, दुर्भावनापूर्ण पैकेज, टाइपोस्क्वैट नाम और समझौता किए गए रिलीज़ — ये सब संस्करण-मिलान वाली जाँच को दिखाई नहीं देते।

मिलान संस्करण-सटीक होता है। यदि आपकी फ़ाइल में सटीक संस्करण के बजाय कोई रेंज पिन की गई है, तो उसे छोड़ दिया जाता है और ऐसा ही सूचीबद्ध किया जाता है — स्कैनर यह अनुमान नहीं लगाएगा कि आपने वास्तव में कौन-सा संस्करण इंस्टॉल किया है। यही बात उन पैकेजों पर भी लागू होती है जिनके इकोसिस्टम को स्कैनर मैप नहीं कर सकता: वे छोड़े गए के रूप में सूचीबद्ध होते हैं, चुपचाप हटाए नहीं जाते।

KEV फ़्लैग इस साइट के अपने चेकर (CISA KEV डेटा, रोज़ाना ताज़ा किया जाता है) से एक ही लुकअप से आते हैं। यदि वह लुकअप विफल हो जाता है या दर-सीमित हो जाता है, तो भी स्कैन पूरा होता है — KEV कॉलम में आपके परिणामों को रोकने के बजाय बस “अज्ञात” लिखा जाता है।

पिन किया गया संस्करण हमले की सतह क्यों है

लॉकफ़ाइल इसलिए मौजूद है क्योंकि “latest” कोई संस्करण नहीं है। यह उस सटीक ट्री को दर्ज करती है जिसे आपके बिल्ड ने इंस्टॉल किया था, ताकि हर मशीन और हर डिप्लॉय को वही कोड मिले। यही नियतता लॉकफ़ाइल को स्कैन करने योग्य भी बनाती है: भेद्यता डेटाबेस सटीक पैकेज और संस्करण से जुड़ा होता है, इसलिए पिन किए गए संस्करण का मूल्यांकन एक ही लुकअप में हो सकता है, जबकि तैरती रेंज का नहीं। इसलिए स्कैन उतना ही अच्छा है जितनी फ़ाइल — लॉकफ़ाइल को कमिट करें, उसे ताज़ा रखें, और स्कैनर आपको बता सकेगा कि आप वास्तव में क्या शिप कर रहे हैं।

जाँच जानबूझकर संकरी है। OSV.dev GitHub एडवाइज़री, NVD और भाषा इकोसिस्टम से भेद्यता रिकॉर्ड एकत्र करता है और उन्हें आपके संस्करणों से मिलाता है। वह कोड का मूल्यांकन नहीं कर सकता: जिस पैकेज में कोई ज्ञात CVE नहीं है, वह फिर भी दुर्भावनापूर्ण, छोड़ा हुआ, या उस पैकेज का मिलता-जुलता नाम हो सकता है जिसे आप इंस्टॉल करना चाहते थे। संस्करण मिलान एक तेज़, सस्ता पहला फ़िल्टर है — वही जो उस lodash को पकड़ता है जिसे आप अपग्रेड करना भूल गए थे — सुरक्षा ऑडिट नहीं।

KEV फ़्लैग उच्च CVSS स्कोर से ऊपर क्यों है

CVSS स्कोर मापता है कि भेद्यता कितनी बुरी होगी यदि उसका शोषण किया जाए। CISA ज्ञात शोषित भेद्यताओं का कैटलॉग कुछ और मापता है: क्या उसका वास्तव में शोषण हो रहा है, अभी, वास्तविक दुनिया में। मध्यम गंभीरता वाला CVE जो KEV सूची में है, इस सप्ताह पैच का हकदार है; गंभीर CVE जिसे किसी ने हथियार नहीं बनाया है, अक्सर अगले नियोजित अपग्रेड तक इंतज़ार कर सकता है। इसलिए यह स्कैनर KEV पंक्तियों को अलग से बैज देता है और परिणामों को सबसे खराब गंभीरता के क्रम में छाँटता है — लेकिन जिस बैज पर पहले कार्रवाई करनी है, वह KEV बैज है।

ठीक किए गए संस्करणों का अपना जोखिम होता है। भेद्यता का समाधान आमतौर पर एक माइनर या पैच रिलीज़ होता है, लेकिन “4.17.21 में ठीक किया गया” का अर्थ व्यवहार में ऐसा बदलाव भी हो सकता है जो आपके बिल्ड को तोड़ दे, और कुछ भेद्यताओं का कोई ठीक किया गया संस्करण ही नहीं होता — स्कैनर इसे सीधे बता देता है, बजाय इसके कि वह कोई बना ले। पहले KEV आइटम पैच करें, फिर प्रकाशित समाधान वाले गंभीर आइटम, फिर बाकी को शेड्यूल करें; नए संस्करण पिन करें, लॉकफ़ाइल कमिट करें, और फिर से स्कैन करें। वही चक्र CI में भी होना चाहिए, जहाँ यह तिमाही में एक बार के बजाय हर पुल रिक्वेस्ट पर चलता है।

इस SBOM में लाइसेंस

यहाँ सूचीबद्ध लाइसेंस केवल SBOM में मौजूद लाइसेंस फ़ील्ड से आते हैं। लॉकफ़ाइलों (package-lock.json, requirements.txt, go.mod) में कोई लाइसेंस डेटा नहीं होता, इसलिए उनके लिए कुछ नहीं दिखाया जाता — यह पेज प्रति पैकेज लाइसेंस नहीं खोजता, क्योंकि कोई सार्वजनिक डेटाबेस उन्हें भरोसेमंद तरीके से नहीं देता।

लॉकफ़ाइल और SBOM शब्द, सटीक रूप से

Lockfile. वह फ़ाइल जो बिल्ड द्वारा इंस्टॉल किए गए हर पैकेज का सटीक संस्करण दर्ज करती है — npm के लिए package-lock.json, Python के लिए == पिन वाली requirements.txt, Go के लिए go.mod/go.sum — ताकि इंस्टॉल पुनरुत्पादनीय हों।

SBOM. Software Bill of Materials: किसी सॉफ़्टवेयर के हर घटक की मशीन-पठनीय सूची, आमतौर पर CycloneDX या SPDX फ़ॉर्मैट में। यह पूरी आपूर्ति शृंखला के लिए सामान्यीकृत लॉकफ़ाइल है।

OSV.dev. Google का सार्वजनिक भेद्यता डेटाबेस, जो GitHub, NVD और भाषा इकोसिस्टम से एडवाइज़री एकत्र करता है और सटीक पैकेज नाम, इकोसिस्टम और संस्करण से क्वेरी किया जा सकता है।

GHSA. GitHub Security Advisory आईडी (GHSA-xxxx-xxxx-xxxx)। OSV में अधिकांश npm, PyPI और Go भेद्यताओं में यह होती है, आमतौर पर CVE आईडी के साथ।

CVE. Common Vulnerabilities and Exposures: साझा नंबरिंग योजना (CVE-YYYY-NNNNN) जो हर डेटाबेस, स्कैनर और विक्रेता को एक ही भेद्यता के बारे में बात करने देती है।

CVSS. Common Vulnerability Scoring System: 0–10 का स्कोर जो बताता है कि भेद्यता कितनी गंभीर होगी यदि उसका शोषण किया जाए। 9.0+ CRITICAL, 7.0+ HIGH, 4.0+ MEDIUM, 4.0 से नीचे LOW है।

KEV. CISA का ज्ञात शोषित भेद्यताओं का कैटलॉग: वे भेद्यताएँ जिनका वास्तविक दुनिया में शोषण पुष्ट हुआ है, प्रत्येक की सुधार की नियत तिथि के साथ। KEV फ़्लैग का अर्थ है “अभी पैच करें”, चाहे CVSS कुछ भी कहे।

Fixed version. पैकेज का पहला संस्करण जिसमें भेद्यता अब मौजूद नहीं है, जो एडवाइज़री के affected-रेंज इवेंट से लिया जाता है। कुछ भेद्यताओं का अभी तक कोई प्रकाशित संस्करण नहीं है।

Purl. Package URL (pkg:npm/[email protected]): इकोसिस्टम और संस्करण सहित पैकेज का नाम बताने का मानक तरीका। SBOM में purl होते हैं, और इसी से स्कैनर जानता है कि घटक किस इकोसिस्टम का है।

अक्सर पूछे जाने वाले प्रश्न

क्या मेरी लॉकफ़ाइल मेरा ब्राउज़र छोड़ती है?

नहीं। फ़ाइल स्थानीय रूप से पार्स होती है और कभी अपलोड नहीं होती। केवल निकाले गए पैकेज के नाम और संस्करण OSV.dev को भेजे जाते हैं, जो एक सार्वजनिक भेद्यता डेटाबेस है, और केवल मिलानों से प्राप्त CVE आईडी KEV जाँच के लिए इस साइट के अपने चेकर को भेजे जाते हैं। फ़ाइल की सामग्री, पथ और प्रोजेक्ट के नाम कभी पेज नहीं छोड़ते।

पैकेज को “छोड़ा गया” के रूप में क्यों सूचीबद्ध किया गया है?

तीन कारण हैं: पंक्ति सटीक पिन नहीं है (~= या >= जैसी रेंज, -r इंक्लूड, replace निर्देश), इकोसिस्टम को OSV.dev द्वारा समर्थित इकोसिस्टम से मैप नहीं किया जा सकता, या स्कैन 500-पैकेज की सीमा तक पहुँच गया। छोड़े गए आइटम हमेशा अपने कारण सहित सूचीबद्ध होते हैं — कुछ भी चुपचाप नहीं हटाया जाता।

“कोई भेद्यता नहीं मिली” — क्या मैं सुरक्षित हूँ?

ज़रूरी नहीं। इसका अर्थ है कि OSV डेटाबेस में इन सटीक संस्करणों के लिए कोई भेद्यता दर्ज नहीं की गई है। अज्ञात भेद्यताएँ, दुर्भावनापूर्ण या टाइपोस्क्वैट पैकेज, और समझौता किए गए रिलीज़ किसी भी भेद्यता डेटाबेस में दिखाई नहीं देते। स्कैन को सुरक्षित होने के प्रमाण के बजाय पहला फ़िल्टर मानें।

मुझे पहले क्या ठीक करना चाहिए?

KEV बैज वाले किसी भी आइटम से शुरू करें — उन भेद्यताओं का अभी शोषण हो रहा है, और CISA प्रत्येक के लिए नियत तिथि निर्धारित करता है। फिर प्रकाशित ठीक किए गए संस्करण वाली CRITICAL और HIGH पंक्तियाँ, उन पैकेजों से शुरू करके जिन्हें आपका एप्लिकेशन वास्तव में इंपोर्ट करता है। प्रत्येक CVE के पीछे शोषण संदर्भ के लिए Bulk CVE Triage डेस्क का उपयोग करें।

किसी भेद्यता का कोई ठीक किया गया संस्करण नहीं है। अब क्या करें?

पहले जाँचें कि क्या कोई नया संस्करण मौजूद है जिसे एडवाइज़री ने अभी दर्ज नहीं किया है — एडवाइज़री रिलीज़ से पीछे रहती हैं। यदि वास्तव में कोई समाधान नहीं है, तो आपके विकल्प हैं निर्भरता हटाना, उसे बदलना, या भेद्य कोड पथ को कम करना (उदाहरण के लिए, प्रभावित फ़ंक्शन को अविश्वसनीय इनपुट देना बंद करना) और अपडेट के लिए एडवाइज़री पर नज़र रखना। किसी भी बदलाव के बाद फिर से स्कैन करें।