Аннотация:
Рассматривается задача обнаружения серверных точек взаимодействия в динамических веб-приложениях в контексте анализа защищенности веб-приложений в модели «черного ящика». Предложен метод повышения полноты обнаружения серверных интерфейсов на основе статического анализа клиентского кода JavaScript для поиска в нем функций, которые порождают HTTP-запросы к серверной стороне приложения, и определения возможных значений параметров найденных функций. В контексте решаемой задачи статический анализ позволяет находить такие функции в том числе в недостижимом или мёртвом JavaScript-коде, что в ряде случаев позволяет обнаружить серверные интерфейсы, скрытые для динамического анализа. Проведено экспериментальное исследование полноты выявления серверных точек взаимодействия предложенным алгоритмом на синтетическом веб-приложении, уязвимом к SQL-инъекции, и сравнение с популярными сканерами защищенности веб-приложений. Показано, что использование статического анализа клиентского JavaScript-кода в дополнение к традиционному динамическому краулингу приложений может значительно повысить полноту выявления серверных точек взаимодействия в веб-приложениях.