Принцип работы фаззера

Фаззер проверяет 255 аномальных байт: от 0x01 до 0xFF. Один или несколько таких байт, вставленных в элементы запроса, могут привести к аномальному поведению целевого приложения.

Вместо индивидуальной проверки каждого единичного байта, фаззер отправляет приложению одну или несколько последовательностей аномальных байт (полезных нагрузок, payloads) заданной длины путем модификации значения point’а.

Фаззер модифицирует значения разрешенных для обработки point’ов путем:

  • Вставки полезной нагрузки в:
    • начало значения;
    • конец значения;
    • случайное место значения.
  • Замены значения полезной нагрузкой. Фаззер может заменить:
    • случайный сегмент длины М в значении;
    • первые M байт значения;
    • последние M байт значения;
    • значение целиком.

При настройке фаззера задается размер полезной нагрузки M (в байтах), содержащейся в запросе от FAST к приложению. Это влияет на:

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

Если одна из отправленных полезных нагрузок приведет к возникновению аномалии, то фаззер отправит приложению отдельные запросы для каждого единичного байта из этой полезной нагрузки и таким образом найдет один или несколько конкретных байт, приводящих к аномальному поведению:

Схема процесса поиска аномальных байт

Все обнаруженные байты приводятся в описании аномалии:

Описание аномалии

Пример логики работы фаззера.

Пусть полезная нагрузка размером 250 байт будет заменять первые 250 байт значения некоторого point’а.

При выбранном размере полезной нагрузки фаззер создаст два запроса для отправки всех известных ему аномальных байт: один с полезной нагрузкой 250 байт и один с полезной нагрузкой 5 байт.

Исходное значение point’а в базовом запросе будет модифицировано следующим образом:

  • если длина значения более 250 байт: сначала будут заменены первые 250 байт значения на 250 байт полезной нагрузки (первый запрос), затем — первые 250 байт значения на 5 байт полезной нагрузки;
  • если длина значения менее 250 байт: значение будет заменено целиком на 250 байт (первый запрос) и 5 байт (второй запрос) полезной нагрузки.

Предположим, что аномалию вызвала полезная нагрузка ABCDE длиной 5 байт, замещающая первые 250 байт очень длинного значения point’a _250-bytes-long-head_qwerty (то есть аномалию вызвал тестовый запрос, содержащий в себе этот point со значением ABCDEqwerty).

В таком случае фаззер создаст пять дополнительных запросов для проверки каждого байта со следующими значениями point’а:

  • Aqwerty,
  • Bqwerty,
  • Cqwerty,
  • Dqwerty,
  • Eqwerty.

Один или несколько таких запросов вызовут аномалию еще раз, и тогда фаззер сформирует список найденных аномальных байт (например, A, C).

Далее будет рассмотрена настройка фаззера, в том числе описание правил, по которым определяется наличие аномалии или ее отсутствие.

Фаззер FAST за один цикл работы (фаззинг, fuzzing) обрабатывает один point, разрешенный политикой. В зависимости от правил остановки фаззинга будут последовательно обработаны один или несколько point’ов, разрешенных политикой.

results matching ""

    No results matching ""