Sobelow هي أداة تحليل ثابت يركز على الأمن لإكسير وإطار Phoenix. بالنسبة للباحثين الأمنيين ، فهي أداة مفيدة للحصول على عرض سريع لنقاط المصالح. بالنسبة لمحاربي المشروع ، يمكن استخدامه لمنع إدخال عدد من نقاط الضعف الشائعة.
يكتشف Sobelow حاليًا بعض أنواع مشكلات الأمان التالية:
يتم وضع علامة على نقاط الضعف المحتملة بألوان مختلفة وفقًا للثقة في انعدام الأمن. الثقة العالية حمراء ، والثقة المتوسطة صفراء ، والثقة المنخفضة خضراء.
عادةً ما يتم وضع علامة "ثقة منخفضة" إذا بدا الأمر وكأن وظيفة يمكن استخدامها بشكل غير آمن ، ولكن لا يمكن تحديدها بشكل موثوق إذا كانت الوظيفة تقبل الإدخال الذي يقدمه المستخدم. أي إذا تم وضع علامة خضراء ، فقد يكون ذلك غير آمن بشكل خطير ، ولكنه سيتطلب التحقق اليدوي أكبر.
ملاحظة: هذا المشروع في تطور مستمر ، وسيتم وضع علامة على نقاط الضعف الإضافية مع مرور الوقت. إذا واجهت خطأ ، أو ترغب في طلب ميزات إضافية أو شيكات أمان ، فيرجى فتح مشكلة!
لاستخدام Sobelow ، يمكنك إضافته إلى تبعيات التطبيق الخاص بك.
def deps do
[
{ :sobelow , "~> 0.13" , only: [ :dev , :test ] , runtime: false }
]
endيمكنك أيضًا تثبيت Sobelow على مستوى العالم من خلال تنفيذ ما يلي من سطر الأوامر:
$ mix escript.install hex sobelow
للتثبيت من الفرع الرئيسي ، بدلاً من الإصدار الأخير ، يمكن استخدام الأمر التالي:
$ mix escript.install github nccgroup/sobelow
بعد التثبيت ، تتمثل أبسط طريقة لمسح مشروع Phoenix في تشغيل ما يلي من جذر المشروع:
$ mix sobelow
ملاحظة: يجب أن تكون أي وسيطات مسار مسارات مطلقة ، أو نسبة إلى جذر التطبيق.
--root أو -r -حدد دليل جذر التطبيق. يقبل وسيطة المسار ، على سبيل المثال ../my_project .
--verbose أو -v -قصاصات رمز الطباعة وتفاصيل البحث الإضافية.
--ignore أو -i -تجاهل الأنواع الواردة. يقبل قائمة مفصولة بفاصلة بأسماء الوحدات ، مثل XSS.Raw,Traversal .
--ignore-files تجاهل الملفات. يقبل قائمة مفصولة بأسماء الملفات ، على سبيل المثال config/prod.exs .
--details أو -d -الحصول على تفاصيل من النوع. يقبل اسم وحدة واحدة ، على سبيل المثال Config.CSRF .
--all-details -احصل على تفاصيل عن جميع الأنواع.
--private -تخطي شيكات التحديث.
--router -تحديد موقع جهاز التوجيه. يجب استخدام هذا فقط إذا كان موقع جهاز التوجيه غير قياسي. يقبل حجة المسار ، على سبيل المثال my/strange/router.ex .
--exit إرجاع حالة الخروج غير الصفر عند أو فوق عتبة الثقة من low أو medium أو high . الإعدادات الافتراضية إلى false التي تُرجع حالة خروج صفر
--threshold -نتائج العودة عند أو أعلى مستوى ثقة من low (افتراضي) ، medium ، أو high .
--format أو -f -تحديد تنسيق الإخراج النتائج. يقبل تنسيق ، على سبيل المثال txt أو json .
لاحظ أن الخيارات مثل --verbose لن تعمل مع تنسيق json . تحتوي جميع نتائج تنسيق json على type file line . مفاتيح أخرى قد تختلف.
--quiet -إرجاع سطر واحد يشير إلى عدد النتائج. خلاف ذلك ، ارجع لا الإخراج إذا لم تكن هناك نتائج.
--compact -النتائج المفردة ، ذات الخط الواحد مع الإخراج الملون وفقًا للثقة.
--flycheck النتائج المفردة ، التي تتوافق مع الأدوات المستندة إلى FlyCheck.
--save-config يقوم بإنشاء ملف تكوين بناءً على خيارات سطر الأوامر. راجع ملفات التكوين لمزيد من المعلومات.
--config -قم بتشغيل Sobelow مع ملف التكوين. راجع ملفات التكوين لمزيد من المعلومات.
--mark-skip-all -Mark جميع النتائج المعروضة على أنها قابلة للتخطي.
--clear-skip تكوين واضح تم إنشاؤه بواسطة- --mark-skip-all .
--skip -تجاهل النتائج التي تم تمييزها للتخطي. انظر الإيجابيات الخاطئة لمزيد من المعلومات.
--version -يخرج الإصدار الحالي من Sobelow. هذا مفيد لخطوات CI أو التكامل مع أدوات أخرى مثل Salus.
يتيح Sobelow للمستخدمين حفظ الخيارات المستخدمة بشكل متكرر في ملف التكوين. على سبيل المثال ، إذا وجدت نفسك تعمل باستمرار:
$ mix sobelow -i XSS.Raw,Traversal --verbose --exit Low
يمكنك استخدام علامة- --save-config لإنشاء ملف تكوين .sobelow-conf :
$ mix sobelow -i XSS.Raw,Traversal --verbose --exit Low --save-config
سيقوم هذا الأمر بإنشاء ملف .sobelow-conf بجذر التطبيق الخاص بك. يمكنك تحرير هذا الملف مباشرة لإجراء تغييرات.
يمكنك أيضًا تشغيل الأمر دون أي خيارات:
$ mix sobelow --save-config
عند بدء تشغيل هذه الحزمة لأول مرة - سيتم ملء ملف التكوين الذي تم إنشاؤه بالقيم الافتراضية لكل خيار. (هذا يساعد في دمج هذه الحزمة بسرعة في قاعدة كود موجودة مسبقًا.)
الآن إذا كنت ترغب في تشغيل SoBelow مع التكوين المحفوظ ، يمكنك تشغيل SoBelow مع علامة --config .
$ mix sobelow --config
تفضل Sobelow الإفراط في الإبلاغ مقابل التقارير. على هذا النحو ، قد تجد عددًا من الإيجابيات الخاطئة في فحص نموذجي. يمكن تجاهل هذه النتائج بشكل فردي عن طريق إضافة تعليق # sobelow_skip ، إلى جانب قائمة بالوحدات النمطية ، قبل تعريف الوظيفة.
# sobelow_skip ["Traversal"]
def vuln_func ( ... ) do
...
end عند دمج Sobelow في مشروع جديد ، يمكن أن يكون هناك عدد كبير من الإيجابيات الخاطئة. للاحتفال بجميع النتائج المطبوعة كإيجابيات خاطئة ، قم بتشغيل SOBELOW مع --mark-skip-all .
بمجرد أن تضع علامة على النتائج المناسبة ، قم بتشغيل Sobelow مع علم --skip .
$ mix sobelow --skip
على الرغم من أن تعليقات # sobelow_skip لا يمكن إلا أن تضع علامة على نتائج مستوى الوظيفة (وبالتالي لا يمكن استخدامها لتخطي مشكلات التكوين) ، يمكن استخدام --mark-skip-all لتخطي أي نوع العثور.
يتم تقسيم الفئات النتائج إلى وحدات. يمكن بعد ذلك استخدام هذه الوحدات لتجاهل فئات النتائج (عبر خيارات ignore skip ) أو للحصول على تفاصيل الضعف (عبر خيار details ).
يمكن العثور على هذه القائمة ، وغيرها من المعلومات المفيدة ، على سطر الأوامر:
$ mix help sobelow
من أجل تشغيل sobelow ضد جميع تطبيقات الأطفال داخل تطبيق المظلة مع أمر واحد ، يمكنك إضافة اسم مستعار لـ Sobelow في ملف الجذر الخاص بك. mix.exs :
defp aliases do
[
sobelow: [ "cmd mix sobelow" ]
]
end إذا كنت ترغب في استخدام ملفات التكوين في تطبيق المظلة ، قم بإنشاء .sobelow-conf في كل تطبيق طفل واستخدم علامة- --config .
عند مسح المشروع ، سيقوم Sobelow أحيانًا بالتحقق من التحديثات ، وسيقوم بطباعة تنبيه إذا كان هناك إصدار جديد متاح. يتبع Sobelow آخر فحص تحديث عن طريق إنشاء ملف .sobelow في جذر المشروع الممسوحة ضوئيًا.
إذا لم تكن هذه الوظيفة مطلوبة ، فيمكن استخدام العلم --private مع المسح.