
JAW: Um Framework de Análise de Segurança Baseado em Grafos para JavaScript no Lado do Cliente
J A W
Website | Documentação | Configuração | Crawler | Início Rápido Docker (Exemplo)
Uma implementação protótipo de código aberto de grafos de propriedade para JavaScript baseada no analisador esprima e na EsTree SpiderMonkey Spec. O JAW pode ser usado para analisar o lado cliente de aplicações web e programas baseados em JavaScript.
Este projeto é licenciado sob GNU AFFERO GENERAL PUBLIC LICENSE V3.0. Consulte aqui para mais informações.
O JAW possui um site no Github Pages disponível em https://soheilkhodayari.github.io/JAW/.
Notas de Lançamento:
JAW-V2.JAW-V1.A arquitetura do JAW é mostrada abaixo.
O JAW pode ser usado de duas maneiras distintas:
Análise Arbitrária de JavaScript: Utilize o JAW para modelar e analisar qualquer programa JavaScript especificando o caminho do sistema de arquivos do programa.
Análise de Aplicação Web: Analise uma aplicação web fornecendo uma única URL inicial.
Use os recursos web coletados para criar um Grafo de Programa Híbrido (HPG), que será importado para um banco de dados Neo4j.
Opcionalmente, forneça ao módulo de construção do HPG um mapeamento de tipos semânticos para tokens de linguagem JavaScript personalizados, facilitando a categorização de funções JavaScript com base em seu propósito (por exemplo, funções de requisição HTTP).
Consulte o banco de dados de grafos Neo4j construído para várias análises. O JAW oferece travessias utilitárias para análise de fluxo de dados, análise de fluxo de controle, análise de alcançabilidade e correspondência de padrões. Essas travessias podem ser usadas para desenvolver análises de segurança personalizadas.
O JAW também inclui travessias embutidas para detectar CSRF no lado cliente, DOM Clobbering e vulnerabilidades de sequestro de requisição.
As saídas serão armazenadas na mesma pasta da entrada.
O script de instalação depende dos seguintes pré-requisitos:
npm package manager (node js)python 3.xpipEm seguida, instale as dependências necessárias via:
$ ./install.sh
Para instruções de instalação detalhadas, consulte aqui.
Você pode executar uma instância do pipeline em uma tela de fundo via:
$ python3 -m run_pipeline --conf=config.yaml
A CLI fornece as seguintes opções:
$ 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 de Entrada: O JAW espera um arquivo de configuração .yaml como entrada. Veja config.yaml para um exemplo.
Dica. O arquivo de configuração especifica diferentes passos (por exemplo, rastreamento, análise estática, etc.) que podem ser ativados ou desativados para cada classe de vulnerabilidade. Isso permite executar os blocos de construção da ferramenta individualmente, ou em uma ordem diferente (por exemplo, rastrear todas as aplicações web primeiro, depois realizar a análise de segurança).