Безопасность приложений
Символьное выполнение
Также известно как: Символьный анализ, Concolic-выполнение
Определение
Метод анализа программ, при котором код выполняется с символьными входами, а ограничения на путях решаются SMT-решателем для поиска ошибок.
Примеры
- Запуск KLEE по C-библиотеке для генерации входов, покрывающих каждое ветвление и срабатывающих assert-ов.
- Связка angr и AFL++ для решения ограничений, которые сам фаззинг преодолеть не может.
Связанные термины
Фаззинг
Автоматизированная техника тестирования, при которой программу обстреливают большим числом некорректных, случайных или неожиданных входов для выявления крэшей, повреждений памяти и уязвимостей.
Фаззинг с обратной связью по покрытию
Техника фаззинга, при которой целевой код инструментируется для измерения покрытия, а входы эволюционируют так, чтобы достигать новых веток, что резко повышает эффективность.
Мутационный фаззинг
Стратегия фаззинга, при которой новые тестовые входы получаются случайной мутацией существующих корректных образцов — инверсия битов, вставка байтов, splice файлов.
SAST (Static Application Security Testing)
Автоматический анализ исходного кода, байт-кода или бинарных файлов без их выполнения для поиска уязвимостей вроде инъекций, небезопасных API или слабой криптографии.
Переполнение буфера
Ошибка безопасности памяти, при которой программа пишет за концом выделенного буфера, повреждая соседнюю память и часто открывая возможность выполнения кода.
Secure Coding
Secure Coding — definition coming soon.