Фаззинг
Автор: 88145 • Апрель 22, 2021 • Реферат • 575 Слов (3 Страниц) • 320 Просмотры
Сегодня всё больше компаний строят процесс разработки своего софта по методологии DevSecOps. Основной её принцип — непрерывный контроль безопасности на каждой стадии разработки продукта. Чтобы сделать безопасную и стабильную систему, её нужно тестировать. К сожалению, писать идеальный код, не требующий доработки, не может никто. Поэтому в написанном коде априори есть ошибки и уязвимости. Одним из главных этапов автоматизации, а значит, внедрения полноценного DevSecOps, является фаззинг (fuzzing). Эта методика тестирования — неотъемлемая часть процессов аудита и поиска уязвимостей в программном обеспечении. Её суть заключается в обнаружении ошибок реализации путем отправки заведомо неверных данных и анализе реакции программы на них. Интеграция фаззинга в процесс разработки позволяет выявлять ошибки и уязвимости на самых ранних стадиях, а значит, выпускать наиболее защищенный продукт. Цена исправления уязвимости до ввода в эксплуатацию существенно ниже, чем цена внеплановых обновлений безопасности после релиза.
Сам термин "фаззинг" появился впервые около 30 лет назад в работе An Empirical Study of the Reliability of UNIX Utilities. В 2013 году фаззинг получил вторую жизнь, благодаря созданию feedback-driven fuzzing. Это вид фаззинга, при котором фаззер изменяет входные данные так, чтобы их обработка затрагивала как можно больше участков кода программы. Работа таких фаззеров возможна, благодаря их способности реагировать на отклик (feedback) программы. Обычно таким откликом является покрытие кода. Метрики покрытия кода отслеживают суммарное количество выполненных строк кода, базовых блоков, количество сделанных условных переходов. Задача фаззера — генерировать данные, которые приводят к увеличению покрытия кода.
Организацию фаззинга можно условно разделить на 3 категории
1. Составление поверхности атаки (Attack Surface)
Для составления поверхности атаки необходимо ПО для аудита кода. Лучше, чтобы ПО для инспекции кода имело возможность автоматического "рисования"; блок-схем. Далее из составленной блок-схемы необходимо извлечь те куски, где тем или иным способом могут попасть на вход данные из недоверенных источников. Так и определяется поверхность атаки. Помимо фаззинга, представление о поверхности атаки пригодится и просто для повышения уровня безопасности, поскольку оно позволяет полностью пересмотреть ПО и определить наличие лишних элементов. Точки входа поверхности атаки можно разделить на следующие категории. Основные это две
...