Американский fuzzy lop (фаззер) - American fuzzy lop (fuzzer)
Эта статья слишком полагается на Рекомендации к основные источники.Май 2016) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
Эта статья содержит контент, который написан как Реклама.Октябрь 2019) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
Afl-fuzz американского fuzzy lop работает по тестовой программе | |
Разработчики) | Михал Залевски |
---|---|
изначальный выпуск | 12 ноября 2013 г. |
Стабильный выпуск | 2.56b / 26 сентября 2019 г.[1] |
Репозиторий | |
Написано в | C, сборка |
Операционная система | Кроссплатформенность |
Тип | Фаззер |
Лицензия | Лицензия Apache 2.0 |
Интернет сайт | lcamtuf |
Американский пушистый лопух это бесплатно программное обеспечение фаззер что нанимает генетические алгоритмы чтобы эффективно увеличивать покрытие кода из контрольные примеры. Пока это помогло в обнаружении значительных программные ошибки в десятках крупных проектов свободного программного обеспечения, в том числе Сервер 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 двигатель
Фаззинг двигателя Американский пушистый лопух использует несколько алгоритмов, цель которых - вызвать неожиданное поведение, в том числе перевороты битов или замену байтов входного файла различными целыми числами, которые могут запускать крайние случаи.[13] Кроме того, он может генерировать тестовые примеры на основе примеров ключевых слов, что помогает во время фаззинга программ, использующих текстовую грамматику, таких как SQLite.[14] Созданные тестовые примеры, которые проверяют различные части программного кода, могут позже использоваться в качестве входных данных для более специализированных диагностических программ. Во время фаззинга может быть обнаружено зависание, если процесс не завершается в течение указанного тайм-аута, и предполагается сбой, когда обработчик сигналов убивает процесс.
Нечеткий ввод может подаваться в тестируемую программу либо через стандартный ввод, либо как входной файл, указанный в командной строке процесса. Нечеткие сетевые программы в настоящее время напрямую не поддерживаются, хотя в некоторых случаях существуют возможные решения этой проблемы.[15]
Характеристики производительности
Одна из проблем Американский пушистый лопух Приходилось решать, задействовав эффективное создание сотен процессов в секунду. Помимо оригинального движка, который создавал каждый процесс с нуля, Американский пушистый лопух предлагает движок по умолчанию, который сильно зависит от вилка
системный вызов.[16] Это может быть дополнительно ускорено за счет использования отложенного режима forkserver LLVM или аналогичного постоянного режима, но это происходит за счет необходимости изменения тестируемой программы.[17] Также, Американский пушистый лопух поддерживает фаззинг той же программы по сети.
Пользовательский интерфейс
американский пушистый лоп имеет красочный Интерфейс командной строки который отображает статистику в реальном времени о процессе фаззинга. Различные настройки могут запускаться либо параметрами командной строки, либо переменные среды. Кроме того, программы могут считывать статистику времени выполнения из файлов в машиночитаемом формате.
Служебные программы
В добавление к afl-fuzz
и инструменты, которые можно использовать для двоичного инструментария, Американский пушистый лопух содержит служебные программы, предназначенные для мониторинга процесса фаззинга. Кроме того, есть afl-cmin
и afl-tmin
, который можно использовать для минимизации тестового набора и тестового корпуса. Это может быть полезно, когда тестовые примеры, сгенерированные afl-fuzz
будет использоваться другими фаззерами.
Рекомендации
- ^ "Релизы - google / AFL". Получено 7 октября 2019 - через GitHub.
- ^ «Консультативный-2015-03-17». x.org.
- ^ «НВД - Деталь». nist.gov.
- ^ «НВД - Деталь». nist.gov.
- ^ «НВД - Деталь». nist.gov.
- ^ «CVE - CVE-2014-6278». mitre.org.
- ^ «CVE - CVE-2014-8637». mitre.org.
- ^ «Как провести фаззинг сервера с помощью American Fuzzy Lop». Быстро.
- ^ «CVE - CVE-2015-5477». mitre.org.
- ^ "[Объявление] Рекомендации по безопасности проекта Qt - Множественные уязвимости в обработке формата изображения Qt". qt-project.org.
- ^ "Как тестируется SQLite # 4.1.1. SQL Fuzz с использованием американского фаззера Fuzzy Lop". sqlite.org.
- ^ Залевский, Михал (27 февраля 2015 г.). «Логотип для afl-fuzz». afl-пользователи | Группы Google. Получено 2019-07-25.
- ^ «Стратегии двоичного фаззинга: что работает, а что нет». lcamtuf.blogspot.com.
- ^ «Поиск ошибок в SQLite - простой способ». lcamtuf.blogspot.com.
- ^ Технион. "Fuzzing nginx - поиск уязвимостей с помощью afl-fuzz". lolware.net.
- ^ "Нечеткость случайных программ без execve ()". lcamtuf.blogspot.com.
- ^ "Менее известные особенности afl-fuzz". Блог lcamtuf. 20 мая 2015. Получено 27 февраля 2020.
дальнейшее чтение
- С. К. Ча, М. Ву, Д. Брамли, «Программно-адаптивный мутационный фаззинг», in Proceedings of the 36th IEEE Symposium on Security and Privacy, 2015. (в печати)
- Поваренная книга по мультисистемам и интернет-безопасности, Hors-Serie No. 11 "Outils de sécurité", стр. 36, «American Fuzzy Lop», Кевин Денис, июнь 2015 г. [1]
- "Фазз и струнные (lwn.net)"
- «Фаззинг (на) FreeBSD - (в основном) автоматическое обнаружение ошибок с помощью security / afl» - презентация на FOSDEM
- «Испытания с двумя ракетами с поиском отказа: фаззинг и испытания на основе свойств» - презентация на EuroPython 2015.
- "Stagefright: Scary Code in the Heart of Android" презентация на Брифинги Black Hat
- "Фаззинг-проект"
- «Грамматический вывод и языковые рамки для LANGSEC»
- «Нечеткий код с AFL», Питер Гутманн, логин, Vol. 41, No. 2, лето 2016, [2]
- «AFL ++», усовершенствованный форк AFL