Pysa¶
Der Python Static Analyzer Pysa führt Taint-Analysen durch um potenzielle Sicherheitsprobleme zu identifizieren. Dabei verfolgt Pysa Datenströme von ihrem Ursprung zu ihrem Endpunkt und identifiziert dabei anfälligen Code.
Konfiguration¶
Pysa verwendet zwei Dateitypen für die Konfiguration:
eine
taint.config
-Datei im JSON-Format, in dersources
,sinks
,features
undrules
definiert werden.{ "comment": "UserControlled, Test, Demo sources are predefined. Same for Demo, Test and RemoteCodeExecution sinks", "sources": [], "sinks": [], "features": [], "rules": [] }
Dateien mit der Endung
.pysa
in einem Verzeichnis, das mittaint_models_path
in eurer.pyre_configuration
-Datei konfiguriert wurde.
Praktische Beispiele findet ihr im Pyre-Repository.
Verwendung¶
Pyre kann aufgerufen werden, z.B. mit
$ $ uv run pyre analyze --save-results-to ./
Die Option --save-results-to
speichert detaillierte Ergebnisse in
./taint-output.json
.
Pysa Postprozessor¶
Installation¶
$ uv add fb-sapp
Verwendung¶
Parsen der JSON-Datei, z.B. mit
$ uv run sapp --database-name sapp.db analyze ./taint-output.json
Die Ergebnisse werden in der lokalen SQLite-Datei
sapp.db
gespeichert.Erkunden der Probleme mit
$ uv run sapp --database-name sapp.db explore
Dies startet ein IPython-Interface, das mit der SQLite-Datenbank verbunden ist:
issues
listet alle Probleme auf
issue 1
wählt das erste Problem aus
trace
zeigt den Datenfluss von
source
bissink
ann
springt zum nächsten Aufruf
list
zeigt den Quellcode des Aufrufs
jump 1
springt zum ersten Aufruf und zeigt den Quellcode an
Weitere Kommandos erhaltet ihr in SAPP Command-Line Interface.