Mise à jour de mars 2020 : veuillez consulter le tutoriel Pysa incroyable qui devrait vous mettre au courant de la recherche de vulnérabilités de sécurité dans votre base de code Python.
Pyre de Facebook est un projet incroyable qui a un brillant avenir et de nombreuses personnes intelligentes qui y travaillent. Je suggère, si vous ne savez pas grand-chose sur l'analyse du programme, que vous comprenez comment PYT fonctionne avant de plonger dans le bûcher. En plus des Readme dans la plupart des répertoires, il y a la thèse du maître original et certaines diapositives. Cela dit, je suis heureux de revoir les demandes de traction et de vous donner des autorisations d'écriture si vous en faites plus que quelques-unes.
Il y avait beaucoup de grands contributeurs à ce projet, je prévois de travailler sur d'autres projets comme Detect-Serets et d'autres (par exemple, finalement) à l'avenir si vous souhaitez travailler ensemble plus :)
Si vous êtes un ingénieur de sécurité avec EG une base de code Python sans annotations de type, que le bûcher ne gérera pas, je vous suggère de remplacer vos éviers par un wrapper sécurisé (quelque chose comme DeFusedXML) et alerter toutes les utilisations de l'évier standard. Vous pouvez utiliser Bandit pour ce faire car l'analyse du flux de données n'est pas requise, mais vous devrez les couper beaucoup, en raison du taux élevé de faux positifs.
Analyse statique des applications Web Python basées sur des fondations théoriques (Graphiques de flux de contrôle, point fixe, analyse de flux de données)
Pour un aperçu des changements récents, veuillez consulter le Changelog.
Exemple d'utilisation et de sortie:
Avant de continuer, assurez-vous que Python3.6 ou 3.7 installe.
pip install python - taint
?PYT peut également être installé à partir de la source. Pour ce faire, cloner le repo, puis courir:
python3 setup . py install Bientôt, vous trouverez un Readme.rst dans chaque répertoire du dossier pyt/ , commencez ici.
L'option -a détermine quelles fonctions auront leurs arguments entachés, par défaut, il s'agit de flacon.
Utilisez l'option -t pour spécifier des sources et des puits, par défaut, ce fichier est utilisé.
Pour les fonctions des intégrés ou des bibliothèques, par exemple url_for ou os.path.join , utilisez l'option -m pour spécifier si elles renvoient ou non les valeurs entachées étant donné les entrées entachées, par défaut, ce fichier est utilisé.
Utilisation: python -m pyt [-H] [-a adaptateur] [-pr project_root]
[-B Basline_json_file] [-j] [-t Trigger_Word_file]
[-m BlackBox_Mapping_file] [-i] [-o output_file]
[--ignore-nosec] [-r] [-x exclud_paths]
[--Dont-PrePend-ROOT] [--No-Local-Imports]
cibles [cibles ...]
Arguments requis:
cible les fichiers source ou les répertoires à analyser
Arguments facultatifs importants:
-un adaptateur, - adaptateur adaptor
Choisissez un adaptateur Web Framework: FLASK (par défaut),
Django, chaque ou pylône
-T Trigger_Word_file, --trigger-Word-File Trigger_Word_file
Fichier d'entrée avec une liste de sources et de puits
-m Blackbox_Mapping_file, --blackbox-mapping-file Blackbox_Mapping_file
Fichier de mappage Blackbox d'entrée
Arguments facultatifs:
-pr project_root, --project-root project_root
Ajouter le projet Root, uniquement important lorsque le fichier d'entrée
n'est pas à l'origine du projet.
-B Basline_json_file, - Baseline Basline_json_file
Chemin d'un rapport de base pour comparer (seulement
Les fichiers formés par JSON sont acceptés)
-J, --json imprime JSON au lieu de reporter.
-I, - Intheractive vous interrogera chaque appel de fonction BlackBox Blackbox
chaînes de vulnérabilité.
-o output_file, --output output_file
Écrire un rapport à FileName
--ignore-nosec ne sautez pas les lignes avec # commentaires nosec
-R, - - Rechercher et traiter des fichiers dans les sous-répertoires
-x exclud_paths, --exclude exclud_paths
Séparer les fichiers avec des virgules
--don-prepennd-root in Project Root Eg / App, les importations ne sont pas apparentes
avec app. *
- Noo-Local-Imports Si défini, les importations absolues doivent être relatives au
Root du projet. Si ce n'est pas défini, les modules
Le répertoire peut être importé uniquement par leurs noms.
L'utiliser comme un utilisateur python3 -m pyt examples/vulnerable_code/XSS_call.py
Exécution des tests python3 -m tests
Exécution d'un fichier de test individuel python3 -m unittest tests.import_test
Exécution d'un test individuel python3 -m unittest tests.import_test.ImportTest.test_import
Rejoignez notre groupe Slack: https://pyt-dev.slack.com/ - Demandez l'invitation: [email protected]
Lignes directrices
Créer un répertoire pour maintenir l'env et le projet virtuels
mkdir ~/a_folder
cd ~/a_folder
Clone le projet dans le répertoire
git clone https://github.com/python-security/pyt.git
Créer l'environnement virtuel
python3 -m venv ~/a_folder/
Vérifiez que vous avez les bonnes versions
python3 --version Exemple de sortie Python 3.6.0
pip --version Échantillon Sortie pip 9.0.1 from /Users/kevinhock/a_folder/lib/python3.6/site-packages (python 3.6)
Changer le répertoire de projet
cd pyt
À l'avenir, tapez simplement source ~/a_folder/bin/activate pour commencer à se développer.