
JAW: Un framework di analisi della sicurezza basato su grafi per JavaScript lato client.
J A W
Sito web | Documentazione | Configurazione | Crawler | Avvio rapido Docker (Esempio)
Un'implementazione open-source prototipale di grafi di proprietà per JavaScript basata sul parser esprima e sulla specifica EsTree SpiderMonkey Spec. JAW può essere utilizzato per analizzare il lato client di applicazioni web e programmi basati su JavaScript.
Questo progetto è concesso in licenza GNU AFFERO GENERAL PUBLIC LICENSE V3.0. Vedi qui per maggiori informazioni.
JAW ha un sito web su Github Pages disponibile all'indirizzo https://soheilkhodayari.github.io/JAW/.
Note di rilascio:
JAW-V2.JAW-V1.L'architettura di JAW è mostrata di seguito.
JAW può essere utilizzato in due modi distinti:
Analisi arbitraria di JavaScript: utilizza JAW per modellare e analizzare qualsiasi programma JavaScript specificando il path del file system del programma.
Analisi di applicazioni web: analizza un'applicazione web fornendo un singolo URL seed.
Utilizza le risorse web raccolte per creare un Hybrid Program Graph (HPG), che verrà importato in un database Neo4j.
Opzionalmente, fornisci al modulo di costruzione HPG una mappatura di tipi semantici a token personalizzati del linguaggio JavaScript, facilitando la categorizzazione delle funzioni JavaScript in base al loro scopo (ad esempio, funzioni di richiesta HTTP).
Interroga il database grafico Neo4j costruito per varie analisi. JAW offre attraversamenti di utilità per l'analisi del flusso di dati, l'analisi del flusso di controllo, l'analisi di raggiungibilità e il pattern matching. Questi attraversamenti possono essere utilizzati per sviluppare analisi di sicurezza personalizzate.
JAW include anche attraversamenti integrati per rilevare vulnerabilità di CSRF lato client, DOM Clobbering e dirottamento delle richieste.
Gli output verranno salvati nella stessa cartella dell'input.
Lo script di installazione si basa sui seguenti prerequisiti:
npm package manager (node js)python 3.xpip package managerSuccessivamente, installa le dipendenze necessarie tramite:
$ ./install.sh
Per istruzioni di installazione dettagliate, consulta qui.
Puoi eseguire un'istanza del pipeline in uno screen in background tramite:
$ python3 -m run_pipeline --conf=config.yaml
La CLI fornisce le seguenti opzioni:
$ python3 -m run_pipeline -h
usage: run_pipeline.py [-h] [--conf FILE] [--site SITE] [--list LIST] [--from FROM] [--to TO]
This script runs the tool pipeline.
optional arguments:
-h, --help show this help message and exit
--conf FILE, -C FILE pipeline configuration file. (default: config.yaml)
--site SITE, -S SITE website to test; overrides config file (default: None)
--list LIST, -L LIST site list to test; overrides config file (default: None)
--from FROM, -F FROM the first entry to consider when a site list is provided; overrides config file (default: -1)
--to TO, -T TO the last entry to consider when a site list is provided; overrides config file (default: -1)
Config di input: JAW si aspetta un file di configurazione .yaml come input. Vedi config.yaml per un esempio.
Suggerimento. Il file di configurazione specifica diverse fasi (ad esempio, crawling, analisi statica, ecc.) che possono essere abilitate o disabilitate per ogni classe di vulnerabilità. Ciò consente di eseguire i blocchi dello strumento singolarmente o in un ordine diverso (ad esempio, prima eseguire il crawling di tutte le webapp, poi condurre l'analisi di sicurezza).