🔍 GitHub CVE Scanner - उपयोग गाइड
React और Next.js प्रोजेक्ट्स में ज्ञात कमजोरियों के लिए GitHub रिपॉजिटरीज़ को स्कैन करने की स्क्रिप्ट।
📋 पाई गई कमजोरियाँ
स्कैनर निम्नलिखित CVEs की जाँच करता है:
🚀 उपयोग कैसे करें
आवश्यक शर्तें
- एक आधुनिक वेब ब्राउज़र (Chrome, Firefox, Edge, आदि)
- GitHub तक पहुंच (वैकल्पिक: निजी रिपॉजिटरी के लिए Personal Access Token)
चरण-दर-चरण
1. ब्राउज़र कंसोल खोलें
- कोई भी GitHub पेज खोलें (उदा:
https://github.com)
- DevTools खोलें:
- Chrome/Edge:
F12 या Ctrl+Shift+I (Windows) / Cmd+Option+I (Mac)
- Firefox:
F12 या Ctrl+Shift+K (Windows) / Cmd+Option+K (Mac)
- Console टैब पर जाएं
2. स्क्रिप्ट को कॉपी और चलाएं
main.js फ़ाइल खोलें
- फ़ाइल की सारी सामग्री कॉपी करें
- इसे ब्राउज़र कंसोल में पेस्ट करें
- चलाने के लिए
Enter दबाएं
3. स्कैन कॉन्फ़िगर करें
स्क्रिप्ट कई इंटरैक्टिव प्रश्न पूछेगी:
3.1. प्रमाणीकरण (पहला प्रश्न)
🔐 Scan private repos too?
OK = Enter PAT
Cancel = Public only
- OK: आपको GitHub Personal Access Token (PAT) दर्ज करने के लिए कहा जाएगा
- निजी रिपॉजिटरी स्कैन करने की अनुमति देता है
- संगठनों तक पहुंच के लिए आवश्यक
- Cancel: केवल सार्वजनिक रिपॉजिटरी स्कैन की जाएंगी
PAT कैसे बनाएं:
- यहां जाएं:
https://github.com/settings/tokens
- "Generate new token" → "Generate new token (classic)" पर क्लिक करें
- एक वर्णनात्मक नाम दें
repo स्कोप चुनें (रिपॉजिटरी तक पूर्ण पहुंच)
- "Generate token" पर क्लिक करें
- टोकन तुरंत कॉपी करें (यह दोबारा नहीं दिखाया जाएगा)
3.2. स्कैन का दायरा (यदि प्रमाणित है)
🔍 What do you want to scan?
OK = Organizations
Cancel = User Profile
- OK: संगठन स्कैन करें
- Cancel: केवल उपयोगकर्ता प्रोफ़ाइल स्कैन करें
3.3. संगठनों का चयन (यदि Organizations चुना है)
🏢 Scan all organizations?
OK = All organizations
Cancel = Single organization
विकल्प A - सभी संगठन (OK):
- स्क्रिप्ट स्वचालित रूप से प्रमाणित उपयोगकर्ता के सभी संगठनों को खोजेगी
- सभी संगठनों के सभी रिपॉजिटरी स्कैन करेगी
विकल्प B - एक विशिष्ट संगठन (Cancel):
3.4. उपयोगकर्ता प्रोफ़ाइल (यदि प्रमाणित नहीं है या Profile चुना है)
- यदि आप GitHub प्रोफ़ाइल पेज पर हैं, तो स्क्रिप्ट स्वचालित रूप से पता लगाएगी
- अन्यथा, आपसे पूछा जाएगा:
Enter GitHub username:
📊 विशेषताएँ
✨ शाखाओं द्वारा जाँच
स्क्रिप्ट प्रत्येक रिपॉजिटरी की सभी शाखाओं की जाँच करती है, न कि केवल डिफ़ॉल्ट शाखा की। यह सुनिश्चित करता है कि विकास, स्टेजिंग या अन्य सक्रिय शाखाओं में कमजोरियाँ पकड़ी जाएँ।
🏢 संगठनों के लिए समर्थन
- GitHub संगठनों के रिपॉजिटरी स्कैन करता है
- सभी संगठनों या किसी एक विशिष्ट को स्कैन करने का विकल्प
- संगठन का URL या नाम दर्ज करने का समर्थन
🔒 निजी रिपॉजिटरी तक पहुंच
मान्य Personal Access Token के साथ, स्क्रिप्ट यह कर सकती है:
- निजी रिपॉजिटरी तक पहुंचें
- निजी संगठनों को स्कैन करें
- निजी रिपॉजिटरी की शाखाओं की जाँच करें
📈 परिणाम
निष्पादन के बाद, स्क्रिप्ट प्रदर्शित करेगी:
परिणाम तालिका
कंसोल में एक तालिका दिखाती है:
- Repo: रिपॉजिटरी का नाम
- Branch: जाँची गई शाखा का नाम
- Next: Next.js का संस्करण (यदि मौजूद है)
- React: React का संस्करण (यदि मौजूद है)
- ReactDOM: react-dom का संस्करण (यदि मौजूद है)
- RSCWebpack: react-server-dom-webpack का संस्करण (यदि मौजूद है)
- RSCParcel: react-server-dom-parcel का संस्करण (यदि मौजूद है)
- RSCTurbopack: react-server-dom-turbopack का संस्करण (यदि मौजूद है)
- Status: कमजोरी की स्थिति
✅ Safe: कोई कमजोरी नहीं पाई गई
⚠️ CVE-XXXX-XXXXX: कमजोरी पाई गई
सारांश
📊 Summary:
Total repos: 15
Branches scanned: 23
With package.json: 20
Skipped: 3 (no package.json)
⚠️ 5 vulnerable repo(s) found!
या
✅ No vulnerabilities found!
⚙️ तकनीकी कॉन्फ़िगरेशन
- API अनुरोधों के बीच विलंब: 200ms (रेट लिमिटिंग से बचने के लिए)
- स्कैन के बीच विलंब: 30ms
- प्रति पृष्ठ परिणाम: 100 आइटम
- निजी रिपॉजिटरी के लिए समर्थन: हाँ (PAT के साथ)
- शाखाओं की जाँच: प्रत्येक रिपॉजिटरी की सभी शाखाएँ
🔧 समस्या समाधान
त्रुटि: "Token invalid"
- जांचें कि टोकन सही ढंग से कॉपी किया गया है
- सुनिश्चित करें कि टोकन में
repo स्कोप है
- जांचें कि टोकन समाप्त नहीं हुआ है
त्रुटि: "No repositories found"
- जांचें कि उपयोगकर्ता/संगठन मौजूद है
- यदि संगठन स्कैन कर रहे हैं, तो जांचें कि आपके पास पहुंच है
- जांचें कि प्रोफ़ाइल/संगठन में रिपॉजिटरी हैं
त्रुटि: "No organizations found"
- जांचें कि आप एक मान्य टोकन से प्रमाणित हैं
- सुनिश्चित करें कि आप संगठनों के सदस्य हैं
- टोकन के पास संगठनों तक पहुंचने की अनुमति होनी चाहिए
स्कैन बहुत धीमा
- स्क्रिप्ट रेट लिमिटिंग से बचने के लिए जानबूझकर विलंब करती है
- कई शाखाओं वाली रिपॉजिटरी में अधिक समय लगेगा
- कई रिपॉजिटरी वाले संगठनों में अधिक समय लगेगा
📝 महत्वपूर्ण नोट्स
- रेट लिमिटिंग: स्क्रिप्ट स्वचालित विलंब के साथ GitHub API सीमाओं का पालन करती है
- गोपनीयता: टोकन केवल ब्राउज़र में स्थानीय रूप से उपयोग किया जाता है, बाहरी सर्वरों को नहीं भेजा जाता
- सटीकता: स्कैनर केवल रिपॉजिटरी की जड़ में
package.json की जाँच करता है
- शाखाएँ: सभी शाखाओं की जाँच की जाती है, लेकिन केवल
package.json वाली शाखाओं की रिपोर्ट की जाती है
- संस्करण: स्कैनर CVE परिभाषाओं के आधार पर कमजोर संस्करणों का पता लगाता है
🛡️ सुरक्षा
- स्क्रिप्ट पूरी तरह से ब्राउज़र में चलती है (क्लाइंट-साइड)
- कोई डेटा बाहरी सर्वरों को नहीं भेजा जाता
- Personal Access Token केवल GitHub API अनुरोधों के लिए उपयोग किया जाता है
- न्यूनतम आवश्यक स्कोप वाले टोकन का उपयोग करने की अनुशंसा की जाती है
📄 लाइसेंस
MIT License
🔄 संस्करण
3.0.0
React और Next.js प्रोजेक्ट्स में सुरक्षा कमजोरियों का पता लगाने के लिए विकसित