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 Root:
brakeman /path/to/rails/application
من دليل جذر طلب 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
خارج جذر القضبان (لاحظ أن ملف الإخراج يتعلق بالمسار/إلى/القضبان/التطبيق):
docker run -v 'path/to/rails/application':/code presidentbeef/brakeman -o brakeman_results.html
يجب أن يعمل Brakeman مع أي إصدار من Rails من 2.3.x إلى 7.x.
يمكن لـ Brakeman تحليل الكود المكتوب باستخدام بناء جملة Ruby 2.0 وأحدث ، ولكنه يتطلب على الأقل Ruby 3.0.0 لتشغيله.
للحصول على قائمة كاملة بالخيارات ، استخدم brakeman --help أو انظر ملف Options.md.
لتحديد ملف الإخراج للنتائج:
brakeman -o output_file
يتم تحديد تنسيق الإخراج بواسطة تمديد الملف أو باستخدام خيار -f . الخيارات الحالية هي: text و html و tabs و json و junit و markdown و csv و codeclimate و 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
إذا كان Brakeman يعمل بطيئًا بعض الشيء ، فحاول
brakeman --faster
سيؤدي ذلك إلى تعطيل بعض الميزات ، ولكن من المحتمل أن يكون أسرع بكثير (حاليًا هو نفسه- --skip-libs --no-branching ). تحذير : قد يتسبب هذا في تفويت براكمان بعض نقاط الضعف.
افتراضيًا ، ستعيد 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 /etc/brakeman/config.yml
يمكن استخدام خيار -c لتحديد ملف التكوين للاستخدام.
هناك مكون إضافي متاح لجينكينز/هدسون.
لمزيد من الاختبارات المستمرة ، جرب البرنامج المساعد للحراسة.
هناك زوجين من الإجراءات github المتاحة.
git clone git://github.com/presidentbeef/brakeman.git
cd brakeman
gem build brakeman.gemspec
gem install brakeman*.gem
.. وأكثر!
الموقع الإلكتروني: http://brakemanscanner.org/
Twitter: https://twitter.com/brakeman
الدردشة: https://gitter.im/presidentbeef/brakeman
Brakeman مجاني للاستخدام غير التجاري.
انظر النسخ للحصول على التفاصيل.