Google открыл Atheris, инструментарий для fuzzing-тестирования кода на языке Python

6 декабря 2020 года

Компания Google объявила об открытии исходных текстов проекта Atheris, развивающего специализированный инструментарий для fuzzing-тестирования кода на языке Python и расширений для CPython, написанных на C/C++. Проект использует движок на основе libFuzzer и может применяться совместно с инструментами Address Sanitizer и Undefined Behavior Sanitizer для выявления дополнительных ошибок. Код открыт под лицензией Apache 2.0.

Поддерживается проверка кода на Python 2.7 и Python 3.3+, но для полноценного учёта покрытия кода ( coverage guided) рекомендуется использовать ветки Python 3.8 и 3.9, в которых появилась поддержка статистики opcode-by-opcode. В процессе работы Atheris перебирает возможные комбинации входных данных и генерирует отчёт о всех выявленных сбоях и неперехваченных исключениях. Например, при проверке в Atheris библиотеки разбора формата YAML было выявлено, что некоторые YAML-конструкции, такие как указание "-_" вместо целого значения или использование списка вместо ключа, приводят к возникновению непредусмотренного исключения вместо штатной ошибки YAMLErrors.

Atheris также можно применять для выявления отличий в поведении библиотек, нацеленных для выполнения идентичных задач. Например, при сводной проверке Python-пакета "idna" и библиотеки "libidn2", которые выполняют задачу декодирования интернационализированных доменных имён, было выявлено, что они не всегда выдают одинаковый результат. В частности, если в домене использовались Unicode-последовательности [U+0130, U+1df9], то "idna" и "libidn2" преобразовывали интернационализированное доменное имя в разные хосты.

Напомним, что при fuzzing-тестировании осуществляется генерация потока всевозможных случайных комбинаций входных данных, приближенных к реальным данным (например, html-страницы с случайными параметрами тегов, архивы или изображения с аномальными заголовками и т.п.), и фиксация возможных сбоев в процессе их обработки. Если какая-то последовательность приводит к исключению или не соответствует ожидаемой реакции, то такое поведение с высокой вероятностью свидетельствует об ошибке или уязвимости.

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


 
 
Creative Commons
Эта статья содержит материалы из статьи «Google открыл Atheris, инструментарий для fuzzing-тестирования кода на языке Python», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.