~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ 4CD5BF0D59ECDE63F1668EB9F4C63032__1710533820 ✰
Заголовок документа оригинал.:
✰ American Fuzzy Lop (software) - Wikipedia ✰
Заголовок документа перевод.:
✰ American Fuzzy Lop (программное обеспечение) — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/American_fuzzy_lop_(fuzzer) ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/4c/32/4cd5bf0d59ecde63f1668eb9f4c63032.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/4c/32/4cd5bf0d59ecde63f1668eb9f4c63032__translat.html ✰
Дата и время сохранения документа:
✰ 18.06.2024 09:41:07 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 15 March 2024, at 23:17 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

American Fuzzy Lop (программное обеспечение) — Википедия Jump to content

Американский Fuzzy Lop (программное обеспечение)

Из Википедии, бесплатной энциклопедии

Американский нечеткий лоп
Разработчики) Михал Залевский
Начальная версия 12 ноября 2013 г .; 10 лет назад ( 12.11.2013 )
Стабильная версия
2.57б / 30 июня 2020 г .; 3 года назад ( 30.06.2020 ) [1]
Репозиторий
Написано в С , сборка
Операционная система Кросс-платформенный
Тип Фаззеры
Лицензия Лицензия Апач 2.0
Веб-сайт лкамтуф .coredump .cx /афл /  Edit this on Wikidata

American Fuzzy Lop ( AFL ), стилизованный под все строчные буквы американский fuzzy lop ( ) — это бесплатный программный фаззер , который использует генетические алгоритмы для эффективного увеличения покрытия кодом тестовых случаев . На данный момент он обнаружил десятки серьезных ошибок программного обеспечения в крупных проектах бесплатного программного обеспечения, включая X.Org Server , [2] PHP , [3] OpenSSL , [4] [5] PNGCrush , Баш , [6] Fire Fox , [7] СВЯЗЫВАТЬ , [8] [9] Кт , [10] и SQLite . [11]

В течение многих лет после своего выпуска AFL считался «современным» фаззером. [12] AFL считается «стандартом де-факто фаззинга». [13] а выпуск AFL внес значительный вклад в развитие фаззинга как области исследований. [14] AFL широко используется в научных кругах; Академические фаззеры часто являются ответвлениями AFL, а AFL обычно используется в качестве основы для оценки новых методов. [15] [16]

Исходный код американского fuzzy lop опубликован на GitHub . Его название является отсылкой к породе кроликов American Fuzzy Lop .

Обзор [ править ]

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

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

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

Алгоритм фаззинга [ править ]

Логотип AFL из нечетких входных данных, сшитых в единую анимацию. [18]

Фаззеры пытаются обнаружить неожиданное поведение (т. е. ошибки ) в целевой программе, многократно выполняя программу на различных входных данных. Как описано выше, AFL представляет собой фаззер серого ящика , то есть он внедряет инструменты для измерения покрытия кода в целевую программу во время компиляции и использует метрику покрытия для управления генерацией новых входных данных. Алгоритм фаззинга AFL повлиял на многие последующие фаззеры серого ящика. [19] [20]

Входными данными для AFL являются инструментированная целевая программа ( тестируемая система ) и корпус , то есть набор входных данных для целевой системы. Входные данные также известны как тестовые примеры . Алгоритм поддерживает очередь входных данных, которая инициализируется для входного корпуса. Общий алгоритм работает следующим образом: [21]

  1. Загрузите следующий ввод из очереди
  2. Минимизируйте тестовый пример
  3. Измените тестовый пример. Если какой-либо мутант приводит к дополнительному покрытию кода, добавьте его в очередь. Если мутант приводит к сбою или зависанию, сохраните его на диск для последующей проверки.
  4. Перейти к шагу 1

Мутация [ править ]

Для создания новых входных данных AFL применяет различные мутации к существующим входным данным. [22] Эти мутации в основном не зависят от формата ввода целевой программы; они обычно рассматривают входные данные как простой блок двоичных данных.

Сначала AFL применяет детерминированную последовательность мутаций к каждому входу. Они применяются при различных смещениях на входе. Они включают: [23] [24]

  • Переворот (т.е. отрицание или инвертирование) 1–32 бит.
  • Увеличение и уменьшение 8-, 16- и 32-битных целых чисел как в с прямым, так и с прямым порядком байтов. кодировке
  • Перезапись частей входных данных «примерно двумя дюжинами «интересных» значений», включая ноль, а также максимальное и минимальное целые числа со знаком и без знака различной ширины, опять же как в кодировке с прямым, так и с прямым порядком байтов .
  • Замена частей входных данных данными, взятыми из «словаря» заданных пользователем или автоматически обнаруженных токенов (например, магических байтов или ключевых слов в текстовом формате). [25] [22] [26]

