AD

GitHub Repository से लीक हुए API Keys और Credentials को कैसे खोजें: TruffleHog के साथ एक प्रैक्टिकल केस स्टडी

GitHub Repository से लीक हुए API Keys और Credentials को कैसे खोजें: TruffleHog के साथ एक प्रैक्टिकल केस स्टडी

आधुनिक सॉफ्टवेयर डेवलपमेंट में तेजी से काम करने के लिए डेवलपर्स अक्सर थर्ड-पार्टी सर्विसेज जैसे AWS, Firebase, SendGrid और Stripe का उपयोग करते हैं। इन सर्विसेज को कोड से कनेक्ट करने के लिए API Keys, Access Tokens और Passwords (जिन्हें सामूहिक रूप से 'Secrets' कहा जाता है) की आवश्यकता होती है।

लेकिन क्या हो अगर कोई डेवलपर गलती से इन संवेदनशील क्रेडेंशियल्स को GitHub जैसी पब्लिक रिपोजिटरी पर पुश कर दे? हैकर्स लगातार स्वचालित बॉट्स (Automated Bots) का उपयोग करके पब्लिक गिटहब रिपोजिटरी को स्कैन करते रहते हैं। एक बार जब उन्हें कोई एक्टिव API Key मिलती है, तो वे उसका दुरुपयोग करके क्लाउड रिसोर्सेज का इस्तेमाल माइनिंग के लिए कर सकते हैं या डेटा चोरी कर सकते हैं।

इस प्रैक्टिकल केस स्टडी में, हम एक वास्तविक परिदृश्य (Scenario) के माध्यम से समझेंगे कि कैसे एक एथिकल हैकर या सिक्योरिटी इंजीनियर ओपन-सोर्स टूल TruffleHog का उपयोग करके गिटहब रिपोजिटरी में छिपे हुए संवेदनशील डेटा को खोजता है और उसे सुरक्षित करता है।

केस स्टडी: EduTech Solutions की सुरक्षा चूक

मान लीजिए 'EduTech Solutions' नाम का एक छोटा स्टार्टअप है। उनके एक जूनियर डेवलपर ने अपनी कंपनी के वेब एप्लिकेशन पर काम करते समय ईमेल भेजने के लिए SendGrid API और डेटा स्टोरेज के लिए AWS S3 Bucket का उपयोग किया। जल्दबाजी में, उसने इन दोनों के क्रेडेंशियल्स को सीधे कोड में हार्डकोड (Hardcode) कर दिया और प्रोजेक्ट को सार्वजनिक गिटहब रिपोजिटरी पर पुश कर दिया।

हालांकि बाद में सीनियर डेवलपर ने इस गलती को पकड़ लिया और कोड से उन लाइनों को हटाकर एक नया कमिट (Commit) पुश कर दिया। लेकिन क्या खतरा टल गया? बिल्कुल नहीं। Git का इतिहास (Git History) हर बदलाव को रिकॉर्ड करता है। यदि कोई हैकर पुरानी कमिट हिस्ट्री को खंगालेगा, तो उसे वे क्रेडेंशियल्स आसानी से मिल जाएंगे।

आइए देखें कि इस समस्या को हल करने के लिए हम TruffleHog का उपयोग कैसे करेंगे।

TruffleHog क्या है और यह कैसे काम करता है?

TruffleHog एक अत्यधिक प्रभावी ओपन-सोर्स सीक्रेट स्कैनर टूल है। यह गिट रिपोजिटरी के पूरे इतिहास (Commits, Branches, और Releases) को स्कैन करता है। यह दो मुख्य तरीकों से काम करता है:

  • Detectors (डिटेक्टर्स): यह 800 से अधिक विशिष्ट क्रेडेंशियल आर्किटेक्चर (जैसे AWS Keys, Slack Webhooks, Stripe Keys) की पहचान करने के लिए रेगुलर एक्सप्रेशन (Regex) का उपयोग करता है।
  • Entropy Scanning: यह कोड में उच्च एन्ट्रॉपी (High Entropy) वाले रैंडम स्ट्रिंग्स की खोज करता है, जो अक्सर पासवर्ड या एन्क्रिप्शन कीज होते हैं।

