تحديث مارس 2020 : يرجى الذهاب لترى البرنامج التعليمي المذهل PYSA الذي يجب أن يحصل على سرعة العثور على ثغرات الأمن في قاعدة كود بيثون الخاصة بك.
Pyre from Facebook هو مشروع رائع له مستقبل مشرق والعديد من الأشخاص الأذكياء الذين يعملون عليه. أود أن أقترح ، إذا كنت لا تعرف الكثير عن تحليل البرنامج ، فأنت تفهم كيف يعمل PYT قبل الغوص في Pyre. جنبا إلى جنب مع README في معظم الدلائل ، هناك أطروحة الماجستير الأصلية وبعض الشرائح. مع ذلك ، يسعدني مراجعة طلبات السحب وأعطيك أذونات الكتابة إذا قمت بأكثر من بضعة.
كان هناك الكثير من المساهمين العظماء في هذا المشروع ، وأخطط للعمل في مشاريع أخرى مثل Detect-Secrets وغيرها (على سبيل المثال Pyre في نهاية المطاف) في المستقبل إذا كنت ترغب في العمل معًا :)
إذا كنت مهندسًا أمانًا مع وجود قاعدة كود بيثون دون التعليقات التوضيحية نوعًا ، فلن يتم التعامل مع المحرقة ، أقترح عليك استبدال المصارف الخاصة بك بلفاء آمن (شيء مثل defusedxml) ، وتنبيه أي استخدامات للحوض القياسي. يمكنك استخدام Bandit للقيام بذلك نظرًا لأن تحليل تدفق البيانات غير مطلوب ، ولكن سيتعين عليك تقليمه كثيرًا ، نظرًا للمعدل الإيجابي العالي.
تحليل ثابت لتطبيقات الويب Python بناءً على الأسس النظرية (الرسوم البيانية لتدفق التحكم ، النقطة الثابتة ، تحليل تدفق البيانات)
لإلقاء نظرة على التغييرات الحديثة ، يرجى الاطلاع على Changelog.
مثال الاستخدام والإخراج:
قبل المتابعة ، تأكد من تثبيت Python3.6 أو 3.7.
pip install python - taint
?يمكن أيضًا تثبيت PYT من المصدر. للقيام بذلك ، استنساخ الريبو ، ثم تشغيل:
python3 setup . py install ستجد قريبًا readme.rst في كل دليل في pyt/ Folder ، ابدأ هنا.
يحدد الخيار -a الوظائف التي ستحصل على وسيطاتهم الملوثة ، بشكل افتراضي ، فهي قارورة.
استخدم خيار -t لتحديد المصادر والمصارف ، يتم استخدام هذا الملف افتراضيًا.
بالنسبة للوظائف من Buildins أو المكتبات ، على سبيل المثال url_for أو os.path.join ، استخدم خيار -m لتحديد ما إذا كانت تُرجع قيمًا ملوثة أم لا ، والتي يتم استخدامها افتراضيًا بشكل افتراضي.
الاستخدام: Python -M Pyt [-H] [-A Adapter] [-PR Project_root]
[-b baseline_json_file] [-j] [-t trigger_word_file]
[-M Blackbox_mapping_file] [-i] [-O Output_File]
[-ignore-nosec] [-r] [-x reciSted_Paths]
[-الجذر-الجذر] [-غير محظوظات]
الأهداف [الأهداف ...]
الحجج المطلوبة:
يتم مسح ملفات (ملفات) المصدر الأهداف أو الدليل (الدليل)
حجج اختيارية مهمة:
-محول ، -محول Adaptor
اختر محول إطار ويب: قارورة (افتراضي) ،
Django ، كل أو أبراج
-T TRIGGER_WORD_FILE ،-Trigger-Word-File Trigger_Word_File
ملف الإدخال مع قائمة المصادر والمصارف
-M Blackbox_mapping_file ،--BlackBox-Mapping-File Blackbox_mapping_file
إدخال ملف رسم الخرائط Blackbox
الحجج الاختيارية:
-PR Project_root ،-project_rout-project_root
أضف جذر المشروع ، مهم فقط عند ملف الإدخال
ليس في جذر المشروع.
-b baseline_json_file ، -baseline baseline_json_file
مسار تقرير الأساس للمقارنة ضد (فقط
يتم قبول الملفات التي تتناسب مع JSON)
-J ، -json يطبع json بدلاً من التقرير.
-i ، -سوف يسألك التفاعل عن كل مكالمة دالة blackbox في
سلاسل الضعف.
-O Output_file ، -Output Output_File
اكتب تقرير إلى اسم الملف
-NOSORE-NOSEC لا تتخطى الخطوط مع التعليقات # NOSEC
-R ، -ملفات البحث ومعالجة الملفات في الدلائل الفرعية
-x excluded_paths ، -exclude excluded_paths
فصل ملفات مع فواصل
-الجذر المعروف في جذر المشروع على سبيل المثال /التطبيق ، لا يتم إعداد الواردات مسبقًا
مع التطبيق.*
-غير محلي ، إذا تم تعيينه ، يجب أن تكون الواردات المطلقة مرتبطة بـ
جذر المشروع. إذا لم يتم تعيين وحدات في نفس الشيء
يمكن استيراد الدليل فقط بأسمائهم.
باستخدامه مثل python3 -m pyt examples/vulnerable_code/XSS_call.py
إجراء اختبارات python3 -m tests
تشغيل ملف اختبار فردي python3 -m unittest tests.import_test
تشغيل اختبار فردي python3 -m unittest tests.import_test.ImportTest.test_import
انضم إلى مجموعة Slack لدينا: https://pyt-dev.slack.com/ - اسأل عن دعوة: [email protected]
المبادئ التوجيهية
قم بإنشاء دليل لعقد ENV الافتراضي والمشروع
mkdir ~/a_folder
cd ~/a_folder
استنساخ المشروع في الدليل
git clone https://github.com/python-security/pyt.git
إنشاء البيئة الافتراضية
python3 -m venv ~/a_folder/
تحقق من أن لديك الإصدارات الصحيحة
python3 --version عينة Python 3.6.0
pip --version عينة الإخراج pip 9.0.1 from /Users/kevinhock/a_folder/lib/python3.6/site-packages (python 3.6)
تغيير إلى دليل المشروع
cd pyt
في المستقبل ، فقط اكتب source ~/a_folder/bin/activate للبدء في التطوير.