
ماسح ثغرات شفرة المصدر القائم على الويب

Raptor هو ماسح ثغرات برمجي متمركز حول GitHub يعمل عبر الويب (خدمة ويب + واجهة مستخدم)، أي يقوم بمسح مستودع باستخدام رابط GitHub الخاص به فقط. يمكنك إعداد webhooks لضمان إجراء مسح تلقائي في كل مرة ترتكب فيها تغييرات أو تدمج طلب سحب. يتم المسح بشكل غير متزامن وتكون النتائج متاحة فقط للمستخدم الذي بدأ المسح.
بعض ميزات Raptor:
هذه الأداة هي محاولة لمساعدة المجتمع والشركات الناشئة على التركيز على البرمجة الآمنة. قد لا تتطابق هذه الأداة مع ميزات/جودة البدائل التجارية، ولا يوجد ضمان، وقد تم تحذيرك. تستهدف هذه الأداة استخدامها من قبل مراجعي أمان الكود و/أو المطورين ذوي الخبرة في البرمجة الآمنة للعثور على نقاط دخول الثغرات أثناء مراجعات الكود أو مراجعات الأقران. من فضلك لا تثق بمخرجات الأداة بشكل أعمى. من الأفضل استخدامها إذا قمت بربط Raptor بخط أنابيب CI/CD الخاص بك.
0.1 beta
الإضافات المدمجة:
ملاحظة: تم تعديل معظم الأدوات/الوحدات/المكتبات التالية بشكل كبير لضمان التكامل الجيد في الإطار.
حزم القواعد المتاحة:
فيديو التثبيت: 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/)
قم بتسجيل الدخول باستخدام اسم المستخدم المسجل على خادم GitHub المقابل الذي تتصل به وأي كلمة مرور (لكن تذكر اسم المستخدم لعرض سجل المسح).
على سبيل المثال:
إذا كنت مسجلاً باسم foobar على https://github.com، فاستخدم نفس اسم المستخدم عند مسح المستودعات على https://github.com. ومع ذلك، إذا كنت مسجلاً باسم foobar_corp على GitHub الشخصي/الخاص بمؤسستك (على سبيل المثال https://github.corp.company.com) فاستخدم نفس اسم المستخدم إذا كنت تنوي مسح المستودعات على https://github.corp.company.com
ومع ذلك، في الوقت الحالي يمكن أن تكون كلمة المرور أي شيء، لأننا لم نقم بتنفيذ قاعدة بيانات في إصدار التطوير.
يمكنك استخدام محرر القواعد المدمج خفيف الوزن من جانب العميل لإضافة أي قاعدة/قواعد جديدة أو مخصصة لمتطلباتك الخاصة أو أي محرر نصوص عادي لأن ملفات حزمة القواعد هي مجرد هياكل JSON بسيطة. استخدم متصفحك لفتح القواعد الموجودة في 'backend/rules'. عند الانتهاء، احفظ ملف القواعد الجديد/المعدل في نفس الدليل أي 'backend/rules'. كل ما عليك فعله الآن هو تعديل بسيط هنا: Init Script. أضف اسم ملف حزمة القواعد الجديد إلى هذه المصفوفة دون امتداد '.rulepack' وأعد تشغيل الخادم الخلفي. لقد أصبح كل شيء جاهزًا! 👍
يمكنك الوصول إليه هنا: Rules Editor (http://localhost/raptor/editrules.php)
أضف نمط اسم ملف أو دليل لاستبعاده من المسح. هذا مفيد لتجاهل أي ملفات معروفة مثل jquery.min.js إلخ أو على سبيل المثال دليل /test/ بأكمله. على سبيل المثال في المحتوى النموذجي أدناه، jquery يعني jquery وهو حساس لحالة الأحرف، لذا كن حذرًا. في قسم plugins، name الخاص بالإضافة هو اسم ملف حزمة القواعد بدون امتداد ".rulepack" كما هو متاح تحت دليل rules/. حقل issue هو معرف المشكلة المذكور في كل قاعدة من ملفات حزمة القواعد: مثال #1، مثال #2. قيمة حقل match_type يمكن أن تكون إما regex أو start أو end. حقل value هو السلسلة الدقيقة المطلوب مطابقتها في حالة كانت match_type هي start أو . في حالة كان حقل هو ، يجب أن يحتوي على نمط RegEx الخام الذي يحتاج إلى ترميز Base64 لتجنب أي مشكلات تتعلق بالتهرب من بناء جملة JSON. هي مطابقة تعتمد على التعبير العادي، ستطابق بداية المقطع و ستطابق نهاية المقطع.
الطريقة التي يعمل بها هي أنه عندما ينتهي الماسح الضوئي من مسح المشكلات، سيتكرر عبر جميع المشكلات التي تم العثور عليها ويزيل تلك التي تطابق الأنماط (بناءً على نوع المطابقة) لكل إضافة مذكورة في ملف 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" <----- السلسلة الفعلية للمطابقة. قم بترميز Base64 لهذا النمط إذا كان match_type هو "regex"
},
{
"match_type": "start",
"value": "for"
},
{
"match_type": "start",
"value": "elseif"
}
]
}
]
}
يمكنك إما إنشاء حزمة قواعد جديدة تمامًا وإضافتها إلى الماسح الضوئي أو يمكنك كتابة إضافة الماسح الضوئي الخاصة بك وإضافتها إلى الإطار. ملف حزمة القواعد النموذجي هو بنية JSON بسيطة جدًا.
{
"plugin_type": "plugin_name", <-- أعطه اسمًا (أي سلسلة)
"file_types": [
".java", <-- أضف عددًا من امتدادات الملفات التي تريد أن يلتقطها الماسح أثناء المسح
".js"
],
"rules": [
{
"id": "HARD_CRED1", <-- معرف مشكلة فريد، كن مبدعًا.
"severity": "High", <-- يمكن أن يكون High أو Medium أو Low. سيظهر وفقًا لذلك في الرسوم البيانية في واجهة المستخدم.
"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.", <-- رابط المشكلة. هذا اختياري.
"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)" <-- اكتب التعبير العادي للنمط الخاص بك ثم قم بترميزه base64 وضعه هنا.
}
]
}
إذا كنت تريد تحكمًا أكبر أو إضافة ذكاء إضافي إلى الماسح الضوئي بدلاً من مجرد بحث RegExp بسيط، يمكنك كتابة إضافة ماسح سريعة مثل هذه ودمج البرنامج النصي هنا وإضافة اسم البرنامج النصي هنا. هذا كل شيء. هذا واضح جدًا لأي شخص لديه مهارات أساسية في برمجة Python.
يمكنك استخدام Raptor لمسح مثيلات GitHub العامة والخاصة لمؤسستك عن طريق تحديد نقاط النهاية الصحيحة للخادم هنا وهنا.











هل تريد المساهمة؟ رائع! تواصل معي إذا كانت لديك فكرة، أو لا تتردد في عمل fork وتحسين. 😊
GNU GPL v2.0
برمجيات حرة، نعم بكل فخر!
endmatch_typeregexvalueregexstartend