स्टेप-बाय-स्टेप गाइड: TruffleHog से लीक क्रेडेंशियल्स की पहचान करना

अब हम प्रैक्टिकल प्रोसेस को स्टेप-बाय-स्टेप समझेंगे। इस प्रदर्शन के लिए हम लिनक्स (Ubuntu/Kali) या macOS एनवायरनमेंट का उपयोग कर रहे हैं।

स्टेप 1: TruffleHog इंस्टॉल करना

TruffleHog को इंस्टॉल करना बेहद आसान है। आप इसे Docker, Homebrew या सीधे बाइनरी के जरिए इंस्टॉल कर सकते हैं। यहाँ हम इसे इंस्टॉल करने के लिए सबसे आसान कमांड का उपयोग कर रहे हैं:

# macOS के लिए Homebrew का उपयोग करें:
brew install trufflehog

# या Docker का उपयोग करके चलाएं:
docker run --rm -it trufflesecurity/trufflehog:latest --help

स्टेप 2: गिटहब रिपोजिटरी को स्कैन करना

एक बार इंस्टॉलेशन पूरा हो जाने के बाद, हम EduTech Solutions की संदिग्ध पब्लिक रिपोजिटरी को स्कैन करेंगे। ध्यान दें कि हमें रिपोजिटरी को लोकल सिस्टम पर डाउनलोड (Clone) करने की भी आवश्यकता नहीं है; TruffleHog इसे सीधे क्लाउड से स्कैन कर सकता है।

trufflehog github --repo https://github.com/edutech-solutions/main-app

यह कमांड रिपोजिटरी के प्रत्येक कमिट, ब्रांच और पुल रिक्वेस्ट की गहराई से जांच करना शुरू कर देगी।

स्टेप 3: स्कैन रिजल्ट्स का विश्लेषण करना

स्कैन पूरा होने पर, TruffleHog टर्मिनल पर एक रंगीन और विस्तृत रिपोर्ट प्रदर्शित करता है। हमारी केस स्टडी में, परिणाम कुछ इस तरह दिखाई देते हैं:

🐷 Git Secret Found 🐷
Detector Type: AWS
Decoder Type: PLAIN
RAW: AKIAIOSFODNN7EXAMPLE
File: config/aws_config.py
Commit: 4a2b8c9d1e... (Added AWS connection)

🐷 Git Secret Found 🐷
Detector Type: SendGrid
Decoder Type: PLAIN
RAW: SG.yX9...example_key
File: services/email_helper.py
Commit: 2f8e1a3b4c... (Initial setup for mail server)

विश्लेषण: TruffleHog ने न केवल वर्तमान कोड को स्कैन किया, बल्कि इतिहास के उन कमिट्स (Commit 4a2b8c9d1e और 2f8e1a3b4c) को भी ढूंढ निकाला जिन्हें डेवलपर ने बाद में डिलीट कर दिया था। इसने स्पष्ट रूप से दिखाया कि AWS Access Key ID और SendGrid API Key अभी भी गिट हिस्ट्री में मौजूद हैं।

संकट प्रबंधन: लीक हुए क्रेडेंशियल्स को कैसे सुरक्षित करें?

एक बार जब आपको पता चल जाता है कि क्रेडेंशियल्स लीक हो गए हैं, तो केवल कोड से फ़ाइल को हटाना पर्याप्त नहीं है। आपको निम्नलिखित सुधारात्मक कदम उठाने होंगे:

1. क्रेडेंशियल्स को तुरंत रिवोक (Revoke/Rotate) करें

