Американский fuzzy lop (фаззер) - American fuzzy lop (fuzzer)

Американский пушистый лопух
Afl-fuzz американского fuzzy lop работает по тестовой программе
Afl-fuzz американского fuzzy lop работает по тестовой программе
Разработчики)Михал Залевски
изначальный выпуск12 ноября 2013 г.; 7 лет назад (2013-11-12)
Стабильный выпуск
2.56b / 26 сентября 2019 г.; 14 месяцев назад (2019-09-26)[1]
Репозиторий Отредактируйте это в Викиданных
Написано вC, сборка
Операционная системаКроссплатформенность
ТипФаззер
ЛицензияЛицензия Apache  2.0
Интернет сайтlcamtuf.coredump.cx/ afl/

Американский пушистый лопух это бесплатно программное обеспечение фаззер что нанимает генетические алгоритмы чтобы эффективно увеличивать покрытие кода из контрольные примеры. Пока это помогло в обнаружении значительных программные ошибки в десятках крупных проектов свободного программного обеспечения, в том числе Сервер X.Org,[2] PHP,[3] OpenSSL,[4][5] pngcrush, трепать,[6] Fire Fox,[7] СВЯЗЫВАТЬ,[8][9] Qt,[10] и SQLite.[11]

американский пушистый лопухs исходный код публикуется на GitHub. Его название - отсылка к породе кроликов, Американский Fuzzy Lop.

Типичное использование

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

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

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

Функции

Fuzzing двигатель

Логотип AFL из нечеткого ввода, сшитый вместе как одна анимация.[12]

Фаззинг двигателя Американский пушистый лопух использует несколько алгоритмов, цель которых - вызвать неожиданное поведение, в том числе перевороты битов или замену байтов входного файла различными целыми числами, которые могут запускать крайние случаи.[13] Кроме того, он может генерировать тестовые примеры на основе примеров ключевых слов, что помогает во время фаззинга программ, использующих текстовую грамматику, таких как SQLite.[14] Созданные тестовые примеры, которые проверяют различные части программного кода, могут позже использоваться в качестве входных данных для более специализированных диагностических программ. Во время фаззинга может быть обнаружено зависание, если процесс не завершается в течение указанного тайм-аута, и предполагается сбой, когда обработчик сигналов убивает процесс.

Нечеткий ввод может подаваться в тестируемую программу либо через стандартный ввод, либо как входной файл, указанный в командной строке процесса. Нечеткие сетевые программы в настоящее время напрямую не поддерживаются, хотя в некоторых случаях существуют возможные решения этой проблемы.[15]

Характеристики производительности

Одна из проблем Американский пушистый лопух Приходилось решать, задействовав эффективное создание сотен процессов в секунду. Помимо оригинального движка, который создавал каждый процесс с нуля, Американский пушистый лопух предлагает движок по умолчанию, который сильно зависит от вилка системный вызов.[16] Это может быть дополнительно ускорено за счет использования отложенного режима forkserver LLVM или аналогичного постоянного режима, но это происходит за счет необходимости изменения тестируемой программы.[17] Также, Американский пушистый лопух поддерживает фаззинг той же программы по сети.

Пользовательский интерфейс

американский пушистый лоп имеет красочный Интерфейс командной строки который отображает статистику в реальном времени о процессе фаззинга. Различные настройки могут запускаться либо параметрами командной строки, либо переменные среды. Кроме того, программы могут считывать статистику времени выполнения из файлов в машиночитаемом формате.

Служебные программы

В добавление к afl-fuzz и инструменты, которые можно использовать для двоичного инструментария, Американский пушистый лопух содержит служебные программы, предназначенные для мониторинга процесса фаззинга. Кроме того, есть afl-cmin и afl-tmin, который можно использовать для минимизации тестового набора и тестового корпуса. Это может быть полезно, когда тестовые примеры, сгенерированные afl-fuzz будет использоваться другими фаззерами.

Рекомендации

  1. ^ "Релизы - google / AFL". Получено 7 октября 2019 - через GitHub.
  2. ^ «Консультативный-2015-03-17». x.org.
  3. ^ «НВД - Деталь». nist.gov.
  4. ^ «НВД - Деталь». nist.gov.
  5. ^ «НВД - Деталь». nist.gov.
  6. ^ «CVE - CVE-2014-6278». mitre.org.
  7. ^ «CVE - CVE-2014-8637». mitre.org.
  8. ^ «Как провести фаззинг сервера с помощью American Fuzzy Lop». Быстро.
  9. ^ «CVE - CVE-2015-5477». mitre.org.
  10. ^ "[Объявление] Рекомендации по безопасности проекта Qt - Множественные уязвимости в обработке формата изображения Qt". qt-project.org.
  11. ^ "Как тестируется SQLite # 4.1.1. SQL Fuzz с использованием американского фаззера Fuzzy Lop". sqlite.org.
  12. ^ Залевский, Михал (27 февраля 2015 г.). «Логотип для afl-fuzz». afl-пользователи | Группы Google. Получено 2019-07-25.
  13. ^ «Стратегии двоичного фаззинга: что работает, а что нет». lcamtuf.blogspot.com.
  14. ^ «Поиск ошибок в SQLite - простой способ». lcamtuf.blogspot.com.
  15. ^ Технион. "Fuzzing nginx - поиск уязвимостей с помощью afl-fuzz". lolware.net.
  16. ^ "Нечеткость случайных программ без execve ()". lcamtuf.blogspot.com.
  17. ^ "Менее известные особенности afl-fuzz". Блог lcamtuf. 20 мая 2015. Получено 27 февраля 2020.

дальнейшее чтение