कोड समीक्षा के लिए एक संक्षिप्त अंतर्दृष्टि

May 07 2023
सुनिये सब लोग!! मुझे आशा है कि आप अच्छा कार्य कर रहे हैं। यह ब्लॉग क्यों? जब मैंने पैठ परीक्षण में कौशल हासिल करना शुरू किया, तो मेरे सीखने के शुरुआती महीनों में पेलोड को कॉपी-पेस्ट करना और दूसरों ने जो किया उसकी नकल करना शामिल था।

सुनिये सब लोग!! मुझे आशा है कि आप अच्छा कार्य कर रहे हैं।

यह ब्लॉग क्यों?

जब मैंने पैठ परीक्षण में कौशल हासिल करना शुरू किया, तो मेरे सीखने के शुरुआती महीनों में पेलोड को कॉपी-पेस्ट करना और दूसरों ने जो किया उसकी नकल करना शामिल था। मुझे कोई अंदाजा नहीं था कि एक पैनटेस्ट/हैकिंग कैसे किया जाता है, इसने मेरी अधिकांश हैकिंग को एक अरुचिकर अनुभव बना दिया। मैंने महसूस किया कि स्पष्ट समस्या मेरे सीखने के दृष्टिकोण की थी, मैं कमजोरियों को खोजने में बहुत अधिक व्यस्त था लेकिन कभी भी उन कारणों के बारे में जानने की परवाह नहीं की कि भेद्यता क्यों मौजूद है।

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

मुझे पता था कि मैं इस अनुभव से गुजरने वाला अकेला नहीं था और कई अब भी ऐसा करते हैं इसलिए मैंने इस ब्लॉग को लिखने का फैसला किया। अब बिना किसी और हलचल के, आइए हम सीधे इसकी मूल बातों पर, या मैंने अब तक जो कुछ सीखा है, उस पर चलते हैं।

कोड समीक्षा क्या है?

सिक्योर कोड रिव्यू एप्लिकेशन की समग्र सुरक्षा स्थिति में सुधार के लिए एप्लिकेशन के स्रोत कोड की जांच करने की प्रक्रिया है। यह या तो स्वचालित (भाषा, ढांचा-विशिष्ट) हो सकता है या मैन्युअल हो सकता है। लक्ष्य केवल स्रोत कोड के भीतर सुरक्षा खामियों की पहचान करना नहीं है बल्कि असुरक्षित कोड कार्यान्वयन की तैयारी को रोकने के लिए विकास चक्र के भीतर वैध शमन प्रदान करना और सुरक्षित कोड प्रथाओं को पेश करना भी है।

लर्निंग सोर्स कोड रिव्यू के लाभ:

  1. आपको इस बात की गहरी समझ देता है कि एक डेवलपर कैसे सोचता है और कार्यात्मकताओं का कैसे फायदा उठाया जा सकता है।
  2. यदि आप एक पेंटेस्टर हैं, तो आप समझेंगे कि एक बग पहले स्थान पर क्यों मौजूद है।
  3. यह आपको वास्तविक जीवन में अधिक बग खोजने में मदद करता है, अब जब आप जानते हैं कि एक डेवलपर कोड के एक टुकड़े को कैसे सोचता है और लागू करता है, तो आप उसी कार्यक्षमता के लिए एक समाधान ढूंढ सकते हैं और उसका फायदा उठा सकते हैं।
  4. यह आपको अपने लक्ष्य से संबंधित संवेदनशील जानकारी, तीव्र उदाहरण जैसे AWS कुंजियाँ, प्रामाणिक टोकन, API कुंजियाँ, हार्डकोडेड क्रेडेंशियल्स, उजागर फ़ाइलें, और बहुत कुछ खोजने में मदद करता है।

कोड की समीक्षा करने का उचित तरीका सीखने से पहले, मेरी कोड समीक्षा के शुरुआती दिनों में, मैंने मुख्य रूप से सुरक्षा गलत कॉन्फ़िगरेशन और हार्ड-कोडित संवेदनशील जानकारी पर ध्यान केंद्रित किया।

विचार करें, यदि मेरा लक्ष्य कोड ASP.NET पर आधारित था, तो मैं प्राथमिक निष्कर्षों पर केंद्रित था जैसे:

1. संवेदनशील हार्डकोडेड जानकारी जैसे क्रेडेंशियल्स, एपीआई कुंजी, गुप्त टोकन इत्यादि

उस कोड को आयात करें जिसकी आप किसी भी कोड संपादक में समीक्षा कर रहे हैं (मैं वीएस कोड पसंद करता हूं) और कीवर्ड के लिए ग्रिपिंग शुरू करें जैसे:

  • पासवर्ड / पीडब्ल्यूडी / पासवार्ड / पास / पासवर्ड / admin_passwd / adminpasswd / adminPass
  • एपीआई_की / एपीकी / एपी-की
  • सीक्रेट / सीक्रेट_की / स्काई / प्राइवेट की / प्राइवेट_की / पकी

