
एक सेवा जो नामांकित ओपन-सोर्स रिपॉज़िटरीज़ को पृथक ऑफ़लाइन VMs में बनाती है और उन्हें सुरक्षा कमज़ोरियों के लिए स्कैन करती है, तथा पुनरुत्पादकों और प्रस्तावित पैचों के साथ निष्कर्ष ईमेल करती है।
OSS स्कैनर Anthropic की एक सेवा है जो महत्वपूर्ण ओपन-सोर्स रिपॉज़िटरीज़ को सुरक्षा कमज़ोरियों के लिए स्कैन करती है। सेवा के बारे में अधिक जानने के लिए red.anthropic.com/oss-scanner पर जाएँ।
ध्यान दें, इस टूल का उपयोग OSS Scanner terms में उल्लिखित नियमों और शर्तों के अधीन है।
एक पुल रिक्वेस्ट खोलकर ओपन-सोर्स प्रोजेक्ट को नामांकित करें जो एक डायरेक्टरी जोड़ती है:
projects/<name>
हमारा सुरक्षा स्कैनर आपके प्रोजेक्ट को एक पृथक VM में बनाता है, फिर इसे बिना इंटरनेट एक्सेस के विश्लेषित करता है और जो पाता है उसे primary_contact (और किसी भी CC) को ईमेल करता है, प्रत्येक के साथ एक रीप्रोड्यूसर और जहाँ उपलब्ध हो एक प्रस्तावित पैच। रिपोर्ट मॉडल-जनित होती हैं और किसी मानव द्वारा समीक्षित नहीं की जाती हैं। इस कारण हम इन निष्कर्षों पर 90-दिन की डिस्क्लोज़र अवधि नहीं लगाते और इन्हें सार्वजनिक नहीं करेंगे। प्रोजेक्ट स्वामियों को project.yaml (स्कैनर को कॉन्फ़िगर करने के लिए), एक Dockerfile (यह बताते हुए कि प्रोजेक्ट कैसे बनाया जाए), और वैकल्पिक रूप से एक threat_model.md (प्रोजेक्ट-विशिष्ट थ्रेट मॉडलिंग प्रदान करने के लिए) प्रदान करना चाहिए।
templates/project.yaml से शुरू करें:
repo: https://github.com/example/project # required: the git repository to scan; add #branch to pin one
primary_contact: [email protected] # required: reports and build problems go here (one address)
auto_ccs: # optional: more addresses on every mail
- [email protected]
homepage: https://example.org # optional
disabled: false # optional: true pauses reports without removing the enrolment
dockerfile: .oss-scanner/Dockerfile # required unless a Dockerfile sits in this repo next to your project.yaml
threat_model: .oss-scanner/threat_model.md # optional; also supports placing the file in this repository
repo और primary_contact हमेशा आवश्यक हैं। dockerfile आवश्यक है जब तक कि आप अपना Dockerfile project.yaml के बगल में न रखें (नीचे देखें)। अन्य वैकल्पिक हैं।
project.yaml में ईमेल पते सार्वजनिक हैं। ऐसे पते उपयोग करें जिन्हें आप प्रकाशित होते देखने में खुश हों, जैसे कि एक सुरक्षा उपनाम।
रिपोर्ट एन्क्रिप्टेड प्राप्त करने के लिए, अपनी armored OpenPGP सार्वजनिक कुंजी जोड़ें। फिर रिपोर्ट केवल primary_contact को जाती हैं; pgp को auto_ccs के साथ संयोजित नहीं किया जा सकता:
pgp: |
-----BEGIN PGP PUBLIC KEY BLOCK-----
mQINBF...
-----END PGP PUBLIC KEY BLOCK-----
आपको एक Dockerfile प्रदान करना होगा, ठीक दो स्थानों में से एक में:
dockerfile: को उसके पथ पर सेट करें (हम .oss-scanner/Dockerfile जैसे किसी स्थान पर सुझाव देते हैं)। यह पसंदीदा विकल्प है क्योंकि यह आपको यहाँ पुल रिक्वेस्ट के बिना बिल्ड अपडेट करने की अनुमति देता है; या,project.yaml के बगल में, projects/<name>/Dockerfile के रूप में, project.yaml में कोई Dockerfile: कुंजी सेट किए बिना। यदि आप अपनी रिपॉज़िटरी में फ़ाइलें जोड़ना नहीं चाहते हैं, तो इसे यहाँ रखें और स्कैनर इसे ठीक वैसे ही बनाएगा जैसे यह इन-रेपो प्रति हो।(थ्रेट मॉडल भी इसी तरह काम करता है। अपनी रिपॉज़िटरी में इसके स्थान के लिए threat_model फ़ील्ड सेट करें, या इसे यहाँ projects/<name>/threat_model.md पर रखें।)
Dockerfile का उद्देश्य आपके वातावरण को सेट करना, हर निर्भरता स्थापित करना, और प्रोजेक्ट बनाना है। प्रारंभिक प्रोजेक्ट सेटअप नेटवर्क एक्सेस सक्षम के साथ चलता है, लेकिन इसके बाद का सुरक्षा ऑडिट बिना इंटरनेट एक्सेस के चलता है। बिल्ड या परीक्षणों को जो कुछ भी चाहिए वह प्रारंभिक Dockerfile सेटअप के दौरान प्राप्त किया जाना चाहिए। हम अनुशंसा करते हैं कि आप जाँचें कि आपके परीक्षण बनाई गई इमेज के अंदर पास होते हैं।
threat_model.md (वैकल्पिक लेकिन दृढ़ता से अनुशंसित) फ़ाइल आपको स्कैनर को अपने इच्छित सुरक्षा लक्ष्यों पर दस्तावेज़ीकरण प्रदान करने की अनुमति देती है। हमने पाया है कि यह मार्गदर्शन प्रदान करना सबसे उपयोगी है कि आप रिपोर्ट की गंभीरता को कैसे रेट करते हैं (उदाहरण के लिए, क्या आप post-auth SQLi को उच्च या गंभीर मानते हैं? क्या प्रदर्शित एक्सप्लॉइट के बिना बफ़र ओवरफ़्लो उच्च तक सीमित हैं? संग्रहीत XSS कब मध्यम, उच्च, और गंभीर होता है?) यह फ़ाइल यह भी बता सकती है कि प्रोजेक्ट क्या करता है, अविश्वसनीय इनपुट कहाँ प्रवेश करता है, कौन से घटक मायने रखते हैं और कौन से दायरे से बाहर हैं, आप रिपोर्ट और पैच कैसे दिखना चाहते हैं, या कोई भी अन्य चीज़ जो आप महत्वपूर्ण या उपयोगी मानते हैं।
हम सुझाव देते हैं कि आप पुल रिक्वेस्ट खोलने से पहले दो कमांड चलाएँ:
tools/validate.py ऊपर दिए गए नियमों के विरुद्ध projects/<name>/ की जाँच करता है।tools/check <name> आपके प्रोजेक्ट को उसी तरह बनाता है जैसे हमारा स्कैनर करेगा, और बिना नेटवर्क के तैयार इमेज में एक शेल खोलता है। यदि आपके परीक्षण इस कंटेनर में पास होते हैं, तो हमारा स्कैनर संभवतः आपके प्रोजेक्ट के साथ काम करेगा। tools/check --qemu <name> स्कैनर की तरह व्यवस्थित वर्चुअल मशीनों के अंदर वही करता है।इन टूल्स के लिए आपके होस्ट पर git, Docker, और PyYAML के साथ Python 3 स्थापित होना आवश्यक है (pip install pyyaml); --qemu के लिए Docker के बजाय x86-64 पर Linux के साथ QEMU चाहिए।
primary_contact को एक त्रुटि संदेश के साथ ईमेल करेंगे।primary_contact और किसी भी अतिरिक्त CC को प्रजनन चरणों और जहाँ उपलब्ध हो एक प्रस्तावित पैच के साथ ईमेल किए जाते हैं।आप किसी भी समय PR के साथ अपने प्रोजेक्ट को संपादित कर सकते हैं। अपने प्रोजेक्ट को अनएनरोल करने के लिए, रिपोर्ट रोकने के लिए disabled फ़ील्ड को true पर सेट करें या प्रोजेक्ट को पूरी तरह वापस लेने के लिए projects/\<name\>/ हटा दें।
tools/check आपके प्रोजेक्ट के Dockerfile को नेटवर्क एक्सेस के साथ चलाता है, जैसे docker build करेगा। --qemu के साथ बिल्ड एक वर्चुअल मशीन के अंदर चलता है, जो इसे आपकी फ़ाइलों से दूर रखता है, लेकिन यह अभी भी आपके कंप्यूटर और आपके स्थानीय नेटवर्क पर सेवाओं तक पहुँच सकता है। केवल उन प्रोजेक्ट्स की जाँच करें जिन पर आप भरोसा करते हैं, या ऐसी मशीन का उपयोग करें जिसमें खोने के लिए कुछ न हो।tools/check Claude Code को उस इमेज में स्थापित करता है जिसे यह बनाता है (जैसे स्कैनर करता है)। Claude Code अपनी स्वयं की शर्तों के अंतर्गत आता है।कृपया red.anthropic.com/oss-scanner पर जाएँ।
रखरखाव स्थिति: यह रिपॉज़िटरी Anthropic द्वारा सक्रिय रूप से अनुरक्षित है। हम केवल नामांकन पुल रिक्वेस्ट (projects/<name>/ के अंतर्गत परिवर्तन) की समीक्षा और मर्ज करते हैं; हम tools/ या templates/ में परिवर्तन सहित अन्य योगदान स्वीकार नहीं करते हैं। नामांकन कैसे करें इसके लिए CONTRIBUTING.md देखें, इस रिपॉज़िटरी में कमज़ोरी की रिपोर्ट करने के लिए SECURITY.md देखें, और CODE_OF_CONDUCT.md देखें।