Fuzz-тестирование XML-парсера - PullRequest
8 голосов
/ 31 мая 2011

Я хочу провести фазз-тестирование XML-парсера и задаться вопросом, есть ли подходящие фаззеры.
Было бы неплохо не только генерировать случайный мусор, но и использовать преимущества существующей спецификации схемы, такой как XSD или DTD.

Ответы [ 3 ]

7 голосов
/ 09 июня 2011

Ниже приведены некоторые fuzzers XML, на которые я случайно наткнулся во время поиска несколько месяцев назад:

  • неопрятный . Похоже, что это не находится в активной разработке, с последним обновлением в 2007 году. (Проект больше не доступен на Sourceforge, для потомков см. archive.org для частичного содержимого , и packettorm для загрузки. Он был добавлен в Peach-1.0, но больше не отображается в источнике Peach-3.1 Community Edition )
  • Fuzzware . Кажется, что имеет приличную поддержку фаззинга на основе XSD.
  • персик . Проект Peach fuzzer поможет вам в создании допустимых XML-файлов, но, вероятно, не очень поможет, если вы захотите распознать парсер вместо приложения, использующего парсер. Это, безусловно, стоит попробовать, но имейте в виду, что создание модели данных может быть громоздким процессом, если вы не знакомы с различными структурами в XML. Соответствующий проект HotFuzz также стоит упомянуть здесь.
  • JBroFuzz ​​. Это довольно активно развивается. Я не смог найти учебник, описывающий его возможности фаззинга в XML (и SOAP). Вам может помочь тот факт, что он может использоваться в качестве одной только нечеткой библиотеки.
  • Коденомикон Defensics для XML . Это коммерческий фаззер. Отказ от ответственности : Я оценил Defensics в прошлом и нашел его подходящим для различных целей. Один синтаксический анализатор XML может быть размыт с помощью различных методов - вы можете подавать ему файлы, созданные фаззером, или выдавать HTTP-запросы и т. Д. Помните, что придется использовать разные подходы, если вам нужно распознать приложение вместо анализатора. ; Defensics поможет в выборе различных классов входов, которые вы хотите использовать для входов fuzz, чтобы вы могли ориентироваться на свой анализатор, или на ваше приложение, или на оба.
3 голосов
/ 11 июня 2011

Это может быть то, что вы считаете "генератором мусора", но я попрошу вас все равно проверить.

Радамса из Группа безопасного программирования Университета Оулу - это бесплатный фаззер общего назначения. Вы можете запутаться с этим действительно легко. Дайте ему несколько примеров файлов, и Radamsa создаст для вас нечеткие файлы.

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

Код можно найти по адресу Google Code .

1 голос
/ 14 октября 2015

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

...