https://github.com/google/AFL https://habr.com/ru/post/259671/ https://habr.com/ru/post/332076/ https://habr.com/ru/company/dsec/blog/435644/
Установка AFL
sudo apt install libclang-dev clang git clone https://github.com/google/AFL.git cd AFL make sudo make install
Инструментирование кода: выполнить build.sh
Запустить фаззинг с помощью следующей командной строки и подождать, пока не будет найдено хотя бы два варианта входных данных, вызывающих сбой.
afl-fuzz -i testcase_dir -o findings_dir -- ./auth_overflow2_afl
Возможно, будут выдаваться сообщения о том, что в системе надо что-то переконфигурировать для успешного выполнения afl-fuzz.
Входные данные, вызывающие сбои, сохраняются в findings_dir/crashes.
Проанализируйте сбои с помощью отладчика и опишите, что именно пошло не так в каждом из случаев.
https://github.com/Dovgalyuk/calc
В этом репозитории находится исходный код программы-калькулятора. С помощью AFL найдите входные данные, которые приводят к аварийному завершению калькулятора.
Собрать проект можно командой:
make CC=afl-gcc
Фаззинг запускается так:
mkdir testcase_dir echo 123+345 > testcase_dir/test afl-fuzz -i testcase_dir -o findings_dir -- ./calc
Сделайте форк репозитория и исправьте ошибки. Повторяйте фаззинг, пока все ошибки не будут исправлены.
Опишите причины сбоев и сделанные исправления. Приложите ссылку на репозиторий, чтобы исправления можно было проверить.
Здесь задания нет, но можно почитать про исследование покрытия кода.
[[https://habr.com/ru/company/otus/blog/562012/]]
Фаззинг: https://www.youtube.com/watch?v=ig5NTJfb0ls&t=3710s