Выбираем динамический анализатор: на что обратить внимание?

Выбираем динамический анализатор: на что обратить внимание?

Более трети современных приложений содержат опасные уязвимости. Для анализа их защищённости сегодня не обойтись без динамического сканера (Dynamic Application Security Testing, DAST), функциональность которого позволяет оперативно обнаружить и оценить проблемы в области безопасности. Рассказываем, на что обратить внимание при выборе такого инструмента.

 

 

 

 

 

  1. Введение
  2. Что такое DAST и как работает инструмент?
  3. На что обращать внимание при выборе инструмента DAST?
  4. Какой инструмент выбрать?
    1. 4.1. BurpSuite Enterprise
    2. 4.2. OWASP ZAP (Zed Attack Proxy)
    3. 4.3. PT BlackBox
  5. Выводы

Введение

По данным исследования Positive Technologies, в 2020-2021 годах злоумышленники имели возможность совершить атаку на 98 % веб-приложений. Потенциально они могут распространять вредоносные программы, перенаправлять пользователей на поддельные сайты или красть их персональные данные при помощи методов социальной инженерии. В 2020 году 66 % веб-приложений имели уязвимости высокой степени риска, в 2021 году этот показатель немного снизился и составил 62 %. При этом 72 % от общего числа всех найденных уязвимостей связаны с ошибками в коде.

Таким образом, большинство продуктов, выпускаемых на рынок, достаточно уязвимы, чтобы стать лёгкой добычей для хакеров. Конечно, создать идеально защищённое ПО невозможно, но сократить количество уязвимостей и повысить уровень безопасности продукта вполне реально. Для этого можно внедрить DevSecOps; процесс позволит связать разработку и безопасность, и в результате программное обеспечение будет проверяться и тестироваться на наличие уязвимостей на каждом этапе его создания.

Процесс DevSecOps весьма объёмен, он включает в себя различные инструменты ИБ. В этой статье Юрий Шабалин, ведущий архитектор Swordfish Security, поговорит о практике DAST, а именно — о том, как выбрать подходящий сканер для динамического анализа приложений. Вместе разберёмся, на какие параметры инструмента нужно обращать внимание и какие продукты сейчас доступны на рынке.

Что такое DAST и как работает инструмент?

Dynamic Application Security Testing (DAST) — это одна из практик безопасной разработки. В рамках DAST проводится автоматизированный анализ развёрнутого и функционирующего приложения. Динамический сканер проверяет все точки доступа по HTTP, имитирует внешние атаки с применением распространённых уязвимостей, моделирует случайные действия пользователей. Инструмент определяет, какие API есть у сервиса, отправляет проверочные запросы, например подставляет, где это возможно, неправильные данные (кавычки, разделительные знаки, спецсимволы и другое). Поиск уязвимостей происходит в результате анализа отправленного запроса и полученного ответа от сервиса, а также их сравнения с обычным запросом. Динамический сканер отправляет и анализирует большое количество запросов — это позволяет находить разные проблемы безопасности.

В 2021 году Anti-Malware.ru делал обзор рынка DAST в статье «Разработка безопасных приложений. Часть 2. Обзор рынка DAST 2021».

Большинство сканеров похожи по функциям и принципам работы. Основными их компонентами являются «паук» (spider) для составления карты приложений и анализатор.

«Паук» обходит каждую ссылку на всех страницах, до которых может добраться, изучая содержимое файлов, нажимая кнопки, перебирая по словарю потенциально возможные варианты названия директорий и страниц. Этот процесс называется краулингом (crawling), он позволяет оценить размер «поверхности» атаки, в том числе с учётом существующих способов взаимодействия с приложением.

Анализатор — компонент, который проводит непосредственно проверку приложения. Он работает в пассивном или активном режиме. В первом случае изучаются только те данные, которые ему присылает «паук». Во втором — анализатор отправляет запросы с некорректными данными по найденным «пауком» точкам и по другим местам, которых нет на страницах, но которые при этом могут использоваться в приложении. Затем компонент делает вывод о наличии уязвимости на основании ответов и реакции сервера.

На что обращать внимание при выборе инструмента DAST?