यह सबसे महत्वपूर्ण कदम है। मान लें कि लीक हुई कीज पहले से ही हैकर्स के हाथ लग चुकी हैं।

  • AWS: AWS कंसोल में जाएं, लीक हुई Access Key को 'Inactive' करें और फिर उसे 'Delete' कर दें। एक नई की (Key) जनरेट करें।
  • SendGrid: SendGrid डैशबोर्ड पर जाकर पुरानी API Key को तुरंत डिलीट करें।

2. Git हिस्ट्री से संवेदनशील डेटा को पूरी तरह मिटाना

यदि आप चाहते हैं कि आपकी रिपोजिटरी साफ रहे और कोई भी पुरानी हिस्ट्री से इसे न निकाल सके, तो आपको BFG Repo-Cleaner या git-filter-repo टूल का उपयोग करना चाहिए।

उदाहरण के लिए, git-filter-repo का उपयोग करके किसी विशिष्ट फ़ाइल को पूरे इतिहास से हटाने की कमांड:

git filter-repo --path config/aws_config.py --invert-paths

चेतावनी: यह कमांड आपके गिट इतिहास को बदल देती है, इसलिए इसका उपयोग करने से पहले अपनी टीम को सूचित करें और कोड का बैकअप लें।

3. भविष्य के लिए सुरक्षा चक्र (Pre-commit Hooks) स्थापित करना

भविष्य में ऐसी गलतियों को रोकने के लिए, डेवलपर्स को स्थानीय स्तर पर 'pre-commit' हुक्स का उपयोग करना चाहिए। 'Talisman' या खुद 'TruffleHog' का प्री-कमिट हुक सेट किया जा सकता है। यह हुक कोड को GitHub पर पुश होने से पहले ही रोक देगा यदि उसमें कोई संवेदनशील पासवर्ड या की होगी।

निष्कर्ष

गिटहब पर क्रेडेंशियल लीक होना आज के समय की सबसे आम और खतरनाक सुरक्षा चूकों में से एक है। इस केस स्टडी से हमने सीखा कि कैसे एक साधारण टूल 'TruffleHog' का उपयोग करके हम अपनी या अपनी कंपनी की रिपोजिटरी को सुरक्षित कर सकते हैं। सुरक्षा केवल कोड लिखने में नहीं, बल्कि यह सुनिश्चित करने में भी है कि कोड के साथ कोई भी गुप्त दरवाजा (Backdoor) खुला न रह जाए।

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

Q1. क्या TruffleHog केवल GitHub को स्कैन कर सकता है?

नहीं, TruffleHog स्थानीय गिट डायरेक्टरी (Local Git Directories), GitLab, S3 Buckets, Docker images, और यहां तक कि सामान्य फाइलों को भी स्कैन कर सकता है।

Q2. क्या गिटहब पर कमिट डिलीट करने से सीक्रेट्स सुरक्षित हो जाते हैं?

बिल्कुल नहीं। गिटहब पर साधारण 'delete' या नया कमिट करने से पुरानी हिस्ट्री नहीं मिटती। कोई भी व्यक्ति रिपोजिटरी को क्लोन करके पुरानी कमिट हिस्ट्री में जाकर डिलीट किए गए कोड को देख सकता है।

Q3. लीक हुए क्रेडेंशियल्स को सुरक्षित करने का सबसे सही तरीका क्या है?

सबसे सही और सुरक्षित तरीका यह है कि लीक हुई API Key को तुरंत निष्क्रिय (Revoke) कर दिया जाए और नई की (Key) बनाई जाए। इसके बाद कोड में क्रेडेंशियल्स को हार्डकोड करने के बजाय 'Environment Variables' का उपयोग करें।

Q4. क्या TruffleHog का उपयोग फ्री में किया जा सकता है?

हाँ, TruffleHog एक ओपन-सोर्स टूल है जो पूरी तरह से मुफ्त है। इसका एक कमर्शियल वर्जन (TruffleHog Enterprise) भी आता है जो बड़े संगठनों के लिए अतिरिक्त फीचर्स प्रदान करता है।

Post a Comment

0 Comments