Безопасность приложений
Фаззинг
Также известно как: Fuzzing
Определение
Автоматизированная техника тестирования, при которой программу обстреливают большим числом некорректных, случайных или неожиданных входов для выявления крэшей, повреждений памяти и уязвимостей.
Примеры
- OSS-Fuzz непрерывно запускает libFuzzer по парсеру OpenSSL и находит ошибки повреждения памяти.
- Jazzer фаззит Java-парсер JSON и обнаруживает DoS через глубоко вложенный ввод.
Связанные термины
Мутационный фаззинг
Стратегия фаззинга, при которой новые тестовые входы получаются случайной мутацией существующих корректных образцов — инверсия битов, вставка байтов, splice файлов.
Фаззинг с обратной связью по покрытию
Техника фаззинга, при которой целевой код инструментируется для измерения покрытия, а входы эволюционируют так, чтобы достигать новых веток, что резко повышает эффективность.
Символьное выполнение
Метод анализа программ, при котором код выполняется с символьными входами, а ограничения на путях решаются SMT-решателем для поиска ошибок.
DAST (Dynamic Application Security Testing)
Black-box тестирование безопасности работающего приложения по сети для поиска уязвимостей, проявляющихся только в рантайме: инъекций, ошибок аутентификации и неправильных конфигураций.
Переполнение буфера
Ошибка безопасности памяти, при которой программа пишет за концом выделенного буфера, повреждая соседнюю память и часто открывая возможность выполнения кода.
Secure Coding
Secure Coding — definition coming soon.