सिक्योरिटी डिफेंडर्स के लिए AIएडवांस्डपाठ 1645 मिनट का पाठ

AI की मदद से वल्नरेबिलिटी (कमज़ोरियों) की खोज

Fuzzers और स्टैटिक एनालिसिस टूल्स संभावित बग्स ढूंढते हैं। AI उन्हें सही दिशा दिखाने और नतीजों को छांटने में मदद कर सकता है, लेकिन इंसान ही उनकी पुष्टि करते हैं और ज़िम्मेदारी से रिपोर्ट करते हैं।

पाठ वीडियो में

60 सेकंड में

AI की मदद से वल्नरेबिलिटी (कमज़ोरियों) की खोज

Fuzzers और स्टैटिक एनालिसिस टूल्स संभावित बग्स ढूंढते हैं। AI उन्हें सही दिशा दिखाने और नतीजों को छांटने में मदद कर सकता है, लेकिन इंसान ही उनकी पुष्टि करते हैं और ज़िम्मेदारी से…

1/6
आसान शब्दों में
नया पुल खुलने से पहले, इंजीनियर उसमें दरारें ढूंढते हैं। वे ऐसी मशीनों का इस्तेमाल करते हैं जो उसे हिलाती हैं और ऐसे कैमरों का जो उसे स्कैन करते हैं। AI यह तय करने में मदद कर सकता है कि पहले कहाँ देखना है, लेकिन किसी दरार को ख़तरनाक बताने से पहले एक इंजीनियर खुद हर दरार की जांच करता है।
ख़तरा
सिर्फ़ उसी कोड और सिस्टम की जांच करें जिसके आप मालिक हैं या जिसकी जांच करने की साफ़ लिखित अनुमति आपके पास है। अनुमति के बिना दूसरों के सिस्टम की जांच करना भारत और कई अन्य देशों में अपराध हो सकता है। अपने कोड पर, अपनी मशीन पर ओपन-सोर्स प्रोजेक्ट्स पर, या अपनी मशीन पर खुद चलाए जाने वाले जानबूझकर वल्नरेबल बनाए गए प्रैक्टिस ऐप्स पर ही अभ्यास करें।

मुख्य टूल्स

तरीकायह क्या करता हैAI कैसे मदद कर सकता है
स्टैटिक एनालिसिस (SAST)बिना चलाए जोखिम भरे पैटर्नों को ढूंढने के लिए सोर्स कोड को पढ़ता हैनतीजों को समझाता है, संभावित ग़लत चेतावनियों (false positives) को हटाता है, समाधान सुझाता है
Fuzzingकिसी प्रोग्राम को क्रैश करने या गड़बड़ करने के लिए उसमें कई असामान्य या रैंडम इनपुट भेजता हैFuzz harnesses (छोटे टेस्ट प्रोग्राम) लिखता है और दिलचस्प इनपुट्स सुझाता है
डिपेंडेंसी स्कैनिंगज्ञात वल्नरेबिलिटीज़ के ख़िलाफ़ लाइब्रेरीज़ की जांच करता हैसंक्षेप में बताता है कि कौन से नतीजे उस कोड को प्रभावित करते हैं जिसका आप सच में उपयोग करते हैं
मैनुअल रिव्यूएक विशेषज्ञ कोड और डिज़ाइन को पढ़ता हैअनजान कोड को समझाता है और सुझाव देता है कि कहाँ देखना चाहिए
शोधकर्ता और कुछ टूल निर्माता इन तरीकों को AI के साथ मिलाने पर काम कर रहे हैं, उदाहरण के लिए मॉडल को कोड पढ़ने देना, fuzz harnesses लिखने देना और क्रैश की जांच करने देना। अब तक के परिणाम कुछ जगहों पर अच्छे रहे हैं, लेकिन ये सिस्टम अभी भी ग़लत नतीजे देते हैं और असली बग्स को छोड़ देते हैं। इन्हें केवल मददगार समझें।

स्कैनर के नतीजों को छांटना (Triaging)

