PDA

Просмотр полной версии : Google представил систему fuzzing-тестирования ClusterFuzzLite


Suicide
15.11.2021, 19:45
Компания Google представила (https://security.googleblog.com/2021/11/clusterfuzzlite-continuous-fuzzing-for.html) проект ClusterFuzzLite (https://google.github.io/clusterfuzzlite/), позволяющий организовать fuzzing-тестирование кода для раннего выявления потенциальных уязвимостей на этапе работы систем непрерывной интеграции. В настоящее время ClusterFuzz может использоваться для автоматизации fuzzing-тестирования pull-запросов в GitHub Actions (https://docs.github.com/en/actions), в Google Cloud Build (https://cloud.google.com/build) и в Prow (https://github.com/kubernetes/test-infra/tree/master/prow#readme), но в дальнейшем ожидается появление поддержки и других CI-систем. Проект базируется на платформе ClusterFuzz (https://www.opennet.ru/opennews/art.shtml?num=50114), созданной для координации работы кластеров fuzzing-тестирования, и распространяются (https://github.com/google/clusterfuzzlite) под лицензией Apache 2.0.

Отмечается, что после внедрения в 2016 году компанией Google сервиса OSS-Fuzz (https://www.opennet.ru/opennews/art.shtml?num=45602) в программу непрерывного fuzzing-тестирования было принято более 500 важных открытых проектов. На основе проведённых проверок было устранено более 6500 подтверждённых уязвимостей и исправлено более 21 тысячи ошибок. ClusterFuzzLite продолжает развитие механизмов fuzzing-тестирования возможностью более раннего выявления проблем на стадии рецензирования предлагаемых изменений. ClusterFuzzLite уже внедрён в процессы рецензирования изменений в проектах systemd и curl, и позволил выявлять ошибки, пропущенные статическими анализаторами и linter-ами, применявшимися на начальном этапе проверки нового кода.

ClusterFuzzLite поддерживает проверку проектов на языках C, C++, Java (и других языков на базе JVM), Go, Python, Rust и Swift. Fuzzing-тестирование проводится с использованием движка LibFuzzer (https://sites.google.com/a/chromium.org/dev/developers/testing/libfuzzer). Для выявления ошибок работы с памятью и аномалий также могут вызываться инструменты AddressSanitizer (https://github.com/google/sanitizers/wiki/AddressSanitizer), MemorySanitizer (https://github.com/google/sanitizers/wiki/MemorySanitizer) и UBSan (https://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html) (UndefinedBehaviorSanitizer).

Основные возможности ClusterFuzzLite: быстрая проверка предлагаемых изменений для нахождения ошибок на этапе до принятия кода; загрузка отчётов об условиях возникновения крахов; возможность перехода к более расширенному fuzzing-тестированию для выявления более глубоких ошибок, не всплывших после проверки изменения кода; генерация coverage-отчётов для оценки охвата кода при тестировании; модульная архитектура, позволяющая выбирать необходимую функциональность.

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

14.11.2021

https://www.opennet.ru/opennews/art.shtml?num=56153​