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,featuresundrulesdefiniert werden.{ "comment": "UserControlled, Test, Demo sources are predefined. Same for Demo, Test and RemoteCodeExecution sinks", "sources": [], "sinks": [], "features": [], "rules": [] }
Dateien mit der Endung
.pysain einem Verzeichnis, das mittaint_models_pathin 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.dbgespeichert.Erkunden der Probleme mit
$ uv run sapp --database-name sapp.db explore
Dies startet ein IPython-Interface, das mit der SQLite-Datenbank verbunden ist:
issueslistet alle Probleme auf
issue 1wählt das erste Problem aus
tracezeigt den Datenfluss von
sourcebissinkannspringt zum nächsten Aufruf
listzeigt den Quellcode des Aufrufs
jump 1springt zum ersten Aufruf und zeigt den Quellcode an
Weitere Kommandos erhaltet ihr in SAPP Command-Line Interface.