
एक सेवा जो नामांकित ओपन-सोर्स रिपॉज़िटरीज़ को पृथक ऑफ़लाइन VMs में बनाती है और उन्हें सुरक्षा कमज़ोरियों के लिए स्कैन करती है, तथा पुनरुत्पादकों और प्रस्तावित पैचों के साथ निष्कर्ष ईमेल करती है।
OSS Scanner, महत्वपूर्ण ओपन-सोर्स रिपॉज़िटरीज़ में सुरक्षा कमज़ोरियों को स्कैन करने के लिए Anthropic की एक सेवा है। इस सेवा के बारे में अधिक जानें red.anthropic.com/oss-scanner पर।
ध्यान दें, इस टूल का उपयोग OSS Scanner terms में उल्लिखित नियमों और शर्तों के अधीन है।
एक pull request खोलकर किसी ओपन-सोर्स प्रोजेक्ट को नामांकित करें जो एक डायरेक्टरी जोड़ता है:
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 में दिए गए ईमेल पते सार्वजनिक होते हैं। ऐसे पते उपयोग करें जिन्हें आप प्रकाशित होते देखकर खुश हों, जैसे कि कोई सुरक्षा उपनाम (security alias)।
एन्क्रिप्टेड ईमेल रिपोर्ट प्राप्त करने के लिए, अपनी armored OpenPGP सार्वजनिक कुंजी जोड़ें। तब ये केवल primary_contact पर जाती हैं; pgp को auto_ccs के साथ संयोजित नहीं किया जा सकता:
pgp: |
-----BEGIN PGP PUBLIC KEY BLOCK-----
mQINBF...
-----END PGP PUBLIC KEY BLOCK-----
रिपोर्ट कहाँ जाएँ, यह चुनने के लिए, प्रत्येक चैनल को मिलने वाली सबसे निम्न गंभीरता सेट करें: low, medium, high, critical, या चैनल को बंद करने के लिए none। जिस चैनल को आप छोड़ देते हैं, वह यहाँ दिखाए गए डिफ़ॉल्ट का उपयोग करता है, और दोनों न्यूनतम स्तरों पर या उससे ऊपर की रिपोर्ट दोनों चैनलों को जाती है। pgp केवल ईमेल पर लागू होता है, इसलिए GitHub रिपोर्ट आपकी कुंजी के लिए एन्क्रिप्ट नहीं की जाती हैं:
output_format:
email:
min_severity: low
github_security_advisory: # GitHub private vulnerability reporting
min_severity: none
आपको Dockerfile ठीक दो में से किसी एक स्थान पर प्रदान करना होगा:
dockerfile: को उसके पथ पर सेट करें (हम सुझाव देते हैं कि यह किसी स्थान पर हो जैसे .oss-scanner/Dockerfile)। यह पसंदीदा विकल्प है क्योंकि यह आपको यहाँ pull request के बिना बिल्ड अपडेट करने की अनुमति देता है; या,project.yaml के बगल में, projects/<name>/Dockerfile के रूप में, जिसमें project.yaml में कोई Dockerfile: कुंजी सेट न हो। यदि आप अपने रिपॉज़िटरी में फ़ाइलें जोड़ना नहीं चाहते, तो इसे यहाँ रखें और स्कैनर इसे ठीक वैसे ही बनाएगा जैसे वह इन-रेपो प्रति को बनाता।(खतरा मॉडल भी इसी तरह काम करता है। अपने रिपॉज़िटरी में इसके स्थान के लिए threat_model फ़ील्ड सेट करें, या इसे यहाँ projects/<name>/threat_model.md पर रखें।)
Dockerfile का उद्देश्य आपका वातावरण सेट करना, प्रत्येक निर्भरता स्थापित करना और प्रोजेक्ट बनाना है। प्रारंभिक प्रोजेक्ट सेटअप नेटवर्क पहुँच सक्षम के साथ चलता है, लेकिन इसके बाद चलने वाला सुरक्षा ऑडिट इंटरनेट पहुँच के बिना चलता है। बिल्ड या परीक्षणों को जो कुछ भी चाहिए वह प्रारंभिक Dockerfile सेटअप के दौरान प्राप्त किया जाना चाहिए। हम अनुशंसा करते हैं कि आप जाँचें कि आपके परीक्षण निर्मित इमेज के अंदर पास होते हैं।
threat_model.md (वैकल्पिक लेकिन दृढ़ता से अनुशंसित) फ़ाइल आपको स्कैनर को अपने इच्छित सुरक्षा लक्ष्यों पर दस्तावेज़ीकरण प्रदान करने की अनुमति देती है। हमने पाया है कि यह मार्गदर्शन प्रदान करना सबसे उपयोगी है कि आप रिपोर्टों की गंभीरता को कैसे रेट करते हैं (उदाहरण के लिए, क्या आप post-auth SQLi को उच्च या गंभीर मानते हैं? क्या प्रदर्शित exploits के बिना buffer overflows उच्च तक सीमित हैं? stored XSS कब मध्यम, उच्च और गंभीर होता है?) यह फ़ाइल यह भी बता सकती है कि प्रोजेक्ट क्या करता है, अविश्वसनीय इनपुट कहाँ प्रवेश करता है, कौन से घटक मायने रखते हैं और कौन से दायरे से बाहर हैं, आप रिपोर्ट और पैच कैसे दिखना चाहते हैं, या कोई भी अन्य बात जो आपको महत्वपूर्ण या उपयोगी लगती है।
हम सुझाव देते हैं कि pull request खोलने से पहले आप दो कमांड चलाएँ:
tools/validate.py ऊपर दिए गए नियमों के विरुद्ध projects/<name>/ की जाँच करता है।tools/check <name> आपके प्रोजेक्ट को उसी तरह बनाता है जैसे हमारा स्कैनर बनाएगा, और बिना नेटवर्क के तैयार इमेज में एक शेल खोलता है। यदि आपके परीक्षण इस कंटेनर में पास होते हैं, तो हमारा स्कैनर संभवतः आपके प्रोजेक्ट के साथ काम करेगा। tools/check --qemu <name> स्कैनर की तरह व्यवस्थित वर्चुअल मशीनों के अंदर वही काम करता है।इन टूल्स के लिए आपके होस्ट पर git, Docker, और PyYAML के साथ Python 3 स्थापित होना आवश्यक है (pip install pyyaml); --qemu के लिए Docker के बजाय x86-64 पर QEMU के साथ Linux आवश्यक है।
primary_contact को एक त्रुटि संदेश के साथ ईमेल करेंगे।primary_contact और किसी भी अतिरिक्त CC को प्रजनन चरणों और जहाँ उपलब्ध हो वहाँ प्रस्तावित पैच के साथ ईमेल किए जाते हैं।आप किसी भी समय PR के साथ अपने प्रोजेक्ट को संपादित कर सकते हैं। अपने प्रोजेक्ट को unenroll करने के लिए, रिपोर्टों को रोकने के लिए disabled फ़ील्ड को true पर सेट करें या प्रोजेक्ट को पूरी तरह वापस लेने के लिए projects/\<name\>/ को हटा दें।
tools/check आपके प्रोजेक्ट के Dockerfile को नेटवर्क पहुँच के साथ चलाता है, जैसे docker build चलाता। --qemu के साथ बिल्ड एक वर्चुअल मशीन के अंदर चलता है, जो इसे आपकी फ़ाइलों से दूर रखता है, लेकिन यह अभी भी आपके कंप्यूटर और आपके स्थानीय नेटवर्क पर सेवाओं तक पहुँच सकता है। केवल उन प्रोजेक्ट्स की जाँच करें जिन पर आप भरोसा करते हैं, या ऐसी मशीन का उपयोग करें जिसमें खोने के लिए कुछ न हो।tools/check जिस इमेज को बनाता है उसमें Claude Code स्थापित करता है (जैसे स्कैनर करता है)। Claude Code अपनी स्वयं की शर्तों के अंतर्गत आता है।कृपया red.anthropic.com/oss-scanner पर जाएँ।
रखरखाव स्थिति: यह रिपॉज़िटरी Anthropic द्वारा सक्रिय रूप से अनुरक्षित है। हम केवल enrollment pull requests (projects/<name>/ के अंतर्गत परिवर्तन) की समीक्षा और मर्ज करते हैं; हम tools/ या templates/ में परिवर्तन सहित अन्य योगदान स्वीकार नहीं करते। enrollment कैसे करें इसके लिए CONTRIBUTING.md देखें, इस रिपॉज़िटरी में कमज़ोरी की रिपोर्ट करने के लिए SECURITY.md देखें, और CODE_OF_CONDUCT.md देखें।