Чем символическое выполнение отличается от фаззинга белого ящика?

Не понимаю, чем символьное исполнение отличается от фаззинга Whitebox? Насколько я понимаю, Fuzzers Whitebox символически выполняют код с некоторым исходным форматом ввода. Кроме того, будет полезно, если кто-то сможет различать эти две формы со ссылкой на инструменты KLEE и AFL.

1 ответ

Фаззинг белого ящика можно делать не только символьным исполнением. SAGE от Microsoft Research является примером фаззера белого ящика, который использует конколическое выполнение, также называемое динамическим символьным выполнением, см . NDSS08.

Да, фаззеры Whitebox получают некоторые seed/seed (начальный ввод/вводы) и символически выполняют код с ними. Concolic фаззеры также запускают код с этими входными данными параллельно с символьным выполнением.

KLEE — это фаззер белого ящика, использующий символьное исполнение.

AFL — это фаззер серого ящика — он использует информацию о внутренней структуре только для расчета покрытия, а не для получения новых путей. Существуют инструменты для AFL, которые получают константы из сравнений в коде и добавляют их в словари AFL, но это все еще не фаззинг белого ящика.

Другие вопросы по тегам