После применения всех доступных детерминированных мутаций AFL переходит к этапу хаоса — стадии, на которой подряд применяется от 2 до 128 мутаций. Эти мутации являются любыми из: [22]

  • Детерминированные мутации, описанные выше.
  • Перезапись байтов случайными значениями
  • Операции над многобайтовыми «блоками»:
    • Удаление блоков
    • Дублирование блоков
    • Установка каждого байта в блоке в одно значение

Если AFL циклически проходит всю очередь, не генерируя никаких входных данных, обеспечивающих новое покрытие кода, он начинает сращивание . Сращивание берет два входных данных из очереди, усекает их в произвольных позициях, объединяет их вместе и применяет к результату стадию хаоса.

Измерение охвата [ править ]

Компания AFL стала пионером в использовании группированного количества обращений для измерения покрытия кода. [27] Автор утверждает, что этот метод смягчает взрыв пути . [28] [29]

Концептуально, AFL подсчитывает количество раз, когда данное выполнение цели пересекает каждое ребро в графе потока управления цели ; в документации эти ребра называются кортежами , а счетчики — счетчиками посещений . В конце выполнения счетчики попаданий объединяются следующие в восемь сегментов: 1, 2, 3, 4–7, 8–15, 16–31, 32–127 и 128 и выше. AFL поддерживает глобальный набор пар (кортеж, количество интервалов), которые были созданы в результате любого выполнения на данный момент. Входные данные считаются «интересными» и добавляются в очередь, если они создают пару (кортеж, количество интервалов), которой еще нет в глобальном наборе.

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

cur_location   =   <COMPILE_TIME_RANDOM>  ; 
  Shared_mem  [  cur_location   ^   prev_location  ]  ++  ; 
  prev_location   =   cur_location   >>   1  ; 

где <COMPILE_TIME_RANDOM> является случайным целым числом и shared_mem размером 64 килобайта — это область памяти , совместно используемая фаззером и целью.

Это представление является более детальным (различает большее количество выполнений), чем простое покрытие блоков или операторов, но все же позволяет проводить проверку «интересности» в линейном времени.

Минимизация [ править ]

