
أداة تحليل ثابتة لكشف الثغرات الأمنية في تطبيقات الويب بلغة بايثون
.. image:: https://travis-ci.org/python-security/pyt.svg?branch=master :target: https://travis-ci.org/python-security/pyt
.. image:: https://readthedocs.org/projects/pyt/badge/?version=latest :target: http://pyt.readthedocs.io/en/latest/?badge=latest
.. image:: https://codeclimate.com/github/python-security/pyt/badges/coverage.svg :target: https://codeclimate.com/github/python-security/pyt/coverage
.. image:: https://badge.fury.io/py/python-taint.svg :target: https://badge.fury.io/py/python-taint
.. image:: https://img.shields.io/badge/PRs-welcome-ff69b4.svg :target: https://github.com/python-security/pyt/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22+
.. image:: https://img.shields.io/badge/python-v3.6-blue.svg :target: https://pypi.org/project/python-taint/
.. image:: https://img.shields.io/badge/Donate-Charity-orange.svg :target: https://www.againstmalaria.com/donation.aspx
تحديث مارس 2020: يرجى الاطلاع على Pysa tutorial_ الرائع الذي سيساعدك على البدء في اكتشاف الثغرات الأمنية في قاعدة كود Python الخاصة بك.
Pyre_ من Facebook هو مشروع رائع له مستقبل مشرق ويعمل عليه الكثير من الأشخاص الأذكياء.
أقترح، إذا كنت لا تعرف الكثير عن تحليل البرامج، أن تفهم كيف يعمل PyT قبل الغوص في Pyre. إلى جانب ملفات README في معظم المجلدات، هناك رسالة الماجستير الأصلية و بعض الشرائح_.
مع ذلك، أنا سعيد بمراجعة طلبات السحب وسأمنحك أذونات الكتابة إذا قمت بأكثر من بضع مساهمات.
كان هناك العديد من المساهمين الرائعين في هذا المشروع، وأخطط للعمل على مشاريع أخرى مثل detect-secrets_ وغيرها (مثل Pyre لاحقًا) في المستقبل إذا كنت ترغب في العمل معًا أكثر :)
إذا كنت مهندس أمن ولديك قاعدة كود Python بدون تعليقات توضيحية للنوع، والتي لن يتعامل معها Pyre، أقترح عليك استبدال نقاط الاستقبال (sinks) الخاصة بك بغلاف آمن (شيء مثل defusedxml)، والتنبيه على أي استخدام للنقاط القياسية. يمكنك استخدام Bandit للقيام بذلك حيث أن تحليل تدفق البيانات غير مطلوب، ولكن سيتعين عليك تقليمه كثيرًا بسبب معدل الإيجابيات الخاطئة العالي.
.. _Pysa tutorial: https://github.com/facebook/pyre-check/tree/master/pysa_tutorial#pysa-tutorial .. _Pyre: https://github.com/facebook/pyre-check .. _README's in most directories: https://github.com/python-security/pyt/tree/master/pyt#how-it-works .. _Master's Thesis: https://projekter.aau.dk/projekter/files/239563289/final.pdf .. _some slides: https://docs.google.com/presentation/d/1JfAykAxR0DcJwwGfHmhrz1RhhKqYsnt5x_GY8CbTp7s .. _detect-secrets: https://github.com/Yelp/detect-secrets/blob/master/CHANGELOG.md#whats-new .. _defusedxml: https://pypi.org/project/defusedxml/ .. _Bandit: https://github.com/PyCQA/bandit
تحليل ثابت لتطبيقات Python على الويب بناءً على أسس نظرية (رسوم بيانية لتدفق التحكم، نقطة ثابتة، تحليل تدفق البيانات)
اكتشاف حقن الأوامر، SSRF، حقن SQL، XSS، اجتياز الدليل وغيرها.
إمكانية تخصيص كبيرة
للاطلاع على التغييرات الأخيرة، يرجى الاطلاع على سجل التغييرات_.
.. _سجل التغييرات: https://github.com/python-security/pyt/blob/master/CHANGELOG.md
مثال على الاستخدام والإخراج:
.. image:: https://raw.githubusercontent.com/KevinHock/rtdpyt/master/readme_static_files/pyt_example.png
قبل المتابعة، تأكد من تثبيت Python 3.6 أو 3.7.
.. code-block:: python
pip install python-taint
✨🍰✨
يمكن أيضًا تثبيت PyT من المصدر. للقيام بذلك، قم باستنساخ المستودع، ثم قم بتشغيل:
.. code-block:: python
python3 setup.py install
ستجد قريبًا README.rst_ في كل مجلد داخل مجلد pyt/، ابدأ من هنا_.
.. _README.rst: https://github.com/python-security/pyt/tree/master/pyt .. _ابدأ من هنا: https://github.com/python-security/pyt/tree/master/pyt
يحدد الخيار -a الوظائف التي سيتم تلويث وسائطها_، الافتراضي هو Flask.
استخدم الخيار -t لتحديد المصادر ونقاط الاستقبال، افتراضيًا يتم استخدام هذا الملف_.
بالنسبة لوظائف من المكتبات المضمنة أو المكتبات، مثل url_for أو os.path.join، استخدم الخيار -m لتحديد ما إذا كانت تُرجع قيمًا ملوثة عند إدخال قيم ملوثة، افتراضيًا يتم استخدام هذا الملف_.
.. _يحدد الخيار -a الوظائف التي سيتم تلويث وسائطها: https://github.com/python-security/pyt/tree/master/pyt/web_frameworks#web-frameworks .. _يتم استخدام هذا الملف: https://github.com/python-security/pyt/blob/master/pyt/vulnerability_definitions/all_trigger_words.pyt .. _يتم استخدام هذا الملف: https://github.com/python-security/pyt/blob/master/pyt/vulnerability_definitions/blackbox_mapping.json
.. code-block::
usage: python -m pyt [-h] [-a ADAPTOR] [-pr PROJECT_ROOT] [-b BASELINE_JSON_FILE] [-j] [-t TRIGGER_WORD_FILE] [-m BLACKBOX_MAPPING_FILE] [-i] [-o OUTPUT_FILE] [--ignore-nosec] [-r] [-x EXCLUDED_PATHS] [--dont-prepend-root] [--no-local-imports] targets [targets ...]
required arguments: targets source file(s) or directory(s) to be scanned
important optional arguments: -a ADAPTOR, --adaptor ADAPTOR Choose a web framework adaptor: Flask(Default), Django, Every or Pylons
-t TRIGGER_WORD_FILE, --trigger-word-file TRIGGER_WORD_FILE
Input file with a list of sources and sinks
-m BLACKBOX_MAPPING_FILE, --blackbox-mapping-file BLACKBOX_MAPPING_FILE
Input blackbox mapping file
optional arguments: -pr PROJECT_ROOT, --project-root PROJECT_ROOT Add project root, only important when the entry file is not at the root of the project.
-b BASELINE_JSON_FILE, --baseline BASELINE_JSON_FILE
Path of a baseline report to compare against (only
JSON-formatted files are accepted)
-j, --json Prints JSON instead of report.
-i, --interactive Will ask you about each blackbox function call in
vulnerability chains.
-o OUTPUT_FILE, --output OUTPUT_FILE
Write report to filename
--ignore-nosec Do not skip lines with # nosec comments
-r, --recursive Find and process files in subdirectories
-x EXCLUDED_PATHS, --exclude EXCLUDED_PATHS
Separate files with commas
--dont-prepend-root In project root e.g. /app, imports are not prepended
with app.*
--no-local-imports If set, absolute imports must be relative to the
project root. If not set, modules in the same
directory can be imported just by their names.
استخدامه كمستخدم 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]
إرشادات_
.. _إرشادات: https://github.com/python-security/pyt/blob/master/CONTRIBUTIONS.md
قم بإنشاء مجلد يحتوي على البيئة الافتراضية والمشروع
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 لبدء التطوير.