DAST реализует автоматический анализ приложения в динамике с использованием различных инструментов. Выбирать эти инструменты нужно с учётом конкретных параметров.

Качество сканирования

Это — соотношение найденных и пропущенных уязвимостей. С ходу понять, насколько качественно анализирует сканер, невозможно. Для этого нужно иметь хотя бы примерное представление о том, какие уязвимости есть в приложении, чтобы потом сравнить их с результатами сканирования. Существует несколько способов проверить инструмент:

  1. Если у вас есть приложение и вы уже проверяли его на уязвимости через программу вознаграждений за поиск изъянов (баг-баунти), тестирование на проникновение и другое, можно сравнить полученные результаты с итогами проверки сканером.
  2. Если приложения нет, можно использовать другое заранее уязвимое ПО, которое создаётся, как правило, для обучения. Нужно найти такую программу, которая по стеку технологий близка к вашим разработкам.

Для качества сканирования также определяющую роль играет количество ложных срабатываний: они засоряют результаты, к тому же среди них могут затеряться реальные ошибки. В этом случае намного проще определить, насколько качественно сканирует инструмент: достаточно проанализировать отчёт, разобрать срабатывания, посчитать примерно, какая доля от их общего числа — ложные, и на этой основе сделать вывод о точности сканера.

Краулинг

Если дополнительной информации о приложении нет и нужно проанализировать его «с нуля», важно понимать, как много путей и переходов получится собрать в нём, то есть насколько точным будет краулинг. Для этого нужно посмотреть настройки продукта. Необходимо выяснить, умеет ли он мониторить запросы от фронтенда к бэкенду, парсить, например, Swagger- или WSDL-приложения, находить ссылки в HTML или JS. Ещё стоит изучить процесс получения информации о приложении. Можно перед сканированием уточнить, какие именно API используются: нужно понять, что поможет инструменту совершить полноценную проверку приложения. В процессе выбора сканера полезно составить список того, что может импортировать каждый инструмент, и подумать, получится ли встроить это в процесс.

Скорость сканирования

Этот параметр также важен, особенно если проверки интегрированы в разработку: они могут тормозить процесс и в результате приводить к тратам времени и денег. Скорость сканирования во многом зависит от того, как оперативно приложение отвечает на запросы, сколько одновременных подключений оно способно обработать, и от ряда других факторов. Поэтому чтобы сравнить скорость работы различных инструментов, нужно запускать их применительно к одному и тому же ПО в примерно одинаковых условиях.

Детальная настройка

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

Существуют «умные» сканеры, которые сами подстраиваются под приложения. Но у таких инструментов всё равно должна быть ручная настройка, поскольку цели у проверок бывают разные. Например, иногда нужно просканировать приложение в нескольких вариантах, начиная тотальной проверкой и заканчивая поверхностным анализом; в таком случае ручная настройка точно будет кстати.

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

Интеграция

Чтобы динамический анализ был максимально эффективным, стоит интегрировать эту практику в процесс разработки и периодически запускать сканер во время сборки. Нужно заранее сформировать перечень того, что используется в процессе CI / CD, составить примерный план запуска инструмента. Это поможет проанализировать сканер с точки зрения интеграции и понять, насколько легко получится внедрить его в процесс разработки и удобно ли использовать его API.

Технологии

Выбирать сканер нужно с учётом технологий, которые использует ваша компания в разработке. Для этого можно проанализировать приложения и сформировать список технологий, языков и фреймворков, которые применяются в продуктах. Перечень может получиться весьма обширным, особенно если компания велика. Поэтому уместно выбрать всего несколько параметров в качестве критериев оценки сканеров:

  1. количество технологий и фреймворков, которые охватывает инструмент,
  2. возможность поддержки ключевых технологий, которые компания использует в своих самых важных сервисах.

Запись последовательности логина

Для динамических сканеров крайне важна технология записи последовательности логина, поскольку для входа в приложение обязательно нужно пройти аутентификацию. Но в этом процессе кроется много подводных камней, например хеширование пароля перед отправкой или его шифрование общим ключом на фронтенде; это далеко не весь список. Поэтому нужно заранее проверить, справится ли инструмент со всеми нюансами. Для этого необходимо выбрать максимально разные приложения и посмотреть, сможет ли сканер пройти в них этап логина.

