
brakeman v8.0.6
ماسح ثغرات أمنية للتحليل الثابت لتطبيقات Ruby on Rails
Brakeman
Brakeman هي أداة تحليل ثابتة تتحقق من تطبيقات Ruby on Rails بحثًا عن ثغرات أمنية.
التثبيت
باستخدام RubyGems:
gem install brakeman
باستخدام Bundler:
group :development do
gem 'brakeman', require: false
end
باستخدام Docker:
docker pull presidentbeef/brakeman
باستخدام Docker لبناء من المصدر:
git clone https://github.com/presidentbeef/brakeman.git
cd brakeman
docker build . -t brakeman
الاستخدام
التشغيل محليًا
من الدليل الجذري لتطبيق Rails:
brakeman
خارج جذر Rails:
brakeman /path/to/rails/application
التشغيل باستخدام Docker
من الدليل الجذري لتطبيق Rails:
docker run -v "$(pwd)":/code presidentbeef/brakeman
مع ألوان أجمل قليلاً:
docker run -v "$(pwd)":/code presidentbeef/brakeman --color
لتقرير HTML:
docker run -v "$(pwd)":/code presidentbeef/brakeman -o brakeman_results.html
خارج جذر Rails (لاحظ أن ملف الإخراج نسبي بالنسبة إلى path/to/rails/application):
docker run -v 'path/to/rails/application':/code presidentbeef/brakeman -o brakeman_results.html
التوافق
يجب أن يعمل Brakeman مع أي إصدار من Rails من 2.3.x إلى 8.x.
يمكن لـ Brakeman تحليل الكود المكتوب بتركيب Ruby 2.0 والإصدارات الأحدث، ولكنه يتطلب على الأقل Ruby 3.2.0 للتشغيل.
الخيارات الأساسية
للحصول على قائمة كاملة بالخيارات، استخدم brakeman --help أو راجع ملف OPTIONS.md.
لتحديد ملف إخراج للنتائج:
brakeman -o output_file
يتم تحديد تنسيق الإخراج من خلال امتداد الملف أو باستخدام الخيار -f. الخيارات الحالية هي: text، html، tabs، json، junit، markdown، csv، codeclimate، github، sarif، و sonar.
يمكن تحديد ملفات إخراج متعددة:
brakeman -o output.html -o output.json
للإخراج إلى ملف وإلى وحدة التحكم في نفس الوقت، مع الألوان:
brakeman --color -o /dev/stdout -o output.json
لقمع التحذيرات المعلوماتية وإخراج التقرير فقط:
brakeman -q
لاحظ أن جميع مخرجات Brakeman باستثناء التقارير تُرسل إلى stderr، مما يسهل توجيه stdout إلى ملف والحصول على التقرير فقط.
لرؤية جميع أنواع معلومات التصحيح:
brakeman -d
يمكن تخطي فحوصات محددة، إذا رغبت. يجب أن يكون الاسم بالحالة الصحيحة. على سبيل المثال، لتخطي البحث عن المسارات الافتراضية (DefaultRoutes):
brakeman -x DefaultRoutes
يجب فصل الفحوصات المتعددة بفاصلة:
brakeman -x DefaultRoutes,Redirect
للقيام بالعكس وتشغيل مجموعة معينة فقط من الاختبارات:
brakeman -t SQL,ValidationRegex
إذا كان Brakaman يعمل ببطء، جرب:
brakeman --faster
سيؤدي ذلك إلى تعطيل بعض الميزات، ولكن من المحتمل أن يكون أسرع بكثير (حاليًا هو نفسه --skip-libs --no-branching). تحذير: قد يتسبب ذلك في فقدان Brakeman لبعض الثغرات الأمنية.
بشكل افتراضي، سيعيد Brakeman رمز خروج غير صفري إذا تم العثور على أي تحذيرات أمنية أو تمت مواجهة أخطاء في المسح. لتعطيل هذا:
brakeman --no-exit-on-warn --no-exit-on-error
لتخطي ملفات أو أدلة معينة قد يواجه Brakeman صعوبة في تحليلها، استخدم:
brakeman --skip-files file1,/path1/,path2/
لمقارنة نتائج مسح مع مسح سابق، استخدم خيار إخراج JSON ثم:
brakeman --compare old_report.json
سيؤدي ذلك إلى إخراج JSON بقائمتين: واحدة للتحذيرات التي تم إصلاحها وأخرى للتحذيرات الجديدة.
سيتجاهل Brakeman التحذيرات إذا تم تكوينه للقيام بذلك. بشكل افتراضي، يبحث عن ملف تكوين في config/brakeman.ignore. لإنشاء هذا الملف وإدارته، استخدم:
brakeman -I
إذا كنت تريد رؤية التحذيرات التي تجاهلتها مؤقتًا دون التأثير على رمز الخروج، استخدم:
brakeman --show-ignored
معلومات التحذير
راجع warning_types للحصول على مزيد من المعلومات حول التحذيرات التي يبلغ عنها هذا الأداة.
سياق التحذير
يوفر تنسيق إخراج HTML مقتطفًا من الكود المصدري للتطبيق الأصلي حيث تم إطلاق تحذير. نظرًا للمعالجة التي تتم أثناء البحث عن الثغرات الأمنية، قد لا يشبه الكود المصدري التحذير المبلغ عنه وقد تكون أرقام الأسطر المبلغ عنها غير دقيقة قليلاً. ومع ذلك، لا يزال السياق يوفر نظرة سريعة على الكود الذي أثار التحذير.
مستويات الثقة
يعين Brakeman مستوى ثقة لكل تحذير. يوفر هذا تقديرًا تقريبيًا لمدى يقين الأداة بأن تحذيرًا معينًا يمثل مشكلة بالفعل. بطبيعة الحال، لا ينبغي اعتبار هذه التصنيفات حقيقة مطلقة.
هناك ثلاثة مستويات للثقة:
- عالي - إما أن هذا تحذير بسيط (قيمة منطقية) أو من المحتمل جدًا استخدام مدخلات المستخدم بطرق غير آمنة.
- متوسط - يشير هذا عمومًا إلى استخدام غير آمن لمتغير، ولكن قد يكون المتغير أو لا يكون مدخل مستخدم.
- ضعيف - يعني عادةً استخدام مدخلات المستخدم بشكل غير مباشر بطريقة قد تكون غير آمنة.
للحصول فقط على تحذيرات أعلى من مستوى ثقة معين:
brakeman -w3
يأخذ المفتاح -w رقمًا من 1 إلى 3، حيث 1 منخفض (جميع التحذيرات) و 3 عالي (فقط التحذيرات ذات الثقة الأعلى).
ملفات التكوين
يمكن تخزين خيارات Brakeman وقراءتها من ملفات YAML.
لتبسيط عملية كتابة ملف تكوين، سيقوم الخيار -C بإخراج الخيارات المحددة حاليًا:
$ brakeman -C --skip-files plugins/
---
:skip_files:
- plugins/
الخيارات التي يتم تمريرها عبر سطر الأوامر لها أولوية على ملفات التكوين.
مواقع التكوين الافتراضية هي ./config/brakeman.yml و ~/.brakeman/config.yml و /etc/brakeman/config.yml
يمكن استخدام الخيار -c لتحديد ملف تكوين لاستخدامه.
التكامل المستمر
هناك إضافة متاحة لـ Jenkins/Hudson.
لمزيد من الاختبارات المستمرة، جرب إضافة Guard.
هناك بعض إجراءات GitHub متاحة.
البناء
git clone git://github.com/presidentbeef/brakeman.git
cd brakeman
gem build brakeman.gemspec
gem install brakeman*.gem
من يستخدم Brakeman؟
الموقع الرئيسي/الأخبار
الموقع: http://brakemanscanner.org/
تويتر: https://twitter.com/brakeman
الدردشة: https://gitter.im/presidentbeef/brakeman
الترخيص
Brakeman مجاني للاستخدام غير التجاري.
راجع COPYING للتفاصيل.