CyberGlossary

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

Фаззинг с обратной связью по покрытию

Также известно как: Greybox-фаззинг, Фаззинг по обратной связи

Определение

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

Coverage-guided фаззеры инструментируют целевую программу на этапе компиляции или через динамическую бинарную трансляцию и при выполнении кандидатов собирают покрытие по рёбрам или базовым блокам. Входы, открывающие новое покрытие, остаются в корпусе и мутируются эволюционным алгоритмом, что смещает корпус к труднодостижимым участкам кода. Эта петля обратной связи, популяризованная AFL и улучшенная в AFL++, libFuzzer и Honggfuzz, на порядки эффективнее слепого случайного фаззинга. На ней работает Google OSS-Fuzz, нашедший десятки тысяч багов в open-source коде за счёт непрерывного запуска coverage-guided фаззеров.

Примеры

  • Скомпилировать C-парсер с инструментацией AFL++ и расширять корпус через afl-fuzz.
  • libFuzzer с SanitizerCoverage эволюционирует входы для Rust-крейта.

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