-
Notifications
You must be signed in to change notification settings - Fork 11
Description
В настоящий момент отсутствует единый формат фаззинг-обертки (собственно и едины стандарт фаззера также отсутствует). Нужно добавить в Futag возможность порождать фаззинг-обертки под различные системы фаззинга.
Технические требования
- Выбор вида генерации обертки должен осуществляться параметром в классе Generator. Параметр - одно из значений Enum. В настоящий момент следует предусмотреть четыре вида оберток:
1.а. Стандартная обертка libfuzzer / Sydr. Данная обертка является значением по умолчанию.
1.b. Стандартная обертка AFL++ / Crusher.
Входной буффер передаётся в main() через stdin и далее, после преобразования, в тестируемую функцию.
1.c. Стандартная обертка AFL++ / Crusher Persistence Mode. Пример здесь:
Входной буффер передаётся в main() через stdin и далее, после преобразования, в тестируемую функцию, которая обернута в макрос AFL_LOOP.
https://github.com/AFLplusplus/AFLplusplus/blob/stable/instrumentation/README.persistent_mode.md#4-persistent-mode
1.d. Стандартная обертка AFL++ Persistence Mode with Shared Buffer. Пример здесь: https://github.com/AFLplusplus/AFLplusplus/blob/stable/instrumentation/README.persistent_mode.md#2-tldr с учётом https://github.com/AFLplusplus/AFLplusplus/blob/stable/instrumentation/README.persistent_mode.md#5-shared-memory-fuzzing
- В качестве основной версии AFL++ рассматриваем текущую (ver. 4.02с). В качестве основного компилятора для AFL-режима - afl-clang-fast (желательно afl-clang-lto).