Аннотация:
Анализ программ и автоматизированное тестирование в последнее время стали неотъемлемой частью РБПО. Направленный фаззинг – один из самых популярных методов автоматизированного тестирования, который фокусируется на поиске ошибок в заранее определенных областях кода. Однако этот метод не способен преодолевать сложные программные ограничения. Эта проблема может быть эффективно решена с помощью символьного выполнения, но ценой более низкой производительности. Таким образом, комбинирование методов направленного фаззинга и символьного выполнения может привести к более эффективному поиску ошибок в программах.
В этой статье мы предлагаем гибридный подход к направленному фаззингу с оригинальным алгоритмом планирования входных данных, основанным на пользе для достижения целевых точек и увеличения покрытия кода. В подходе также выполняется минимизация и сортировка результатов анализа в соответствии с информацией о целевых точках. Мы реализовали наш подход в инструменте Sydr-Fuzz, используя LibAFL-DiFuzz в качестве направленного фаззера и Sydr в качестве динамического символьного исполнителя. Мы оценили наш подход с помощью метрики Time to Exposure и сравнили его с чистым LibAFL-DiFuzz, а также с инструментом AFLGo и другими направленными фаззерами. Согласно результатам, гибридный подход Sydr-Fuzz к направленному фаззингу демонстрирует высокую производительность и помогает повысить эффективность направленного фаззинга.
Ключевые слова:
направленный фаззинг, символьное выполнение, гибридный фаззинг, анализ программ