
वेब-आधारित स्रोत कोड भेद्यता स्कैनर

Raptor एक वेब-आधारित (वेब-सेवा + UI) गिटहब-केंद्रित स्रोत-भेद्यता स्कैनर है, अर्थात यह सिर्फ गिटहब रेपो URL से किसी रिपॉजिटरी को स्कैन करता है। आप वेबहुक सेटअप कर सकते हैं ताकि हर बार जब आप कमिट करें या पुल रिक्वेस्ट मर्ज करें तो स्वचालित स्कैन सुनिश्चित हो सके। स्कैन अतुल्यकालिक रूप से किया जाता है और परिणाम केवल उसी उपयोगकर्ता के लिए उपलब्ध होते हैं जिसने स्कैन शुरू किया था।
Raptor की कुछ विशेषताएं:
यह टूल समुदाय और स्टार्ट-अप कंपनियों को सुरक्षित-कोडिंग पर जोर देने में मदद करने का एक प्रयास है। यह टूल वाणिज्यिक विकल्पों की सुविधाओं/गुणवत्ता से मेल खा सकता है या नहीं, कुछ भी गारंटी नहीं है और आपको चेतावनी दी गई है। यह टूल सुरक्षा कोड-समीक्षकों और/या सुरक्षित-कोडिंग अनुभव वाले डेवलपर्स द्वारा कोड-ऑडिट या पीयर रिव्यू के दौरान भेद्यता प्रवेश-बिंदु खोजने के लिए लक्षित है। कृपया टूल के आउटपुट पर आँख मूंदकर भरोसा न करें। यह सबसे अच्छा उपयोग तब होता है जब आप Raptor को अपने CI/CD पाइपलाइन में प्लग करते हैं।
0.1 बीटा
एकीकृत प्लगइन्स:
नोट: निम्नलिखित में से अधिकांश टूल्स/मॉड्यूल्स/लिब्स को फ्रेमवर्क में अच्छी तरह से एकीकृत करने के लिए भारी संशोधित किया गया है।
उपलब्ध रूलपैक:
स्थापना वीडियो: YouTube Install
$ wget https://github.com/dpnishant/raptor/archive/master.zip -O raptor.zip
$ unzip raptor.zip
$ cd raptor-master
$ sudo sh install.sh
स्थापना वीडियो: YouTube Usage
cd raptor-master
sudo sh start.sh #बैकएंड वेब-सेवा शुरू करता है
अब अपने ब्राउज़र को Raptor Home (http://localhost/raptor/) पर पॉइंट करें
जिस गिटहब सर्वर से आप जुड़े हैं, उस पर पंजीकृत उपयोगकर्ता नाम और कोई भी पासवर्ड (लेकिन स्कैन इतिहास देखने के लिए उपयोगकर्ता नाम याद रखें) से लॉगिन करें।
उदाहरण के लिए:
यदि आप https://github.com पर foobar के रूप में पंजीकृत हैं, तो https://github.com पर रेपो स्कैन करते समय वही उपयोगकर्ता नाम उपयोग करें। हालांकि, यदि आप अपने व्यक्तिगत/कॉरपोरेट गिटहब (जैसे https://github.corp.company.com) पर foobar_corp के रूप में पंजीकृत हैं, तो वही उपयोगकर्ता नाम उपयोग करें यदि आप https://github.corp.company.com पर रेपो स्कैन करने का इरादा रखते हैं।
हालांकि, अभी के लिए पासवर्ड कुछ भी हो सकता है, क्योंकि हमने डेवलपमेंट संस्करण में डेटाबेस नहीं लागू किया है।
आप अपनी विशिष्ट आवश्यकता(ओं) के लिए कोई भी नया/कस्टम नियम जोड़ने के लिए बंडल किए गए हल्के, GUI क्लाइंट-साइड नियम संपादक का उपयोग कर सकते हैं, या किसी अन्य सादे-पाठ संपादक का उपयोग कर सकते हैं, क्योंकि रूलपैक फ़ाइलें केवल सरल JSON संरचनाएं हैं। 'backend/rules' में स्थित नियमों को खोलने के लिए अपने ब्राउज़र का उपयोग करें। जब आप कर लें, तो अपनी नई/संशोधित नियम फ़ाइल को उसी निर्देशिका अर्थात 'backend/rules' में सहेजें। अब आपको बस एक मामूली संपादन करना है, यहाँ: Init Script। अपने नए रूलपैक फ़ाइलनाम को बिना '.rulepack' एक्सटेंशन के इस ऐरे में जोड़ें और बैकएंड सर्वर को पुनरारंभ करें। आप तैयार हैं! 👍
आप इसे यहाँ एक्सेस कर सकते हैं: Rules Editor (http://localhost/raptor/editrules.php)
स्कैन होने से बाहर करने के लिए एक फ़ाइल नाम या निर्देशिका नाम पैटर्न जोड़ें। यह किसी भी ज्ञात फ़ाइल जैसे jquery.min.js आदि या पूरी /test/ निर्देशिका को अनदेखा करने के लिए उपयोगी है। उदाहरण के लिए नीचे दी गई नमूना सामग्री में, jquery का अर्थ है jquery और यह केस-सेंसिटिव है, इसलिए सावधान रहें। plugins अनुभाग में, प्लगइन का name नियमपैक फ़ाइल का नाम है जो rules/ निर्देशिका के अंतर्गत उपलब्ध है, बिना ".rulepack" एक्सटेंशन के। issue फ़ील्ड नियमपैक फ़ाइलों के प्रत्येक नियम में उल्लिखित मुद्दे का आईडी है: उदाहरण #1, उदाहरण #2। match_type फ़ील्ड का मान regex या start या end हो सकता है। value फ़ील्ड वह सटीक स्ट्रिंग है जिसे मिलान किया जाना है, यदि match_type या है। यदि फ़ील्ड है तो में कच्चा RegEx पैटर्न होना चाहिए जिसे JSON सिंटैक्स एस्केपिंग से संबंधित समस्याओं से बचने के लिए Base64 एन्कोड किया जाना चाहिए। एक रेगुलर एक्सप्रेशन आधारित मिलान है, स्निपेट की शुरुआत में मिलान करेगा और स्निपेट के अंत में मिलान करेगा।
यह कैसे काम करता है, जब स्कैनर मुद्दों की स्कैनिंग समाप्त कर लेता है, तो यह सभी पाए गए मुद्दों पर पुनरावृति करेगा और उन मुद्दों को हटा देगा जो ignore_list.rulepack फ़ाइल में उल्लिखित प्रत्येक प्लगइन के पैटर्न (मिलान के प्रकार के आधार पर) से मेल खाते हैं।
(नीचे नमूना सामग्री)
{
"files": [
"/.",
"bootstrap",
"jquery",
"uglify",
"knockout",
"angular",
"backbone",
"ember",
"yui",
"mocha",
"express",
"yql",
"dataTables"
],
"directories": [
"/node_modules/",
"/test/"
],
"plugins": [
{
"name": "common", <----- प्लगइन का नाम
"issue": "HARD_CRED1", <----- मुद्दे का आईडी
"patterns": [
{
"match_type": "start", <----- मिलान प्रकार "regex", "start" या "end" हो सकता है
"value": "foreach" <----- मिलान करने के लिए वास्तविक स्ट्रिंग। यदि match_type "regex" है तो इस पैटर्न को Base64 एन्कोड करें
},
{
"match_type": "start",
"value": "for"
},
{
"match_type": "start",
"value": "elseif"
}
]
}
]
}
आप या तो पूरी तरह से एक नया रूलपैक बना सकते हैं और इसे स्कैनर में जोड़ सकते हैं, या आप अपना स्वयं का स्कैनर प्लगइन लिख सकते हैं और इसे फ्रेमवर्क में जोड़ सकते हैं। एक नमूना रूलपैक फ़ाइल एक बहुत ही सरल JSON संरचना है।
{
"plugin_type": "plugin_name", <-- इसे एक नाम दें (कोई भी स्ट्रिंग)
"file_types": [
".java", <-- जितनी चाहें उतनी फ़ाइल एक्सटेंशन जोड़ें, जिन्हें स्कैनर स्कैन करते समय चुनना चाहिए
".js"
],
"rules": [
{
"id": "HARD_CRED1", <-- एक अद्वितीय IssueID, रचनात्मक बनें।
"severity": "High", <-- यह High, Medium या Low हो सकता है। यह UI में ग्राफ़ में तदनुसार दिखाई देगा।
"title": "Title of the Issue", <-- मुद्दे का शीर्षक।
"description": "This text here shall be reflected in the UI as description of the issue.", <-- मुद्दे का विवरण, यह वैकल्पिक है।
"remediation": "The text here shall be reflected in the UI as the steps to remediate the issue", <-- मुद्दे को ठीक करने के चरण, यह वैकल्पिक है।
"link": "Any URL that has more resources about the issue.", <-- मुद्दे का URL। यह वैकल्पिक है
"example_insecure": "Put the insecure version of the code snippet for learning purpose.", <-- यह वैकल्पिक है
"example_secure": "Put the secure version of the code snippet for learning purpose.", <-- यह वैकल्पिक है
"platform_version": "all", <-- इसे वैसे ही छोड़ दें
"enabled": "true", <-- यह मान स्कैन के दौरान नियम को सक्षम या अक्षम करता है। यह "true" या "false" हो सकता है।
"logic": "Explain the logic behind this rule for future updation or customization", <-- यह वैकल्पिक है
"signature": "base64encode(regexp)" <-- अपने पैटर्न का रेगुलर एक्सप्रेशन लिखें और फिर इसे यहाँ रखने के लिए base64encode करें।
}
]
}
यदि आप अधिक नियंत्रण चाहते हैं या अपने स्कैनर में सरल RegExp खोज के बजाय अधिक बुद्धिमत्ता जोड़ना चाहते हैं, तो आप इस तरह एक त्वरित स्कैनर प्लगइन लिख सकते हैं और स्क्रिप्ट को यहाँ एकीकृत कर सकते हैं और स्क्रिप्ट का नाम यहाँ जोड़ सकते हैं। बस इतना ही। यह किसी भी व्यक्ति के लिए बुनियादी Python स्क्रिप्टिंग कौशल के साथ काफी सीधा है।
आप Raptor का उपयोग अपने संगठन के निजी और सार्वजनिक दोनों GitHub उदाहरणों को स्कैन करने के लिए कर सकते हैं, यहाँ और यहाँ सही सर्वर एंडपॉइंट निर्दिष्ट करके।











योगदान देना चाहते हैं? बढ़िया! यदि आपके पास कोई विचार है तो मुझसे संपर्क करें, या फिर फोर्क करें और सुधार करने में संकोच न करें। 😊
GNU GPL v2.0
Free Software, Hell Yeah!
startendmatch_typeregexvalueregexstartend