
JAW : Un cadre d'analyse de sécurité basé sur les graphes pour JavaScript côté client
J A W
Site Web | Documentation | Installation | Robot d'exploration | Démarrage rapide Docker (Exemple)
Une implémentation prototype open-source de graphes de propriétés pour JavaScript basée sur l'analyseur esprima et la spécification EsTree SpiderMonkey. JAW peut être utilisé pour analyser le côté client des applications web et les programmes basés sur JavaScript.
Ce projet est sous licence GNU AFFERO GENERAL PUBLIC LICENSE V3.0. Voir ici pour plus d'informations.
JAW dispose d'un site web Github pages accessible à l'adresse https://soheilkhodayari.github.io/JAW/.
Notes de version :
JAW-V2.JAW-V1.L'architecture de JAW est présentée ci-dessous.
JAW peut être utilisé de deux manières distinctes :
Analyse de JavaScript arbitraire : Utilisez JAW pour modéliser et analyser n'importe quel programme JavaScript en spécifiant le chemin du système de fichiers du programme.
Analyse d'application web : Analysez une application web en fournissant une seule URL de départ.
Utilisez les ressources web collectées pour créer un graphe de programme hybride (HPG), qui sera importé dans une base de données Neo4j.
Optionnellement, fournissez au module de construction du HPG un mappage des types sémantiques vers des jetons de langage JavaScript personnalisés, facilitant la catégorisation des fonctions JavaScript en fonction de leur objectif (par exemple, fonctions de requêtes HTTP).
Interrogez la base de données de graphes Neo4j construite pour diverses analyses. JAW propose des parcours utilitaires pour l'analyse de flux de données, l'analyse de flux de contrôle, l'analyse d'accessibilité et la correspondance de motifs. Ces parcours peuvent être utilisés pour développer des analyses de sécurité personnalisées.
JAW inclut également des parcours intégrés pour détecter les vulnérabilités CSRF côté client, DOM Clobbering et de détournement de requêtes.
Les résultats seront stockés dans le même dossier que celui de l'entrée.
Le script d'installation repose sur les prérequis suivants :
gestionnaire de paquets npm (node js)python 3.xpipEnsuite, installez les dépendances nécessaires via :
$ ./install.sh
Pour des instructions d'installation détaillées, veuillez consulter ici.
Vous pouvez exécuter une instance du pipeline dans un écran d'arrière-plan via :
$ python3 -m run_pipeline --conf=config.yaml
Le CLI propose les options suivantes :
$ python3 -m run_pipeline -h
usage: run_pipeline.py [-h] [--conf FILE] [--site SITE] [--list LIST] [--from FROM] [--to TO]
Ce script exécute le pipeline de l'outil.
arguments optionnels :
-h, --help affiche ce message d'aide et quitte
--conf FILE, -C FILE fichier de configuration du pipeline (défaut : config.yaml)
--site SITE, -S SITE site web à tester ; remplace le fichier de configuration (défaut : None)
--list LIST, -L LIST liste de sites à tester ; remplace le fichier de configuration (défaut : None)
--from FROM, -F FROM la première entrée à considérer lorsqu'une liste de sites est fournie ; remplace le fichier de configuration (défaut : -1)
--to TO, -T TO la dernière entrée à considérer lorsqu'une liste de sites est fournie ; remplace le fichier de configuration (défaut : -1)
Config d'entrée : JAW attend un fichier de configuration .yaml en entrée. Voir config.yaml pour un exemple.