Уязвимости программного обеспечения являются серьезной проблемой в области кибербезопасности. Они позволяют атаковать программные продукты, и когда эти продукты подключены к безопасным сетям, они могут предоставить хакерам точку входа.
Все профессиональные программные продукты тщательно тестируются перед выпуском. К сожалению, уязвимости по-прежнему являются частым явлением. Один из способов найти дополнительные уязвимости — использовать технику тестирования программного обеспечения, известную как фаззинг.
Так что же такое фаззинг и как он работает?
Что такое фаззинг?
Фаззинг — это метод автоматизированного тестирования программного обеспечения, который пытается найти уязвимости, используя случайные входные данные.
Программное обеспечение часто ведет себя непредсказуемо, когда пользователь вводит данные, отличные от запрошенных. Фаззинг — это практика ввода большого количества неожиданных входных данных и записи того, что происходит. Идея состоит в том, что пользователь может затем контролировать программное обеспечение и определять, присутствуют ли какие-либо уязвимости.
Фаззинг используется для тестирования программных продуктов и специалистами по безопасности для определения безопасности сети. Он также используется хакерами, которые практикуют фаззинг для поиска уязвимостей, которые они сами могут использовать.
Уязвимости, обнаруженные с помощью фаззинга, сильно различаются. Неожиданный ввод может привести к простому сбою программного обеспечения. Но он также может возвращать личную информацию или разрешать пользователю доступ к частям программного обеспечения, которые в противном случае были бы недоступны.
Каковы преимущества фаззинга?
Фаззинг — это лишь один из многих способов тестирования программных продуктов на наличие уязвимостей. Он популярен, потому что:
- Фаззинг полностью автоматизирован. После того, как программа фаззинга настроена, она может продолжать поиск уязвимостей без участия человека.
- Фаззинг может найти уязвимости, которые не обнаруживаются другими методами тестирования программного обеспечения. Из-за этого его часто применяют в дополнение к мануальным методикам.
- Хакеры часто используют фаззинг для найти уязвимости нулевого дня. Использование тех же методов, что и у хакеров, позволяет разработчикам находить уязвимости нулевого дня раньше, чем они это сделают.
Как работает фаззинг?
Инструмент, используемый для фаззинга, обычно состоит из трех компонентов. Их часто называют поэтом, курьером и оракулом.
Поэт
Поэт запускает процесс и отвечает за создание тестового примера. Тестовый пример — это длинный список потенциальных входных данных.
Курьер
Курьер вставляет все случайные входные данные в целевое программное обеспечение. Фаззеры спроектированы так, чтобы делать это автоматически, что позволяет массово тестировать большое количество входных данных.
Оракул
Оракул проверяет, не заставляет ли какой-либо из входных данных программное обеспечение делать что-то отличное от того, для чего оно было предназначено. Если фаззинг выполняется в законных целях, поведение может быть воспроизведено и исправлено. Или, если фаззинг выполняется хакером, и неожиданное поведение полезно, оно может быть использовано в злонамеренных целях.
Как злоумышленники используют фаззинг?
Фаззинг — популярный метод среди хакеров, поскольку он позволяет им находить уязвимости в программном обеспечении без доступа к исходному коду. Поскольку фаззинг автоматизирован, его также легко выполнить. Если хакер обнаружит уязвимость, он может выполнить следующие атаки.
DDoS-атаки
Если фаззинг обнаружит, что для обработки определенных входных данных требуется много времени, эта информация может быть использована для запуска DDoS-атаки. DDoS-атака включает в себя отправку такого количества запросов в систему, что она перестает функционировать. Фаззинг позволяет настраивать запросы таким образом, чтобы для ответа на них требовалось наибольшее количество системных ресурсов.
SQL-инъекция
Атака с внедрением SQL это когда вредоносные операторы SQL отправляются в приложение. Если эти операторы не очищены должным образом, они могут позволить злоумышленнику взаимодействовать с базой данных. Это может позволить им украсть данные или изменить их. Фаззинг — это эффективный инструмент для проверки большого количества SQL-операторов и определения того, дает ли какой-либо положительный ответ.
Переполнение буфера
Атака переполнения буфера это когда в буфер программы добавляется больше данных, чем она может обработать. В этом случае хакер может заставить эту программу выполнить вредоносный код. Это может быть использовано для кражи данных или получения несанкционированного доступа. Фаззинг используется для поиска входных данных, которые могут вызвать переполнение буфера.
Типы фаззинга
Инструменты фаззинга можно классифицировать на основе того, как создаются тестовые примеры, и того, насколько много известно о системе.
Тупой против. Умная
Тупой фаззинг просто добавляет большое количество случайных входных данных. Он не выбирает входные данные, которые, скорее всего, будут приняты приложением. Это упрощает реализацию, ничего не зная о программном обеспечении; однако это также очень неэффективно, поскольку большинство входных данных будет отклонено.
Интеллектуальный фаззинг генерирует входные данные, которые приложение может принять. Это требует, чтобы пользователь понимал, какой формат ввода является приемлемым, а затем генерировал большое количество входных данных в этом формате. Интеллектуальный фаззинг требует больше усилий и знаний о продукте для реализации, но он значительно более эффективен.
Мутационная vs. поколения
Мутационные фаззеры берут входные данные, которые были ранее приняты, и вносят в них незначительные изменения. Это позволяет генерировать входные данные, которые, вероятно, будут приняты без знания принятого формата.
Генераторные фаззеры создают совершенно новые входные данные на основе того, что известно о принятом формате.
Белый ящик против Черный ящик
Фаззинг черного ящика используется без какой-либо информации о тестируемом приложении. Он менее эффективен, чем фаззинг белого ящика, но может применяться к любому приложению без доступа к исходному коду. Это делает его популярным среди хакеров.
Фаззинг белого ящика использует информацию о тестируемом приложении для создания входных данных, которые с наибольшей вероятностью будут приняты и создадут уязвимости. Он в основном используется разработчиками программного обеспечения, потому что он более эффективен, чем фаззинг черного ящика.
Фаззинг — это мощный метод тестирования программного обеспечения, который используется разработчиками программного обеспечения, специалистами по безопасности и хакерами. Он требует минимальных усилий для реализации и способен находить уязвимости, которые не могут найти другие методы тестирования программного обеспечения.
Это особенно важно с точки зрения безопасности, поскольку часто используется для обнаружения уязвимостей нулевого дня. Эти уязвимости могут быть обнаружены и устранены либо специалистами по безопасности, либо обнаружены и использованы хакерами.