Найти тему
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 минута