Материалы к докладу "Делаем фаззер для Lua на основе libFuzzer"
Примеры кода из доклада - github.com/ligurio…bug-2022
Все примеры можно запустить, см. комментарии в файлах:
- add_tests.py - тестирование функции сложения с помощью примеров, Hypothesis и Atheris
- trace-pc.c - пример инструментирования программы в Clang для предоставления обратной связи
- libfuzzer-example.c - пример фаззера для libFuzzer
Здесь опубликую модуль для фаззинга Lua - https://github.com/ligurio/luzer/Слайды
Дополнительные ссылки:
Hypothesis - расширение для тестирования с помощью свойств в Python
Atheris - фаззер с обратной связью для Python на основе libFuzzer
lua-quickcheck - модуль для тестирования с помощью свойств в Lua
afl-lua - форк PUC Rio Lua для фаззинга Lua c помощью AFL
libFuzzer - библиотека для фаззинга кода С/C++
Пример интеграции Lua с AFL без изменения интерпретатора -
gist.github.com/stevenj…1cafbbc6
Будет работать, но не так эффективно, потому что не инструментируются полезные инструкции в Lua ВМ.
Доклад, в котором Tavis Ormandy описал идею использования обратной связи, чтобы сделать фаззинг эффективнее - "Making Software Dumber". Видео и слайды.
Доклад "ClusterFuzz: Fuzzing at Google Scale".