Повышение эффективности фаззинга нейросетевыми моделями мутаций
Исследовательская работа. Пять стратегий выбора мутаций – собственный плагин, softmax-бандит, GRU, LSTM и DQN – встраивались надстройкой в стандартный фаззер и сравнивались с ним на 21 открытой программе при одинаковом бюджете времени. Целевая метрика – прирост покрытия кода.
21реальная программа в прогоне, бюджет времени у всех стратегий одинаковый
2цели из двадцати одной, на которых прирост оказался устойчивым
Контекст
Классический фаззер мутирует входные данные вслепую, и большая часть мутаций не открывает новых путей выполнения. Идея исследования – подсказывать направление мутации моделью, не трогая сам фаззер.
В среднем по 21 цели лучший результат показала одна стратегия из пяти, но почти весь её прирост приходится на две программы. На остальных целях надстройка не окупает затраченного на неё времени.
схема
Что дали модели мутаций
из проекта
Результаты на реальных программах

Что входило в задачи
- Выборкатестовые входы и данные о покрытии кода
- Встраивание в фаззернадстройка поверх готового инструмента, без правки его ядра
- Разбор без форматаструктура входных данных выводится моделью, описание формата не требуется
- Пять стратегийсвой плагин, softmax-бандит, GRU, LSTM и DQN
- Прогон на 21 целиодинаковый бюджет времени у всех стратегий
- Разбор результатагде прирост держится, а где подход не окупается
Стек проекта
PythonPyTorchC / C++инструменты фаззингаанализ покрытия