2. सुरक्षा गलत कॉन्फ़िगरेशन

एक। कस्टम त्रुटियाँ

नीचे दिए गए XML को एक उदाहरण के रूप में लें, यहां हम जांच कर रहे हैं कि ASP.NET कोड ने कस्टम एरर हैंडलिंग को लागू किया है या नहीं, यदि नहीं, तो स्टैक ट्रेस या डिफ़ॉल्ट त्रुटियों के माध्यम से क्लाइंट साइड पर संवेदनशील जानकारी का खुलासा किया जा सकता है।

  • सुरक्षित कोड:
  • <configuration>
       <system.web>
          <customErrors mode="Off">
    

    <customErrors mode="RemoteOnly"  
      defaultRedirect="customerror.htm">  
        <error statusCode="404" redirect="customerror404.htm"/>  
    </customErrors>
    

  • गलत कॉन्फ़िगर किया गया कोड:
  • <configuration>
       <system.web>
          <httpCookies httpOnlyCookies="false">
    

    <configuration>
       <system.web>
          <httpCookies httpOnlyCookies="true">
    

समीक्षा कोड में पैटर्न पहचान, प्रोग्रामिंग, कमजोर तत्वों/कार्यों की पहचान और बहुत कुछ जैसे कौशल शामिल हैं। नीचे दिया गया उदाहरण लें:

...
string userName = ctx.getAuthenticatedUserName();
string query = "SELECT * FROM items WHERE owner = '" + userName + "' AND itemname = '" + ItemName.Text + "'";
sda = new SqlDataAdapter(query, conn);
DataTable dt = new DataTable();
sda.Fill(dt);
...

उपरोक्त कोड गतिशील रूप से एक SQL क्वेरी बनाता है जिसमें क्वेरी डेटा लौटाती है जहां "स्वामी" उपयोगकर्ता नाम से मेल खाता है। किसी भी SQL इंजेक्शन भेद्यता को खत्म करने के लिए पैरामिट्रीकृत बयानों का उपयोग करने के बजाय SQL क्वेरी के साथ उपयोगकर्ता इनपुट "उपयोगकर्ता नाम" का प्रत्यक्ष संयोजन प्रदर्शन कर रहा है।

आदर्श रूप से, उपरोक्त SQL क्वेरी को निम्नानुसार बनाया जाना चाहिए:

SELECT * FROM items WHERE owner = {{username}} AND itemname = {{itemName}};

payload' OR '1'='1

उपरोक्त कथन अंतिम प्रश्न को इस प्रकार बनाएगा:

SELECT * FROM items WHERE owner = 'Attacker' AND itemname = 'payload' OR '1'='1';

कार्यान्वयन में दोष कोड स्निपेट को SQL इंजेक्शन हमलों के लिए असुरक्षित बनाता है।

तो सवाल उठता है कि आप ऐसे कोड की समीक्षा कैसे करते हैं? आप कोड की लाखों पंक्तियों वाले स्रोत कोड की समीक्षा कैसे करते हैं? यह अटपटा लग सकता है लेकिन मुझ पर विश्वास करें कि कोड की समीक्षा करने के कई कुशल तरीके हैं। हम इस श्रृंखला के आने वाले भागों में कोड समीक्षा के बारे में अधिक चर्चा करेंगे। तब तक आप एक ट्विटर थ्रेड के माध्यम से जा सकते हैं जिसे मैंने स्रोत कोड समीक्षा सीखने के लिए पोस्ट किया था जिसे आप यहां पा सकते हैं ।

मैंने इस ब्लॉग को संक्षिप्त और सरल रखा है ताकि आपको यह जानकारी मिल सके कि कोड की समीक्षा क्या हो सकती है और आप भी इसके साथ कैसे शुरुआत कर सकते हैं। मैं जल्द ही आप लोगों के साथ और साझा करूंगा।

## संदर्भ:

  • https://cwe.mitre.org/data/definitions/89.html
  • https://www.c-sharpcorner.com/UploadFile/a53555/owasp-sharp5-security-misconfiguration-hardening-your-Asp-Net-a/

मैं खुद एक शिक्षार्थी हूं और जो ज्ञान मैंने अब तक सीखा है उसे साझा कर रहा हूं। यदि आपके पास प्रतिक्रिया है, चाहे वह आलोचना हो या प्रशंसा, मैं तहे दिल से उनका स्वागत करता हूं।

मुझे यहां मिलो!!

  • mr_fr3qu3n533
  • मुझे यहाँ एक मेल लिखें ।