
गिटहब पर उजागर हो सकने वाली संवेदनशील जानकारी की लगातार निगरानी करने का एक तरीका
मुझे पता है कि GitHub पर वर्तमान में लीक संवेदनशील जानकारी खोजने के लिए कई अन्य उपकरण उपलब्ध हैं, मैं स्वयं अभी भी उनमें से कुछ का उपयोग करता हूं। हालांकि, मुझे लगता है कि उनमें अभी भी कुछ विशेषताओं की कमी है जैसे:
अन्य उपकरण उन रिपॉजिटरी में संवेदनशील जानकारी खोजने पर अधिक ध्यान केंद्रित करते हैं जिनमें Git पता पहले से इनपुट किया गया हो। जब मैंने GitMonitor विकसित किया, उस समय इसी तरह के केवल कुछ ही उपकरण थे जो पहले ढूंढने पर ध्यान केंद्रित करते थे कि किन रिपॉजिटरी पर ध्यान देने की आवश्यकता है, सभी प्रासंगिक रिपॉजिटरी ढूंढें, फिर जाँच करें कि उनमें संवेदनशील जानकारी मौजूद है या नहीं।
संवेदनशील जानकारी की जाँच के लिए नियमों के अलावा, उपकरण में रुचि की रिपॉजिटरी खोजने के नियम भी होने चाहिए। विचाराधीन रिपॉजिटरी वे हो सकती हैं जिनमें कंपनी या प्रोजेक्ट से संबंधित कीवर्ड हों।
यदि आप बग बाउंटी हंटर हैं तो आपको एक समय में केवल कुछ लक्ष्यों में रुचि होगी। हालांकि, यदि आप किसी कंपनी के सुरक्षा इंजीनियर हैं, तो आपको यह जानना होगा कि जब आपकी कंपनी या प्रोजेक्ट से संबंधित कोई रिपॉजिटरी सामने आती है और उसमें संवेदनशील जानकारी हो सकती है। ऐसी रिपॉजिटरी GitHub पर कहीं भी, किसी भी नाम से और किसी भी खाते द्वारा पोस्ट की जा सकती है। आपको ऐसी रिपॉजिटरी दिखाई देते ही एक अलर्ट प्राप्त करना चाहिए (निरंतर निगरानी)।
उपकरण में एक लचीला रिपोर्टिंग तंत्र है।
यही कारण है कि मैंने यह उपकरण - GitMonitor बनाया। GitMonitor आपकी आवश्यकता के अनुसार खोजने के लिए नियमों के दो अलग-अलग सेटों का उपयोग करता है। द सर्चिंग रूलसेट उन रिपॉजिटरी की खोज करेगा जो आपके संगठन या आंतरिक प्रोजेक्ट्स, या किसी और चीज़ से संबंधित हो सकती हैं, मिलान वाली रिपॉजिटरी को स्थानीय रूप से क्लोन करेगा। फिर, संवेदनशील फ़िल्टरिंग रूलसेट यह जाँच करेगा कि उन रिपॉजिटरी में संवेदनशील जानकारी मौजूद है या नहीं। अंत में उपकरण Slack के माध्यम से रिपोर्ट करेगा। आप इस उपकरण को Cronjob के साथ उपयोग करके एक निरंतर निगरानी प्रणाली बना सकते हैं ताकि आपके संगठन से संबंधित संवेदनशील जानकारी के GitHub पर लीक होने पर नज़र रख सकें और Slack के माध्यम से परिणाम प्राप्त कर सकें।
अपडेट 15 जून, 2020: हमने संस्करण 1.0 में अपडेट किया है। यह संस्करण कुछ बग्स को ठीक करता है ताकि Gitmonitor स्थिर रूप से काम कर सके। यदि आप पिछले संस्करणों का उपयोग कर रहे हैं तो हम git pull करने की अनुशंसा करते हैं।
नियमों के दो अलग-अलग सेटों का उपयोग करें: एक खोज नियम सेट (yaml) रुचि की रिपॉजिटरी खोजने के लिए, और एक फ़िल्टर नियम सेट (regex) यह जाँचने के लिए कि क्या उन रुचि के कंटेनरों में संवेदनशील जानकारी है। खोज नियम (yaml) और फ़िल्टरिंग नियम (regex) अलग-अलग परिभाषित किए गए हैं। उपयोगकर्ता आसानी से और सहज रूप से yaml नियम और regex परिभाषित कर सकते हैं।
खोज नियम सेट: आप विभिन्न yaml फ़ाइलों का उपयोग करके कई अलग-अलग नियम बना सकते हैं। नियम आपको लचीले ढंग से यह परिभाषित करने की अनुमति देते हैं कि आप रिपॉजिटरी कैसे खोजना चाहते हैं, आप कीवर्ड, या भाषा, फ़ाइलनाम और एक्सटेंशन से जुड़े कीवर्ड का उपयोग कर सकते हैं, या आप भाषा, फ़ाइलनाम या एक्सटेंशन के आधार पर रिपॉजिटरी को खोज से बाहर करने के लिए भी परिभाषित कर सकते हैं। कीवर्ड रिपॉजिटरी के नाम, रिपॉजिटरी के कोड और कमिट के माध्यम से खोजे जाएंगे।
फ़िल्टर नियम सेट: आप रिपॉजिटरी में मौजूद संवेदनशील जानकारी खोजने के लिए आसानी से regex जोड़ या संशोधित कर सकते हैं।
पहली रिपॉजिटरी जो खोज नियमों से मेल खाती है, उसे स्थानीय रूप से क्लोन किया जाएगा। फिर, फ़िल्टर नियम सेट जाँच करेगा कि इस रिपॉजिटरी में संवेदनशील जानकारी मौजूद है या नहीं। संवेदनशील जानकारी की जाँच पूरी करने के बाद, Gitmonitor परिणाम रिकॉर्ड करेगा और स्थान बचाने के लिए इस रिपॉजिटरी को स्थानीय रूप से स्वचालित रूप से हटा देगा, इसके बाद इस प्रक्रिया को तब तक दोहराएगा जब तक सभी प्रासंगिक रिपॉजिटरी नहीं मिल जातीं और जाँच नहीं हो जातीं।
Slack के माध्यम से रिपोर्ट करें।
इस उपकरण को निरंतर निगरानी के लिए Cronjob द्वारा शेड्यूल किया जा सकता है।

