Обновление марта 2020 года . Посмотрите на удивительный учебник PYSA, который должен привести к скорости поиска уязвимостей безопасности в вашей кодовой базе Python.
Pyre из Facebook - это удивительный проект, который имеет светлое будущее, и многие умные люди работают над ним. Я бы посоветовал, если вы не знаете так много об анализе программы, что вы понимаете, как работает PYT, прежде чем погрузиться в Pyre. Наряду с ReadMe в большинстве каталогов, есть оригинальная диссертация Master и некоторые слайды. С учетом сказанного, я рад просмотреть запросы на привлечение и дать вам разрешения на запись, если вы сделаете больше, чем несколько.
В этом проекте было много отличных участников, я планирую работать над другими проектами, такими как DeTect-Secrets и другие (например, Pyre в конечном итоге) в будущем, если вы хотите работать вместе больше :)
Если вы являетесь инженером по охране безопасности, например, кодовой базой Python без аннотаций типа, Pyre не обрабатывает, я бы посоветовал вам заменить раковины безопасной оберткой (что -то вроде DefusedXML) и предупредить любое использование стандартной раковины. Вы можете использовать Bandit для этого, так как анализ данных Dataflow не требуется, но вам придется много его обрезать из-за высокой ложноположительной скорости.
Статический анализ веб -приложений Python на основе теоретических фундаментов (графики потока управления, фиксированная точка, анализ потока данных)
Чтобы посмотреть недавние изменения, пожалуйста, посмотрите The ChangeLog.
Пример использования и вывода:
Прежде чем продолжить, убедитесь, что у вас установлен Python3.6 или 3.7.
pip install python - taint
?PYT также может быть установлен из Source. Для этого клонируйте репо, а затем беги:
python3 setup . py install Вскоре вы найдете readme.rst в каждом каталоге в папке pyt/ начните здесь.
Опция -a определяет, какие функции будут испорчены их аргументы, по умолчанию это колба.
Используйте опцию -t , чтобы указать источники и раковины, по умолчанию используется этот файл.
Для функций из встроенных или библиотек, например, 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]
[-inosec] [-r] [-x excuded_paths]
[-Dont-Prepend-root] [---не-локальные импорты]
цели [цели ...]
Требуемые аргументы:
Целевые предложения исходных файлов или каталога, которые будут отсканированы
Важные дополнительные аргументы:
Адаптер, адаптер -адаптор
Выберите адаптер веб -фреймворка: Flask (по умолчанию),
Джанго, каждый или пилоны
-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-root project_root
Добавить root Project, важен только тогда, когда файл входа
не в корне проекта.
-B BASELINE_JSON_FILE, -baseline baseline_json_file
Путь базового отчета для сравнения (только (только
Файлы, форматированные JSON, принимаются)
-j, -Json печатает json вместо отчета.
-i, - -Interactive спросит вас о каждом вызове функции Blackbox в
Цепочки уязвимости.
-О output_file, - -вывод output_file
Написать отчет в имя файла
-Иньера-носек не пропускайте линии с # nosec Comments
-r, -рекурсивные файлы поиска и обработки в подкатализаторах
-x extuded_paths, -exclude extuded_paths
Отдельные файлы с запятыми
-Dont-Prepend-root в проекте root Eg /App, импорт не готовятся
с приложением.*
-не локальные импорты, если установлено, абсолютный импорт должен быть относительно
проект корень. Если не установлено, модули в том же
Справочник может быть импортирован только их именами.
Используя его, как пользователь 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 и Project
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 чтобы начать развиваться.