
JAW: Ein Graph-basiertes Sicherheitsanalyse-Framework für clientseitiges JavaScript
J A W
Webseite | Dokumentation | Einrichtung | Crawler | Schnellstart Docker (Beispiel)
Eine quelloffene, prototypische Implementierung von Property-Graphen für JavaScript, basierend auf dem esprima-Parser und der EsTree SpiderMonkey Spec. JAW kann zur Analyse der Client-Seite von Webanwendungen und JavaScript-basierten Programmen verwendet werden.
Dieses Projekt ist unter der GNU AFFERO GENERAL PUBLIC LICENSE V3.0 lizenziert. Weitere Informationen finden Sie hier.
JAW besitzt eine Github-Pages-Website unter https://soheilkhodayari.github.io/JAW/.
Versionshinweise:
JAW-V2.JAW-V1.Die Architektur von JAW ist unten dargestellt.
JAW kann auf zwei verschiedene Arten verwendet werden:
Beliebige JavaScript-Analyse: Verwenden Sie JAW zur Modellierung und Analyse eines beliebigen JavaScript-Programms, indem Sie den Dateisystem-pfad des Programms angeben.
Webanwendungsanalyse: Analysieren Sie eine Webanwendung, indem Sie eine einzelne Start-URL angeben.
Verwenden Sie die gesammelten Webressourcen, um einen Hybriden Programmgraphen (HPG) zu erstellen, der in eine Neo4j-Datenbank importiert wird.
Optional können Sie dem HPG-Konstruktionsmodul eine Zuordnung von semantischen Typen zu benutzerdefinierten JavaScript-Sprachtokens bereitstellen, was die Kategorisierung von JavaScript-Funktionen nach ihrem Zweck (z. B. HTTP-Anforderungsfunktionen) erleichtert.
Fragen Sie die erstellte Neo4j-Graphendatenbank für verschiedene Analysen ab. JAW bietet Dienstprogramm-Traversierungen für Datenflussanalyse, Kontrollflussanalyse, Erreichbarkeitsanalyse und Mustervergleich. Diese Traversierungen können zur Entwicklung benutzerdefinierter Sicherheitsanalysen verwendet werden.
JAW enthält auch integrierte Traversierungen zur Erkennung von Client-seitigem CSRF, DOM Clobbering- und Request-Hijacking-Schwachstellen.
Die Ausgaben werden im selben Ordner wie die Eingabe gespeichert.
Das Installationsskript setzt Folgendes voraus:
npm package manager (node js)python 3.xpip-PaketmanagerInstallieren Sie anschließend die erforderlichen Abhängigkeiten mit:
$ ./install.sh
Detaillierte Installationsanweisungen finden Sie hier.
Sie können eine Instanz der Pipeline in einem Hintergrund-Screen ausführen mit:
$ python3 -m run_pipeline --conf=config.yaml
Die CLI bietet folgende Optionen:
$ python3 -m run_pipeline -h
usage: run_pipeline.py [-h] [--conf FILE] [--site SITE] [--list LIST] [--from FROM] [--to TO]
Dieses Skript führt die Tool-Pipeline aus.
optionale Argumente:
-h, --help zeigt diese Hilfemeldung und beendet das Programm
--conf FILE, -C FILE Pipeline-Konfigurationsdatei. (Standard: config.yaml)
--site SITE, -S SITE zu testende Website; überschreibt Konfigurationsdatei (Standard: None)
--list LIST, -L LIST zu testende Site-Liste; überschreibt Konfigurationsdatei (Standard: None)
--from FROM, -F FROM erster Eintrag, der bei einer Site-Liste berücksichtigt werden soll; überschreibt Konfigurationsdatei (Standard: -1)
--to TO, -T TO letzter Eintrag, der bei einer Site-Liste berücksichtigt werden soll; überschreibt Konfigurationsdatei (Standard: -1)
Eingabekonfiguration: JAW erwartet eine .yaml-Konfigurationsdatei als Eingabe. Ein Beispiel finden Sie in config.yaml.