
JAW: Un Framework de Análisis de Seguridad Basado en Grafos para JavaScript del Lado del Cliente
J A W
Sitio web | Documentación | Instalación | Rastreador | Inicio rápido Docker (Ejemplo)
Una implementación prototipo de código abierto de grafos de propiedades para JavaScript basada en el analizador esprima y en la especificación EsTree SpiderMonkey Spec. JAW se puede utilizar para analizar el lado cliente de aplicaciones web y programas basados en JavaScript.
Este proyecto está licenciado bajo GNU AFFERO GENERAL PUBLIC LICENSE V3.0. Consulte aquí para más información.
JAW tiene un sitio web en Github Pages disponible en https://soheilkhodayari.github.io/JAW/.
Notas de publicación:
JAW-V2.JAW-V1.La arquitectura de JAW se muestra a continuación.
JAW se puede utilizar de dos maneras distintas:
Análisis de JavaScript arbitrario: Utilice JAW para modelar y analizar cualquier programa JavaScript especificando la ruta del sistema de archivos del programa.
Análisis de aplicaciones web: Analice una aplicación web proporcionando una única URL semilla.
Utilice los recursos web recolectados para crear un Grafo de Programa Híbrido (HPG), que se importará a una base de datos Neo4j.
Opcionalmente, suministre al módulo de construcción del HPG un mapeo de tipos semánticos a tokens personalizados del lenguaje JavaScript, facilitando la categorización de funciones JavaScript según su propósito (por ejemplo, funciones de petición HTTP).
Consulte la base de datos de grafos Neo4j construida para diversos análisis. JAW ofrece recorridos utilitarios para análisis de flujo de datos, análisis de flujo de control, análisis de alcanzabilidad y emparejamiento de patrones. Estos recorridos se pueden utilizar para desarrollar análisis de seguridad personalizados.
JAW también incluye recorridos integrados para detectar vulnerabilidades de CSRF del lado cliente, DOM Clobbering y secuestro de peticiones.
Las salidas se almacenarán en la misma carpeta que la entrada.
El script de instalación requiere los siguientes prerrequisitos:
npm package manager (node js)python 3.xpip package managerDespués, instale las dependencias necesarias mediante:
$ ./install.sh
Para instrucciones de instalación detalladas, consulte aquí.
Puede ejecutar una instancia del pipeline en una pantalla de fondo mediante:
$ python3 -m run_pipeline --conf=config.yaml
La CLI ofrece las siguientes opciones:
$ 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)
Configuración de entrada: JAW espera un archivo de configuración .yaml como entrada. Consulte config.yaml para ver un ejemplo.