8 подписчиков
Материалы к докладу "Делаем фаззер для Lua на основе libFuzzer"
Примеры кода из доклада - https://github.com/ligurio/snippets/tree/master/heisenbug-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 без изменения интерпретатора -
Будет работать, но не так эффективно, потому что не инструментируются полезные инструкции в Lua ВМ.
Доклад, в котором Tavis Ormandy описал идею использования обратной связи, чтобы сделать фаззинг эффективнее - "Making Software Dumber". Видео и слайды.
1 минута
22 ноября 2022