Символьное выполнение
Что такое Символьное выполнение?
Символьное выполнениеМетод анализа программ, при котором код выполняется с символьными входами, а ограничения на путях решаются SMT-решателем для поиска ошибок.
Движок символьного выполнения рассматривает входные данные как математические переменные и при каждом условном переходе ветвит исполнение. На каждом пути накапливаются ограничения в логике первого порядка; SMT-решатель вроде Z3 проверяет их выполнимость и, если возможно, выдаёт конкретный вход, ведущий программу по этому пути. Это позволяет формально доказать достижимость условий ошибки (переполнение, деление на ноль, попадание taint в опасный сток), но страдает от взрыва числа путей и сложности ограничений. Инструменты KLEE, angr и Manticore используются для усиления фаззеров, поиска глубоких уязвимостей и верификации свойств безопасности бинарных файлов.
● Примеры
- 01
Запуск KLEE по C-библиотеке для генерации входов, покрывающих каждое ветвление и срабатывающих assert-ов.
- 02
Связка angr и AFL++ для решения ограничений, которые сам фаззинг преодолеть не может.
● Частые вопросы
Что такое Символьное выполнение?
Метод анализа программ, при котором код выполняется с символьными входами, а ограничения на путях решаются SMT-решателем для поиска ошибок. Относится к категории Безопасность приложений в кибербезопасности.
Что означает Символьное выполнение?
Метод анализа программ, при котором код выполняется с символьными входами, а ограничения на путях решаются SMT-решателем для поиска ошибок.
Как защититься от Символьное выполнение?
Защита от Символьное выполнение обычно сочетает технические меры и операционные практики, как описано в определении выше.
Какие есть другие названия Символьное выполнение?
Распространённые альтернативные названия: Символьный анализ, Concolic-выполнение.