Lagune अपनी बिल्ट-इन विशेषज्ञताओं को 13 श्रेणियों में बाँटता है। प्रोजेक्ट जिन श्रेणियों का इस्तेमाल करता है, उन्हीं से तय होता है कि कौन-सी बिल्ट-इन विशेषज्ञताएँ उसके कैटलॉग में शामिल होंगी। ये श्रेणियाँ दो हिस्सों में बँटी हैं: सिस्टम क्या करता है, और वह किस भाषा में लिखा गया है।
जब तक कोई श्रेणी दर्ज नहीं होती, प्रोजेक्ट सिर्फ़ owasp का इस्तेमाल करता है। /lagune-charter कमांड प्रोजेक्ट को पढ़कर हर वह श्रेणी दर्ज करती है जिसका उसे प्रोजेक्ट में आधार मिलता है, और आप जब चाहें इन्हें ख़ुद बदल सकते हैं।
सिस्टम क्या करता है
| श्रेणी | कुंजी | यह किसे मज़बूत करती है |
|---|---|---|
| OWASP | owasp | वे ऐप्लिकेशन सुरक्षा जोखिम जिन्हें OWASP ट्रैक करता है: इंजेक्शन, कमज़ोर एक्सेस कंट्रोल (Broken Access Control), ऑथेंटिकेशन और क्रिप्टो की विफलताएँ |
| इन्फ़्रास्ट्रक्चर | infra | कंटेनर, वर्कलोड और सर्वरलेस कॉन्फ़िगरेशन: Dockerfile, Compose, Pod सुरक्षा, FaaS IAM और ट्रिगर |
| AI / LLM | ai | AI और LLM इंटीग्रेशन, प्रॉम्प्ट इंजेक्शन और टूल, एजेंट, रिट्रीवल और MCP की असुरक्षित वायरिंग के ख़िलाफ़ |
| Lovable | lovable | AI से बने Supabase ऐप (Lovable और उस जैसे): RLS की कमियाँ, लीक हुई service_role कुंजियाँ और असुरक्षित डिफ़ॉल्ट |
सिस्टम किस भाषा में लिखा गया है
| श्रेणी | कुंजी | यह किसे मज़बूत करती है |
|---|---|---|
| JavaScript | javascript | eval और child_process से RCE, पाथ ट्रैवर्सल और प्रोटोटाइप पॉल्यूशन, इसके सभी रनटाइम में |
| Python | python | pickle और YAML डीसीरियलाइज़ेशन से RCE, str.format से स्ट्रिंग ट्रैवर्सल और क्लास पॉल्यूशन |
| Rust | rust | अनसाउंड unsafe API, transmute का ग़लत इस्तेमाल, इंटीजर ओवरफ़्लो और FFI सीमा पर अपरिभाषित व्यवहार (undefined behavior) |
| C / C++ | c-cpp | फ़ॉर्मैट स्ट्रिंग बग, बफ़र ओवरफ़्लो और आउट-ऑफ़-बाउंड्स राइट, जो कोड एक्ज़ीक्यूशन का रास्ता खोलते हैं |
| PHP | php | टाइप जगलिंग से ऑथेंटिकेशन बायपास, ऑब्जेक्ट इंजेक्शन गैजेट चेन और असुरक्षित डिफ़ॉल्ट कॉन्फ़िगरेशन |
| Go | go | typed nil इंटरफ़ेस बग, गोरूटीन डेटा रेस और सुरक्षा से जुड़े कोड पाथ पर असुरक्षित कॉन्करेंसी |
| Java | java | ObjectInputStream डीसीरियलाइज़ेशन गैजेट चेन, जो आख़िरकार रिमोट कोड एक्ज़ीक्यूशन तक पहुँचती हैं |
| Ruby | ruby | Marshal.load और YAML डीसीरियलाइज़ेशन गैजेट चेन, जो रिमोट कोड एक्ज़ीक्यूशन तक पहुँचती हैं |
| .NET / C# | dotnet | BinaryFormatter डीसीरियलाइज़ेशन से RCE और वे एनकोडर बायपास जो XSS तक पहुँचते हैं |
Lagune किसी एक भाषा से बंधा नहीं है: पूरा फ़्लो आपके प्रोजेक्ट को पढ़ता है, वह चाहे किसी भी भाषा में लिखा हो, और ये श्रेणियाँ बस किसी एक भाषा के ख़ास जोखिमों पर और गहराई जोड़ती हैं।
कभी भी जोड़ें और हटाएँ
श्रेणी एक शुरुआत है, कोई पक्का वादा नहीं। अभी प्रोजेक्ट पर जो फ़िट बैठे, उसका इस्तेमाल करें, और write add और write remove से कुंजी के ज़रिए उसे कभी भी बदलें। टर्मिनल में बिना किसी वैल्यू के --categories देने पर एक इंटरैक्टिव पिकर खुलता है (स्पेस से चुनें या हटाएँ, एंटर से पक्का करें, कुछ न चुनें तो यह स्किप हो जाता है)। टर्मिनल के बाहर, श्रेणियाँ इसके बाद लिखकर दें।
- जोड़ें
- हटाएँ
npx lagune write add --categories # interactive
npx lagune write add --categories owasp
npx lagune write add --categories owasp rust
npx lagune write remove --categories # interactive
npx lagune write remove --categories owasp
npx lagune write remove --categories owasp rust
write add या write remove पहली बार चलाने पर शुरुआत owasp से होती है, इसलिए हर श्रेणी हटाने पर सूची ख़ाली रह जाती है, डिफ़ॉल्ट पर कभी नहीं लौटती। हर बदलाव .lagune/configs.json में दर्ज होता है, ताकि पूरी टीम एक ही सेट के साथ काम करे।
देखें कि प्रोजेक्ट क्या इस्तेमाल करता है
read list --categories हर श्रेणी दिखाता है, और यह भी कि प्रोजेक्ट उसका इस्तेमाल करता है या नहीं:
npx lagune read list --categories
# Categories
# • owasp [used] Harden against the application security risks OWASP tracks
# • javascript [available] Harden JavaScript and its runtimes
# • php [available] Harden PHP against type-juggling auth bypass
# • go [available] Harden Go against typed-nil interface bugs
# ...
#
# No category is recorded yet, so this project uses the default: owasp.
हर श्रेणी में कौन-सी विशेषज्ञताएँ हैं, यह कैटलॉग में देखें। /lagune-specialize से लिखी आपकी अपनी विशेषज्ञताएँ कैटलॉग में शामिल होती हैं, श्रेणियाँ चाहे जो हों।
अक्सर पूछे जाने वाले सवाल
श्रेणी की कुंजी --categories को दें, जैसे npx lagune write add --categories javascript चलाएँ। जब तक कोई श्रेणी दर्ज नहीं होती, charter चरण भी प्रोजेक्ट को पढ़कर वे श्रेणियाँ दर्ज करता है जिनका उसे आधार मिलता है।
हाँ। उन्हें एक ही लाइन में, एक के बाद एक लिखें।
डिफ़ॉल्ट owasp से शुरू करें, फिर अपनी भाषा या स्टैक वाली श्रेणी जोड़ें। विशेषज्ञताएँ सिर्फ़ ज़रूरत पड़ने पर ही लोड होती हैं, इसलिए किसी श्रेणी का तब तक कोई बोझ नहीं पड़ता, जब तक किसी चरण को उसकी किसी विशेषज्ञता की ज़रूरत न हो।
