März 2020 Update : Bitte sehen Sie sich das erstaunliche PYSA -Tutorial an, mit dem Sie die Sicherheitslücken in Ihrer Python -Codebasis auf dem neuesten Stand bringen sollten.
Pyre von Facebook ist ein erstaunliches Projekt, das eine glänzende Zukunft hat und viele kluge Leute daran arbeiten. Ich würde vorschlagen, wenn Sie nicht so viel über die Programmanalyse wissen, dass Sie verstehen, wie PYT funktioniert, bevor Sie in Pyre eintauchen. Zusammen mit den Readme in den meisten Verzeichnissen gibt es die ursprüngliche Masterarbeit und einige Folien. Vor diesem Hintergrund freue ich mich, Pull -Anfragen zu überprüfen und Ihnen Schreibberechtigungen zu geben, wenn Sie mehr als ein paar machen.
Es gab viele großartige Mitwirkende zu diesem Projekt. Ich habe vor, in Zukunft an anderen Projekten wie Detect-Secrets und anderen (z. B. Pyre) zu arbeiten, wenn Sie mehr zusammenarbeiten möchten :)
Wenn Sie ein Sicherheitsingenieur mit z. B. einer Python -Codebasis ohne Typanmerkungen sind, würde ich vorschlagen, dass Sie Ihre Waschbecken durch einen sicheren Wrapper (so etwas wie enthülltxml) ersetzen und alle Verwendungszwecke der Standard -Spüle abgeben. Sie können Banditen dazu verwenden, um dies zu tun, da die Datenflow-Analyse nicht erforderlich ist. Aufgrund der hohen falsch positiven Rate müssen Sie sie jedoch häufig abschneiden.
Statische Analyse von Python -Webanwendungen basierend auf theoretischen Grundlagen (Kontrolldurchflussdiagramme, Festpunkt, Datenflow -Analyse)
Für einen Blick auf die jüngsten Änderungen finden Sie im Changelog.
Beispiel Verwendung und Ausgabe:
Stellen Sie vor dem Fortfahren sicher, dass Sie Python3.6 oder 3.7 installiert haben.
pip install python - taint
?PYT kann auch aus der Quelle installiert werden. Klonen Sie dazu das Repo und rennen Sie dann:
python3 setup . py install Bald finden Sie in jedem Verzeichnis im pyt/ Ordner eine Readme.RST, beginnen Sie hier.
Die Option -A bestimmt, welche Funktionen ihre Argumente entspannen werden, standardmäßig ist es Flask.
Verwenden Sie die Option -t , um Quellen und Senken anzugeben. Standardmäßig wird diese Datei verwendet.
Für Funktionen aus integrierten oder Bibliotheken, z. B. url_for oder os.path.join , verwenden Sie die Option -m , um festzustellen, ob sie verfälschte Werte zurückgeben oder nicht, die verdorbenen Eingänge angegeben sind oder nicht, standardmäßig wird diese Datei verwendet.
Verwendung: python -m pyt [-h] [-a adapter] [-pr project_root]
[-b basileLine_json_file] [-j] [-t trigger_word_file]
[-m Blackbox_mapping_file] [-i] [-O output_file]
[-IGNORE-NOSEC] [-R] [-x excluded_paths]
[-entlang der Vorbereitung] [-No-Local-Imports]
Ziele [Ziele ...]
Erforderliche Argumente:
Ziele Quelldateien (n) oder Verzeichnisse (n) zu scannt
Wichtige optionale Argumente:
-A Adapter, -Adaptor -Adapter
Wählen Sie einen Web -Framework -Adapter: Flask (Standard).
Django, jeder oder Pylonen
-t trigger_word_file,-Tigger-Wort-Datei trigger_word_file
Geben Sie die Datei mit einer Liste von Quellen und Senken ein
-M Blackbox_Mapping_file,-Blackbox-Mapping-File Blackbox_Mapping_file
Eingeben Sie die Blackbox -Zuordnungsdatei ein
Optionale Argumente:
-Pr Project_root, --project-Root Project_root
Projektroot hinzufügen, nur wichtig, wenn die Eintragsdatei
ist nicht die Wurzel des Projekts.
-B Baseline_json_file, -baseline baseline_json_file
Pfad eines Basisberichts zu vergleichen (nur (nur
JSON-formatierte Dateien werden akzeptiert)
-J, --json druckt JSON anstelle von Bericht.
-I, -Interaktiv werden Sie nach jedem Blackbox -Funktionsaufruf in den Funktionsaufruf fragen
Verwundbarkeitsketten.
-O output_file, -output output_file
Schreiben Sie Bericht an den Dateinamen
-IGNORE-NOSEC überspringen keine Zeilen mit # Nosec-Kommentaren
-R, -rekursive Fund- und Prozessdateien in Unterverzeichnissen
-x excluded_paths, -ausgeschlossen ausgeschlossene_Paths
Separate Dateien mit Kommas
-Nicht vorbereitete Wurzeln im Projektroot-EG /App, Importe werden nicht vorbereitet
mit App.*
-No-Local-Imports Wenn festgelegt, müssen absolute Importe relativ zur
Projektwurzel. Wenn nicht festgelegt, Module in derselben
Verzeichnis kann nur mit ihren Namen importiert werden.
Verwenden Sie es wie ein Benutzer python3 -m pyt examples/vulnerable_code/XSS_call.py
Ausführen der Tests python3 -m tests
Ausführen einer einzelnen Testdatei python3 -m unittest tests.import_test
Ausführen eines einzelnen Tests python3 -m unittest tests.import_test.ImportTest.test_import
Treten Sie unserer Slack -Gruppe bei: https://pyt-dev.slack.com/ - - fragen Sie nach Einladung: [email protected]
Richtlinien
Erstellen Sie ein Verzeichnis, um die virtuelle Umwelt und das Projekt zu halten
mkdir ~/a_folder
cd ~/a_folder
Klonen Sie das Projekt in das Verzeichnis
git clone https://github.com/python-security/pyt.git
Erstellen Sie die virtuelle Umgebung
python3 -m venv ~/a_folder/
Überprüfen Sie, ob Sie die richtigen Versionen haben
python3 --version Ausgang Python 3.6.0
pip --version STRIP OUTPUT pip 9.0.1 from /Users/kevinhock/a_folder/lib/python3.6/site-packages (python 3.6)
Wechsel zum Projektverzeichnis
cd pyt
Geben Sie in Zukunft nur source ~/a_folder/bin/activate um sich zu entwickeln.