CyberGlossary

Безопасность приложений

Фаззинг

Также известно как: Fuzzing

Определение

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

Фаззинг (fuzz testing) бомбардирует цель — функцию, парсер, протокол или целое приложение — мутированными или сгенерированными входами, отслеживая крэши, зависания, нарушения assertion-ов или сообщения sanitizer-ов. Цель — найти входы, нарушающие свойства безопасности: выход за границы, use-after-free, бесконечные циклы, необработанные исключения, логические дефекты. Современные фаззеры (AFL++, libFuzzer, Jazzer, Atheris) используют обратную связь по покрытию, чтобы эволюционировать входы и достигать новых веток кода — особенно эффективно на парсерах, декодерах и криптокоде. Фаззинг — обязательный элемент SSDLC у Google (OSS-Fuzz) и Microsoft, благодаря ему обнаружены многие высококритичные CVE.

Примеры

  • OSS-Fuzz непрерывно запускает libFuzzer по парсеру OpenSSL и находит ошибки повреждения памяти.
  • Jazzer фаззит Java-парсер JSON и обнаруживает DoS через глубоко вложенный ввод.

Связанные термины