gardatech / bugbane

tools for CI fuzzing automation
Apache License 2.0
26 stars 3 forks source link

Multitarget support #6

Closed fuzzah closed 12 months ago

fuzzah commented 2 years ago

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

fuzzah commented 12 months ago

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

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

  1. имя фаззинг-цели = имя бинарника на диске, а синтаксис запуска бинарников - одинаковый (как в фаззинге libreoffice или python);
  2. имя фаззинг-цели нужно вставить в нужное место конфига тестируемой программы (понадобится шаблон конфига со строкой, которую нужно заменять на имя фаззинг-цели), здесь тоже подразумевается одинаковый синтаксис запуска;
  3. имя фаззинг-цели нужно передавать аргументом запуска одному и тому же бинарнику.

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

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

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