Логика работы расширений

Логика работы расширения описывается несколькими фазами:

  1. Collect,
  2. Match,
  3. Modify,
  4. Generate,
  5. Send,
  6. Detect.

FAST DSL позволяет описать с помощью комбинации этих фаз два типа расширений:

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

    Далее в руководстве такой тип расширений будет называться «модифицирующее расширение».

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

    Далее в руководстве такой тип расширений будет называться «немодифицирующее расширение».

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

Фаза Detect является обязательной для любого типа расширений — в эту фазу поступают ответы целевого приложения на запросы. В зависимости от ответов определяется наличие или отсутствие уязвимости, для поиска которой создается расширение. Эта информация от фазы Detect поступает в облако Валарм.

Синтаксис описания элементов запроса

При создании расширения FAST вам необходимо понимать структуру запроса к приложению и ответа от приложения, чтобы корректно описывать элементы запроса, с которыми необходимо работать, с помощью point'ов.

Более подробная информация о синтаксисе описания элементов запроса доступна здесь.

Как работает модифицирующее расширение

При работе модифицирующего расширения базовый запрос последовательно проходит через фазы Collect, Match, Modify и Generate, которые не являются обязательными и могут отсутствовать в расширении. В результате прохождения этих фаз будут сформированы один или несколько тестовых запросов. Эти запросы будут отправлены целевому приложению, чтобы проверить приложение на уязвимости.

Расширение без опциональных фаз

Если к базовому запросу не применять опциональные фазы, то итоговый тестовый запрос будет совпадать с базовым запросом.

Обзор фаз модифицирующего расширения

Если базовый запрос соответствует политике тестирования, то он содержит один или несколько параметров, которые можно обрабатывать. Расширение FAST последовательно перебирает весь набор обрабатываемых параметров. Для параметров применяются все фазы, которые присутствуют в расширении и создаются тестовые запросы, которые затем выполняются. Затем расширение переходит к обработке следующего параметра, пока не обработает все параметры запроса (на изображении в качестве примера показан POST-запрос с POST-параметрами):

Процесс работы модифицирующего расширения

Как работает немодифицирующее расширение

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

Поскольку в FAST-ноду может поступить несколько базовых запросов с одинаковым заголовком Host, то чтобы избежать отправки одинаковых тестовых запросов, они проходят через неявно присутствующую фазу Collect, которая отсеивает все запросы с неуникальным заголовком Host при помощи условия уникальности.

Обзор фаз немодифицирующего расширения

При работе немодифицирующего расширения один или несколько предварительно созданных тестовых запросов отправляются хосту, указанному в заголовке Host каждого базового запроса, поступившего в фазу Send:

Процесс работы немодифицирующего расширения

Обработка запроса расширениями

Обработка запроса несколькими расширениями

Расширений может быть несколько. Каждый базовый запрос будет пропущен через все подключенные к FAST-ноде расширения.

Использование расширений обработчиками

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

Количество запросов, которое FAST-нода может обрабатывать параллельно, зависит от количества обработчиков. Количество обработчиков задается переменной среды окружения WORKERS при запуске Docker-контейнера FAST-ноды (значение переменной по умолчанию — 10).

Подробнее о политиках тестирования

Более подробно работа с политиками тестирования описана здесь.

results matching ""

    No results matching ""

    results matching ""

      No results matching ""