स्कैनर अक्सर लंबी सूचियां बना देते हैं, और आपके संदर्भ में कई नतीजे ग़लत चेतावनियां (false positives) या कम जोखिम वाले होते हैं। यदि आप AI को नतीजा और संबंधित कोड दें, तो वह उन्हें छांटने में मदद कर सकता है।
  1. 1

    ग्रुप करें

    एक ही मूल कारण (root cause) वाले मिलते-जुलते नतीजों को एक साथ मिला दें।
  2. 2

    समझाएं

    AI से पूछें कि हर नतीजे का क्या मतलब है और डेटा जोखिम वाली लाइन तक कैसे पहुँचता है।
  3. 3

    पहुँच की जांच करें (reachability)

    क्या बाहरी इनपुट वास्तव में इस कोड तक पहुँच सकता है? क्या इसका बिल्कुल भी इस्तेमाल हो रहा है?
  4. 4

    पुष्टि करें

    अपने माहौल में एक सुरक्षित टेस्ट के साथ इसे दोबारा दोहराएं (reproduce करें)।
  5. 5

    प्राथमिकता तय करें

    जो असली है, जहाँ तक पहुँचा जा सकता है और जिसका असर बड़ा है, उसे पहले ठीक करें।
सावधान रहें
AI किसी असली बग को ग़लत चेतावनी (false positive) कह सकता है क्योंकि कोड "सुरक्षित दिखता है", या ऐसी वल्नरेबिलिटी बना सकता है जो वहाँ है ही नहीं। किसी नतीजे को बंद करने या रिपोर्ट करने से पहले, उसे दोहराकर पुष्टि करना या किसी इंसान द्वारा ध्यान से पढ़ना ज़रूरी है।

ज़िम्मेदार प्रकटीकरण (Responsible disclosure)

यदि आपको कानूनी रूप से टेस्टिंग करते समय (उदाहरण के लिए, अपनी मशीन पर ओपन-सोर्स कोड में) किसी अन्य के सॉफ़्टवेयर में कोई वल्नरेबिलिटी मिलती है, तो उनकी सुरक्षा नीति का पालन करते हुए, मेंटेनर्स को निजी तौर पर इसकी सूचना दें। विवरण सार्वजनिक रूप से साझा करने से पहले उन्हें इसे ठीक करने के लिए उचित समय दें।
ग़ैर-ज़िम्मेदार
  • "बस जांचने के लिए" किसी कंपनी की वेबसाइट को स्कैन करना
  • मेंटेनर के ठीक करने से पहले किसी बग को सार्वजनिक रूप से पोस्ट करना
  • बिना जांचे AI द्वारा तैयार की गई बग रिपोर्ट्स सबमिट करना
ज़िम्मेदार
  • केवल उसी की टेस्टिंग करना जिसके आप मालिक हैं या जिसके लिए आप अधिकृत हैं
  • प्रोजेक्ट के सुरक्षा संपर्क के माध्यम से निजी तौर पर रिपोर्ट करना
  • रिपोर्ट करने से पहले समस्या को खुद दोहराना और साफ़-साफ़ समझाना
नोट
ओपन-सोर्स प्रोजेक्ट्स के मेंटेनर्स अक्सर वॉलंटियर होते हैं। बिना जांचे, AI द्वारा लिखी गई बग रिपोर्ट्स उनका समय बर्बाद करती हैं। केवल वही रिपोर्ट करें जिसकी आपने खुद पुष्टि की हो।
यह आज़माएं। अपने उपयोग किए जाने वाले किसी ओपन-सोर्स प्रोजेक्ट की सुरक्षा नीति ढूंढें (अक्सर SECURITY.md नाम की फ़ाइल)। यह लोगों से वल्नरेबिलिटीज़ की रिपोर्ट कैसे करने को कहती है?

और देखें और पढ़ें

लैब

कारणों और प्राथमिकताओं के साथ काल्पनिक स्कैनर नतीजों की एक छांटी गई सूची।

~30 min

समस्या

नीचे आपके अपने प्रैक्टिस प्रोजेक्ट के काल्पनिक स्कैनर नतीजे दिए गए हैं। केवल कागज़ पर या अपने एडिटर में काम करें।

  1. प्रत्येक नतीजे के लिए, किसी AI से इसे आसान शब्दों में समझाने को कहें।
  2. नोट्स का उपयोग करके निर्णय लें: संभावित रूप से असली, संभावित रूप से फ़ॉल्स पॉज़िटिव, या अधिक जांच की ज़रूरत है। अपना कारण लिखें।
  3. असली वाले नतीजों को प्राथमिकता के क्रम में रखें।
  4. शीर्ष नतीजे के लिए एक संक्षिप्त निजी प्रकटीकरण नोट लिखें, जैसे कि प्रोजेक्ट किसी और का हो: क्या, कहाँ, प्रभाव, सुरक्षित रूप से कैसे दोहराएं (reproduce करें), और एक सुझाया गया समाधान।
