Эксперт компании SolidSoft Даниил Сигалов рассказал про подход к анализу JavaScript-кода в сканере веб-приложений SolidWall DAST на конференции Positive Hack Days в Москве

.



Даниил Сигалов, аналитик безопасности и эксперт компании SolidSoft, выступил на международном форуме Positive Hack Days в Москве. Он представил результаты исследований команды SolidSoft и рассказал об анализе клиентского JavaScript‑кода для обнаружения HTTP‑эндпоинтов.

Разработанный алгоритм анализа JavaScript‑кода уже внедрен в сканер веб‑приложений SolidWall DAST, а также используется специалистами направления Offensive Security для ручного анализа защищенности.

Группе Даниила Сигалова удалось автоматизировать процесс формирования атакующих запросов для целей, с которыми другие технологии ранее не справлялись или делали это менее успешно.

Написать собственный алгоритм команду SolidSoft вынудили недостатки современных анализаторов  

Предварительно команда изучила доступные для исследования сканеры и анализаторы JS. Специалисты пришли к выводу, что большинство из существующих сканеров «из коробки» выделяют эндпоинты из JavaScript‑кода менее эффективно.

На реальном современном JS‑коде статические научные анализаторы работают очень долго или завершают работу с ошибкой. Другие анализаторы характеризуются излишней абстрактностью: частично‑конкретные данные представлены без необходимой детализации. Кроме того, изученные анализаторы не были способны работать с «мертвым» кодом, который нельзя вызвать из интерфейса — т.е. с кодом из других частей сайта или с кодом, выполняемым только с правами администратора.

По результатам тестов команда приняла решение написать собственный алгоритм — легкий, с высокой скоростью отработки, а также без завышенных требований к оборудованию, на котором он будет выполняться.

Анализатор SolildSoft выявляет уязвимости в эндпоинтах, которые невозможно найти динамическими методами анализа

Созданный командой SolildSoft анализатор основан на статическом методе. Выявление эндпойнтов осуществляется напрямую с веб‑страницы.

Написанный алгоритм был протестирован на реальных веб‑страницах, чтобы выяснить, какие эндпойнты можно выявить, и какие уязвимости в выявленных эндпойнтах можно обнаружить сканером веб-приложений. Эксперимент прошел успешно. Анализатор помог выявить ряд уязвимостей в рамках программы bug‑bounty, а также обнаружить ряд CVE, включая 0‑day.

Тесты доказали, что статический анализ может работать точнее при условии интеграции с динамическим. При этом, ни один из методов не является панацеей.

Что касается создания анализаторов, то при отсутствии надежной рабочей технологии, исследователям видится правильным делать простые, но высокопроизводительные алгоритмы, и только потом идти в сторону их усложнения и совершенствования.

Запись выступления: Анализ клиентского JavaScript‑кода для обнаружения HTTP‑эндпоинтов, Даниил Сигалов.