> python3 -m pip install -r requirements.txt
कृपया सुनिश्चित करें कि आपके पास Pyyaml संस्करण 5x या उच्चतर स्थापित है (pip3 install --ignore-installed PyYAML)
निम्न तालिका कॉन्फ़िगरेशन फ़ाइल में प्रत्येक कुंजी का अर्थ बताती है:
> export GIT_USERNAME=आपका Github उपयोगकर्ता नाम
> export GIT_PASSWORD=आपकी Github व्यक्तिगत कुंजी या पासवर्ड
या कॉन्फ़िगरेशन फ़ाइल में क्रेडेंशियल जानकारी परिभाषित करें (अनुशंसित नहीं):
कॉन्फ़िगरेशन फ़ाइल का उदाहरण जब आप पर्यावरण चर में क्रेडेंशियल जानकारी परिभाषित करते हैं

आप कई कीवर्ड परिभाषित करने के लिए नियम टेम्पलेट की तरह कई अलग-अलग yaml फ़ाइलें बना सकते हैं। एक नियम फ़ाइल नीचे दी गई छवि की तरह दिखाई देगी:

> python3 gitmonitor.py
उदाहरण के लिए:

इस प्रोजेक्ट के कई क्षेत्रों में सुधार किया जा सकता है और वर्तमान कोड को रिफैक्टर करने और नई सुविधाओं को लागू करने के दौरान महत्वपूर्ण परिवर्तन हो सकते हैं। समुदाय से सुधारों और पुल रिक्वेस्ट के साथ प्रतिक्रिया की अत्यधिक सराहना की जाएगी और स्वीकार की जाएगी।
सामान्य तौर पर, हम "फोर्क-एंड-पुल" Git वर्कफ़्लो का पालन करते हैं।
नोट: पुल रिक्वेस्ट करने से पहले "अपस्ट्रीम" से नवीनतम को मर्ज करना सुनिश्चित करें!
| कुंजी | विवरण |
|---|
| user | Github उपयोगकर्ता नाम - यदि आपने पर्यावरण चर के माध्यम से Github क्रेडेंशियल सेट किए हैं तो खाली छोड़ दें |
| pass | Github पासवर्ड - यदि आपने पर्यावरण चर के माध्यम से Github क्रेडेंशियल सेट किए हैं तो खाली छोड़ दें |
| webhooks | GitMonitor से Slack पर संदेश पोस्ट करने के लिए इनकमिंग वेबहुक टोकन |
| rule | वह निर्देशिका जिसमें खोज नियम सेट है |
| source | रिपॉजिटरी डाउनलोड करने के लिए निर्देशिका |
| log | इस निर्देशिका में वह JSON फ़ाइल होगी जो प्रत्येक स्कैन के बाद स्थिति रिकॉर्ड करती है, इस JSON फ़ाइल का उपयोग स्कैन के बीच परिणामों की तुलना करने के लिए किया जाता है (नई रिपॉजिटरी की पहचान करने के लिए) |
| start | स्कैन शुरू करने के लिए बैनर और संवेदनशील फ़िल्टरिंग नियम सेट स्कैन के परिणाम के लिए बैनर परिभाषित करें - Slack को भेजे गए परिणामों में दिखाई देगा |
| end | स्कैन समाप्त करने के लिए बैनर और खोज नियम सेट स्कैन के परिणाम के लिए बैनर परिभाषित करें - Slack को भेजे गए परिणामों में दिखाई देगा |
| all | सभी रिपॉजिटरी दिखाने के लिए बैनर परिभाषित करें - Slack को भेजे गए परिणामों में दिखाई देगा |