शुरुआती कोडtext
F1  SQL built from string   app/orders.py:42   note: value comes from URL parameter "order_id"
F2  Hard-coded password    tests/fixtures.py:8  note: file used only in unit tests, fake value
F3  Weak hash (MD5)        app/cache.py:15      note: used to name cache files, not for passwords
F4  Missing auth check     app/admin.py:77      note: route /admin/export has no login decorator
F5  Outdated library       requirements.txt     note: known issue is in a feature the app does not import

आपका काम तब पूरा होगा जब

कठिन सवाल

उत्तर देखने से पहले ख़ुद जवाब देने की कोशिश करें। अगर आप इनके जवाब दे सकते हैं, तो आप पाठ समझ गए हैं।

Q1F5 आज "पहुँच योग्य नहीं" (not reachable) है। फिर भी आप लाइब्रेरी को अपग्रेड क्यों कर सकते हैं?दिखाएं

कोड बदलता रहता है। भविष्य का कोई फ़ीचर कमज़ोर हिस्से का उपयोग करना शुरू कर सकता है, और हो सकता है किसी को पुराने नतीजे याद न रहें। अपग्रेड भविष्य के पैच को भी आसान बनाते हैं। यह F1 और F4 की तुलना में कम प्राथमिकता वाला है, लेकिन इसे ट्रैक किया जाना चाहिए, भुलाया नहीं जाना चाहिए।

Q2बग्स को अपने आप ढूंढने वाला AI सिस्टम बचाव करने वालों (defenders) के लिए अच्छा और जोखिम भरा दोनों क्यों है?दिखाएं

अच्छा इसलिए, क्योंकि यह बचाव करने वालों को बग्स को तेज़ी से ढूंढने और ठीक करने में मदद कर सकता है। जोखिम भरा इसलिए, क्योंकि हमलावर भी इसी तरह के तरीकों का उपयोग कर सकते हैं, और क्योंकि ग़लत रिपोर्ट्स से मेंटेनर्स परेशान हो सकते हैं। बढ़त उन टीमों को मिलती है जो इसे त्वरित सुधार, सावधानीपूर्वक जांच और ज़िम्मेदार प्रकटीकरण के साथ जोड़ती हैं।

जारी रखने के लिए कृपया साइन इन करें।

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

स्कैनिंग में फ़ॉल्स पॉज़िटिव (false positive) क्या है?

एक ऐसा नतीजा जो वल्नरेबिलिटी जैसा दिखता है लेकिन असल में नहीं होता, उदाहरण के लिए क्योंकि इनपुट की जांच पहले ही हो चुकी है, या कोड तक कभी पहुँचा ही नहीं जा सकता। स्कैनर सतर्क रहने के लिए बनाए जाते हैं, इसलिए वे अक्सर इन्हें रिपोर्ट करते हैं।

fuzz harness क्या है?

कोड का एक छोटा सा टुकड़ा जो fuzzer से इनपुट लेता है और उसे उस फ़ंक्शन में भेजता है जिसे आप टेस्ट करना चाहते हैं। Harnesses लिखना धीमा काम है, और AI उनका ड्राफ़्ट तैयार करने में मदद कर सकता है। आप फिर भी यह जांचते हैं कि harness सही चीज़ का टेस्ट कर रहा है या नहीं।

क्या AI ऐसे बग्स ढूंढ सकता है जो टूल्स से छूट जाते हैं?

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

क्या बग बाउंटी ढूंढना कानूनी है?

हाँ, जब आप प्रोग्राम के लिखित नियमों और दायरे (scope) का पालन करते हैं। उस दायरे से बाहर, या बिना किसी प्रोग्राम या अनुमति के किसी भी चीज़ की जांच करने की अनुमति नहीं है।

पाठ का टेस्ट

5 सवाल। पास होने और इस पाठ को पूरा करने के लिए 3 सही होने चाहिए (60%)।

टेस्ट देने और अपनी प्रोग्रेस सेव करने के लिए साइन इन करें