
JAW: Графовая среда анализа безопасности для клиентского JavaScript
J A W
Веб-сайт | Документация | Установка | Краулер | Быстрый старт Docker (Пример)
Открытая реализация прототипа графов свойств для JavaScript на основе парсера esprima и спецификации EsTree SpiderMonkey Spec. JAW может использоваться для анализа клиентской части веб-приложений и программ на JavaScript.
Этот проект лицензирован в соответствии с GNU AFFERO GENERAL PUBLIC LICENSE V3.0. Дополнительную информацию см. здесь.
У JAW есть веб-сайт на Github Pages, доступный по адресу https://soheilkhodayari.github.io/JAW/.
Примечания к выпуску:
JAW-V2.JAW-V1.Архитектура JAW показана ниже.
JAW можно использовать двумя способами:
Анализ произвольного JavaScript: Используйте JAW для моделирования и анализа любой программы на JavaScript, указав путь к файлу программы.
Анализ веб-приложения: Анализируйте веб-приложение, указав один начальный URL.
Используйте собранные веб-ресурсы для создания Гибридного Программного Графа (HPG), который будет импортирован в базу данных Neo4j.
При необходимости передайте модулю построения HPG отображение семантических типов на пользовательские токены языка JavaScript, что облегчает категоризацию функций JavaScript по их назначению (например, функции HTTP-запросов).
Запрашивайте построенную базу данных графа Neo4j для различных анализов. JAW предоставляет утилитарные обходы для анализа потоков данных, управления потоками, анализа достижимости и сопоставления с шаблонами. Эти обходы можно использовать для разработки пользовательских анализов безопасности.
JAW также включает встроенные обходы для обнаружения уязвимостей client-side CSRF, DOM Clobbering и перехвата запросов.
Результаты будут сохранены в той же папке, что и входные данные.
Сценарий установки требует следующие предварительные условия:
npm package manager (node js)python 3.xpipПосле этого установите необходимые зависимости с помощью:
$ ./install.sh
Инструкции по подробной установке см. здесь.
Вы можете запустить экземпляр конвейера в фоновом экране с помощью:
$ python3 -m run_pipeline --conf=config.yaml
CLI предоставляет следующие параметры:
$ 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)
Входной конфигурационный файл: JAW ожидает на входе .yaml конфигурационный файл. Пример см. в config.yaml.
Подсказка. В конфигурационном файле указаны различные этапы (например, сканирование, статический анализ и т.д.), которые можно включать или отключать для каждого класса уязвимостей. Это позволяет запускать компоненты инструмента по отдельности или в другом порядке (например, сначала сканировать все веб-приложения, затем проводить анализ безопасности).
Для запуска быстрого примера, демонстрирующего создание графа свойств и выполнение Cypher-запросов, выполните:
$ python3 -m analyses.example.example_analysis --input=$(pwd)/data/test_program/test.js