Предполагая, что меньшие входные данные требуют меньше времени для выполнения, AFL пытается минимизировать или сократить тестовые примеры в очереди. [22] [31] Обрезка работает путем удаления блоков из ввода; если усеченный ввод по-прежнему дает то же покрытие (см. #Измерение покрытия ), то исходный ввод отбрасывается, а усеченный ввод сохраняется в очереди.

Планирование [ править ]

AFL выбирает из очереди подмножество предпочтительных входных данных, неприоритетные входные данные с некоторой вероятностью пропускаются. [32] [27]

Особенности [ править ]

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

Одна из проблем, которую пришлось решить американскому нечеткому циклу, заключалась в эффективном запуске сотен процессов в секунду. Помимо оригинального движка, который создавал каждый процесс с нуля, American fuzzy lop предлагает движок по умолчанию, который в значительной степени зависит от fork системный вызов. [33] [27] Этот процесс можно дополнительно ускорить, используя режим сервера отложенного разветвления LLVM или аналогичный постоянный режим, но это происходит за счет необходимости изменения тестируемой программы. [34] Кроме того, американский fuzzy lop поддерживает фаззинг одной и той же программы по сети.

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

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

Утилиты [ править ]

В дополнение к afl-fuzzи инструменты, которые можно использовать для двоичного измерения, American fuzzy lop включает служебные программы, предназначенные для мониторинга процесса фаззинга. Помимо этого, существует afl-cmin и afl-tmin, который можно использовать для минимизации тестовых примеров и набора тестов. Это может быть полезно, когда тестовые примеры, сгенерированные afl-fuzz будет использоваться другими фаззерами.

Вилки [ править ]

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

  • АФЛ++
  • МОРТ-АФЛ [35]
  • AFLFбыстрый [36]
  • АФЛСмарт [37]
  • AFLGo [38]
  • СимCC-AFL [39]
  • WinAFL, «вилка AFL для фаззинга двоичных файлов Windows» [40]

АФЛ++ [ править ]

АФЛ++
Начальная версия 2.52c / 5 июня 2019 г .; 5 лет назад ( 05.06.2019 )
Стабильная версия
4.08с / 10 августа 2023 г .; 10 месяцев назад ( 10.08.2023 ) [41]
Репозиторий
Веб-сайт афлплюс .плюс  Edit this on Wikidata

AFL++ ( AFLplusplus ) [42] Это поддерживаемая сообществом версия AFL, созданная из-за относительного бездействия Google в разработке AFL с сентября 2017 года. Она включает в себя новые функции и ускорения. [43]

Инициатива Google OSS-Fuzz, которая предоставляет бесплатные услуги фаззинга для программного обеспечения с открытым исходным кодом, в январе 2021 года заменила вариант AFL на AFL++. [44] [45]

Ссылки [ править ]

Примечания [ править ]

  1. ^ «Релизы — google/AFL» . Получено 19 января 2021 г. — через GitHub .
  2. ^ «Рекомендация-17.03.2015» . х.орг .
  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» . Быстро . 21 июля 2015 г.
  9. ^ «CVE-CVE-2015-5477» . mitre.org .
  10. ^ «[Объявление] Рекомендации по безопасности проекта Qt — многочисленные уязвимости в обработке формата изображений Qt» . qt-project.org . 13 апреля 2015 г.
  11. ^ «Как тестируется SQLite # 4.1.1. SQL Fuzz с использованием американского Fuzzy Lop Fuzzer» . sqlite.org .
  12. ^ Понселе, Клеман; Сагонас, Константинос; Цифтес, Николас (5 января 2023 г.). «Так много фаззеров, так мало времени✱» . Материалы 37-й Международной конференции IEEE/ACM по автоматизированной разработке программного обеспечения . АСЭ '22. Нью-Йорк, штат Нью-Йорк, США: Ассоциация вычислительной техники. стр. 1–12. дои : 10.1145/3551349.3556946 . ISBN  978-1-4503-9475-8 . S2CID   253456740 .
  13. ^ Фиоральди и др. 2023 , с. 2.
  14. ^ Фиоральди, Андреа; Майер, Доминик Кристиан; Чжан, Дунцзя; Бальзаротти, Давиде (7 ноября 2022 г.). «ЛибАФЛ» . Материалы конференции ACM SIGSAC 2022 года по компьютерной и коммуникационной безопасности . ККС '22. Нью-Йорк, штат Нью-Йорк, США: Ассоциация вычислительной техники. стр. 1051–1065. дои : 10.1145/3548606.3560602 . ISBN  978-1-4503-9450-5 . S2CID   253410747 . . «Выпуск AFL ознаменовал важную веху в области тестирования безопасности программного обеспечения, возродив фаззинг как основную тему исследований».
  15. ^ Хазиме, Ахмад; Эррера, Адриан; Пайер, Матиас (15 июня 2021 г.). «Магма: эталон фаззинга на основе истины» . Труды АКМ по измерению и анализу вычислительных систем . 4 (3): 49:1–49:29. arXiv : 2009.01120 . дои : 10.1145/3428334 . S2CID   227230949 .
  16. ^ Мецман и др. 2021 .
  17. ^ Технион. «Фаззинг nginx — Охота на уязвимости с помощью afl-fuzz» . lolware.net .
  18. ^ Залевский, Михал (27 февраля 2015 г.). «Логотип для afl-fuzz» . afl-пользователи | Группы Google . Проверено 25 июля 2019 г.
  19. ^ Фиоральди и др. 2023 .
  20. ^ Чен, Пэн; Чен, Хао (май 2018 г.). «Ангора: эффективный фаззинг посредством принципиального поиска» . Симпозиум IEEE по безопасности и конфиденциальности (SP) 2018 года . стр. 711–725. дои : 10.1109/SP.2018.00046 . ISBN  978-1-5386-4353-2 . S2CID   3729194 .
  21. ^ «Мотивация AFL — документация AFL 2.53b» . afl-1.readthedocs.io . Проверено 26 февраля 2023 г.
  22. ^ Перейти обратно: а б с д Фиоральди и др. 2023 , с. 6.
  23. ^ «Стратегии бинарного фаззинга: что работает, что нет» . lcamtuf.blogspot.com . 8 августа 2014 г.
  24. ^ «Руководство пользователя AFL — документация AFL 2.53b» . afl-1.readthedocs.io . Проверено 26 февраля 2023 г.
  25. ^ «Найти ошибки в SQLite: простой способ» . lcamtuf.blogspot.com . 14 апреля 2015 г.
  26. ^ Манес, Валентин Ж.М.; Хан, ХёнСок; Хан, Чунгу; Ча, Санг Киль; Эгеле, Мануэль; Шварц, Эдвард Дж.; Ву, Маверик (ноябрь 2021 г.). «Искусство, наука и техника фаззинга: обзор» . Транзакции IEEE по разработке программного обеспечения . 47 (11): 2312–2331. arXiv : 1812.00140 . дои : 10.1109/TSE.2019.2946563 . ISSN   1939-3520 . S2CID   102351047 .
  27. ^ Перейти обратно: а б с Фиоральди и др. 2023 , с. 5.
  28. ^ «Технический документ» по afl-fuzz .
  29. ^ «Подробнее об AFL — документация AFL 2.53b» . afl-1.readthedocs.io . Проверено 27 февраля 2023 г. «Этот подход позволяет проводить очень детальное и долгосрочное исследование состояния программы, не требуя при этом выполнения каких-либо ресурсоемких и хрупких глобальных сравнений сложных трассировок выполнения и избегая при этом проблемы взрыва пути».
  30. ^ «Подробнее об AFL — документация AFL 2.53b» . afl-1.readthedocs.io . Проверено 27 февраля 2023 г.
  31. ^ «Подробнее об AFL — документация AFL 2.53b» . afl-1.readthedocs.io . Проверено 27 февраля 2023 г.
  32. ^ «Подробнее об AFL — документация AFL 2.53b» . afl-1.readthedocs.io . Проверено 27 февраля 2023 г.
  33. ^ «Фаззинг случайных программ без execve()» . lcamtuf.blogspot.com . 14 октября 2014 г.
  34. ^ «Новое в AFL: постоянный режим» . Блог lcamtuf . 11 июня 2015 г.
  35. ^ Лю, Чэньян; Чжан, Чао; Ли, Вэй-Хан; Бея, Рахим (2019): Оптимизированное планирование мутаций для фаззеров , стр. 1949–1966 .  978-1-939133-06-9 .
  36. ^ Бёме, Марсель; Фам, Ван-Туан; Ройчудри, Абхик (май 2019 г.). «Фаззинг серого ящика на основе покрытия как цепь Маркова» . Транзакции IEEE по разработке программного обеспечения . 45 (5): 489–506. дои : 10.1109/TSE.2017.2785841 . ISSN   1939-3520 .
  37. ^ Фам, Ван-Туан; Бёме, Марсель; Сантоса, Эндрю Э.; Кэчулеску, Александр Рэзван; Ройчудри, Абхик (сентябрь 2021 г.). «Умный фаззинг Greybox» . Транзакции IEEE по разработке программного обеспечения . 47 (9): 1980–1997. дои : 10.1109/TSE.2019.2941681 . ISSN   1939-3520 . S2CID   53721813 .
  38. ^ Бёме, Марсель; Фам, Ван-Туан; Нгуен, Мань-Дунг; Ройчудри, Абхик (30 октября 2017 г.). «Направленный фаззинг серого ящика» . Материалы конференции ACM SIGSAC 2017 года по компьютерной и коммуникационной безопасности . ККС '17. Нью-Йорк, штат Нью-Йорк, США: Ассоциация вычислительной техники. стр. 2329–2344. дои : 10.1145/3133956.3134020 . ISBN  978-1-4503-4946-8 . S2CID   29430742 .
  39. ^ Поплау, Себастьян; Франсильон, Орельен (2020). Символическое выполнение с помощью {SymCC}: не интерпретируйте, а компилируйте! . стр. 181–198. ISBN  978-1-939133-17-5 .
  40. ^ WinAFL , Google Project Zero, 23 февраля 2023 г. , получено 26 февраля 2023 г.
  41. ^ «Релизы — AFLplusplus/AFLplusplus» . Получено 1 ноября 2023 г. — через GitHub .
  42. ^ Фиоральди, Андреа; Майер, Доминик; Айсфельдт, Хайко; Хойзе, Марк (август 2020 г.). AFL++: Объединение дополнительных этапов фаззингового исследования . 14-й семинар USENIX по наступательным технологиям (WOOT 20).
  43. ^ «Среда фаззинга AFL++» . АФЛплюсплюс .
  44. ^ Мецман, Джонатан. «[afl++] Используйте AFL++ вместо AFL для фаззинга. автор jonathanmetzman · Pull Request #5046 · google/oss-fuzz» . Гитхаб .
  45. ^ Мецман и др. 2021 , с. 1394.

Источники [ править ]

Дальнейшее чтение [ править ]

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: 4CD5BF0D59ECDE63F1668EB9F4C63032__1710533820
URL1:https://en.wikipedia.org/wiki/American_fuzzy_lop_(fuzzer)
Заголовок, (Title) документа по адресу, URL1:
American Fuzzy Lop (software) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)