Также нужно проверить, как поведёт себя инструмент при разлогинивании. Сканер в процессе анализа отправляет много запросов, в ответ на некоторые из них сервер может «выбросить» пользователя из системы. Инструмент должен заметить это и снова войти в приложение.

Обновления инструмента

Технологии постоянно развиваются, поэтому при выборе инструмента важно также учитывать, насколько часто выходят его обновления или новые версии сигнатур / паттернов или правил анализа. Стоит изучить эту информацию на сайте продукта или запросить её у вендора. Это покажет, внимательно ли разработчик следит за тенденциями и насколько актуальной будет ваша база проверок.

Также нужно выяснить, сможете ли вы влиять на развитие продукта и как разработчик обрабатывает запросы на добавление новых функций. Это покажет, насколько быстро в продукте будут появляться те функциональные возможности, которые вам нужны, и как устроено общение с вендором в рамках обновления опций.

Какой инструмент выбрать?

Совсем недавно на рынке был большой выбор инструментов от Acunetix, Netsparker, Rapid7, Nessus, AppScan, WebInspect и других вендоров, которые выпускают качественные продукты. В настоящее время из-за сложившихся политических условий инструментов для динамического анализа осталось не так много. Но эффективные решения всё же есть: часть из них созданы на базе Open Source, остальные являются коммерческими продуктами.

BurpSuite Enterprise

Инструмент разработала компания PortSwigger. У продукта есть полноценный REST API для взаимодействия и управления запуском сканирований, отправкой отчётов и многим другим. Сканирующим агентом является классический BurpSuite. Он запущен в режиме «headless», но имеет ограничения: например, с ним можно взаимодействовать только через управляющие команды с головного портала, а загрузить свои плагины не получится. Кроме этого, у продукта небольшая функциональность (по крайней мере, на момент, когда мы тестировали сканер). В целом, если инструмент правильно настроить, он может показать вполне эффективный результат.

OWASP ZAP (Zed Attack Proxy)

Этот очень популярный в мире инструмент создан в рамках деятельности сообщества OWASP, поэтому он полностью бесплатен. Для него есть разные SDK и API под различные языки программирования, поэтому можно пользоваться разработками OWASP или своими плагинами. Продукт имеет расширения для различных инструментов CI / CD, его можно запускать в разных режимах и управлять им программно, а следовательно, внедрять инструмент в процесс разработки. В то же время у сканера есть и минусы. Он создан на базе Open Source, поэтому качество проверки ниже, чем у энтерпрайз-решений. Ещё функциональность инструмента не очень обширна и глубока, но её можно дописать и улучшить.

PT BlackBox

Это — новая разработка компании Positive Technologies. У вендора уже давно есть облачный продукт PT BlackBox Scanner. Инструмент обладает полноценным REST API для управления сканированием, есть всё для детальной настройки параметров анализа. Недавно, в конце августа, компания выпустила «коробочную» редакцию продукта. До релиза мы успели протестировать бета-версию и можем сказать, что инструмент является достойной заменой разработкам зарубежных вендоров. Совсем скоро мы планируем дополнительно проверить вышедший продукт и сравнить его с другими инструментами.

Выводы

При выборе динамического анализатора стоит использовать отмеченные выше в этой статье критерии, но применять их нужно правильно. Каждая компания уникальна, имеет свои нюансы и особенности — всё это необходимо учитывать в связке со всеми критериями. Также нужно заранее определить свои потребности и понять, каких результатов вы хотите от инструмента. На рынке сейчас осталось не так много продуктов. С одной стороны, это плохо, с другой — не придётся слишком долго выбирать. Но, чтобы не ошибиться, нужно проводить полноценное тестирование различных вариантов, сравнивать их между собой и выбирать наилучшее решение с учётом потребностей компании и параметров качества.

Полезные ссылки: 
Anti-Malware Яндекс ДзенПодписывайтесь на канал "Anti-Malware" в Яндекс Дзен, чтобы первыми узнавать о новостях и наших эксклюзивных материалах по информационной безопасности.

RSS: Новые статьи на Anti-Malware.ru