🧪 पहचाने गए हर निष्कर्ष को ज़िम्मेदार खुलासे के लिए ऐसे सबूत में बदलें, जिसे चलाया जा सके और जो केवल रक्षा के लिए हो।
detect मैप में दर्ज हर निष्कर्ष के लिए यह एक ऐसी सुरक्षा एडवाइज़री लिखता है जो अपने आप में पूरी हो, और एक टेस्ट लिखता है जो सुरक्षित रास्ते की पुष्टि करता है। इसलिए जब तक समस्या मौजूद है, टेस्ट फ़ेल होता है, और कोड ठीक होते ही पास हो जाता है।
Lagune के टेस्ट आपके अपने टेस्ट सूट से अलग, .lagune/ फ़ोल्डर में रहते हैं।
इस्तेमाल कैसे करें
- हर निष्कर्ष
- नाम से कोई एक निष्कर्ष
/lagune-prove
पहले से ट्रैक किए गए निष्कर्षों के नाम देखें:
npx lagune read list --findings
# Findings
# ...
# • यूज़र लुकअप में SQL इंजेक्शन
# ...
# फिर उनमें से किसी एक को साबित करो
/lagune-prove यूज़र लुकअप में SQL इंजेक्शन
यह कैसे काम करता है
हर निष्कर्ष जिस सोर्स कोड की ओर इशारा करता है, यह उसे पढ़ता है, और साबित किए गए हर निष्कर्ष के लिए .lagune/proofs/ फ़ोल्डर में एक डायरेक्टरी बनाता है, जिसमें ठीक दो फ़ाइलें होती हैं:
| फ़ाइल | यह क्या है |
|---|---|
report.test.mjs (या .cjs) | टेस्ट। अगर आपका प्रोजेक्ट पहले से Poku इस्तेमाल करता है, तो यह Poku पर चलता है, वरना Node.js के अपने रनर पर, इसलिए कुछ भी इंस्टॉल करने की ज़रूरत नहीं है। |
report.md | अपने आप में पूरी सुरक्षा एडवाइज़री: गंभीरता, असर, समस्या को दोबारा कैसे पैदा करें, और चलाने की कमांड, जिसे अलग से पढ़ा जा सकता है। |
प्रमाण हमेशा JavaScript में होते हैं, इसलिए आपका प्रोजेक्ट चाहे किसी भी भाषा में लिखा हो, वे कहीं भी चल जाते हैं। एक README.md इंडेक्स हर प्रमाण का लिंक देता है, और सभी को एक साथ चलाने के लिए एक ही कमांड बताता है।
- यह वैकल्पिक और स्वतंत्र है: यह पाँच चरणों में से एक नहीं है, और ट्रैकिंग चेन का हिस्सा भी नहीं है।
- यह सिर्फ़
.lagune/proofs/फ़ोल्डर में लिखता है, और चरणों के आर्टिफ़ैक्ट या आपके कोड को कभी नहीं छूता, उन्हें सिर्फ़ पढ़ता है। - जिस निष्कर्ष का टेस्ट समस्या को दोबारा पैदा नहीं कर पाता, उसे कोई प्रमाण नहीं मिलता, और यह आपसे कहता है कि उस जगह पर
/lagune-detectकमांड चलाकर उसे मौजूदा स्थिति से मिलाकर अपडेट करें। - इसे दोबारा चलाने पर प्रमाण मौजूदा स्थिति से मिलाकर अपडेट होते हैं: जो निष्कर्ष अब नहीं रहा या अब दोबारा पैदा नहीं होता, उसकी डायरेक्टरी हटा दी जाती है।
यह तभी चलता है जब आप इसे बुलाते हैं: एजेंट इसे कभी अपने आप शुरू नहीं करता।
prove /lagune-detect कमांड का बनाया detect मैप पढ़ता है, इसलिए पहले detect चरण चलाएँ।
केवल रक्षा के लिए, और अनुमति के साथ
कुछ भी बनाने से पहले यह पुष्टि करता है कि आपको टार्गेट को टेस्ट करने की अनुमति है, और काम करने वाले एक्सप्लॉइट, अटैक पेलोड या पकड़ से बचने की तकनीक के हर अनुरोध को ठुकरा देता है। प्रमाण सुरक्षित व्यवहार दिखाता है, यह कभी कोई अटैक इनपुट नहीं बनाता।
प्रमाण से खुलासे तक
कमज़ोरी की रिपोर्ट करने के लिए, साबित किए गए हर निष्कर्ष की दोनों फ़ाइलें एक साथ एक प्राइवेट GitHub Gist में रखें। ये एक ऐसी समस्या के सबूत हैं जो अभी मौजूद है और जिसका खुलासा नहीं हुआ है, इसलिए एक .gitignore फ़ाइल, जो .lagune/proofs/ फ़ोल्डर के अंदर है, इन्हें हर कमिट से बाहर रखती है: जब तक मेंटेनर इसे हल न कर दें, इन्हें सिर्फ़ उसी Gist के ज़रिए साझा करें।
Lagune चेन में किसी निष्कर्ष को बंद करना अब भी /lagune-harden और /lagune-verify कमांड का काम है: prove सबूत बनाता है, किसी चीज़ को बंद नहीं करता।
अक्सर पूछे जाने वाले सवाल
नहीं। /lagune-prove केवल रक्षा के लिए सबूत लिखता है: एक टेस्ट जो सुरक्षित रास्ते की पुष्टि करता है, इसलिए समस्या मौजूद रहने तक फ़ेल होता है और कोड ठीक होते ही पास हो जाता है, साथ में ज़िम्मेदार खुलासे के लिए एक सुरक्षा एडवाइज़री।
हर निष्कर्ष के लिए दो फ़ाइलें: एक टेस्ट (report.test.mjs या .cjs) और एक सुरक्षा एडवाइज़री (report.md)।
prove एक ऐसी सुरक्षा एडवाइज़री लिखता है जो अपने आप में पूरी हो, और जिसे आप ज़िम्मेदार खुलासे के नियमों के अनुसार किसी प्राइवेट चैनल, जैसे प्राइवेट GitHub Gist, के ज़रिए साझा कर सकते हैं।
