Найти в Дзене
Уловка-32

Что такое фаззинг в кибербезопасности?

Оглавление
Все профессиональные программные продукты проходят тщательное тестирование перед выпуском / Яндекс.Дзен Уловка-32
Все профессиональные программные продукты проходят тщательное тестирование перед выпуском / Яндекс.Дзен Уловка-32

Фаззинг — это метод, используемый как экспертами по безопасности, так и хакерами для поиска уязвимостей в программном обеспечении. Вот что вам нужно знать.

Уязвимости программного обеспечения являются серьезной проблемой в кибербезопасности. Они позволяют атаковать программные продукты, и когда эти продукты подключены к защищенным сетям, они могут обеспечить точку входа для хакеров.

Все профессиональные программные продукты проходят тщательное тестирование перед выпуском. К сожалению, уязвимости по-прежнему являются обычным явлением. Одним из способов найти дополнительные уязвимости является использование метода тестирования программного обеспечения, известного как фаззинг.

Так что же такое фаззинг и как он работает?

Что такое фаззинг?

Fuzzing - это автоматизированный метод тестирования программного обеспечения, который пытается найти уязвимости с помощью случайных входных данных.

Программное обеспечение часто ведет себя непредсказуемо, когда пользователь производит ввод, отличный от запрошенного. Фаззинг — это практика ввода большого количества неожиданных входных данных и записи того, что происходит. Идея состоит в том, что пользователь может затем отслеживать программное обеспечение и определять, присутствуют ли какие-либо уязвимости.

Фаззинг используется для тестирования программных продуктов специалистами по безопасности, чтобы определить, безопасна ли сеть. Он также используется хакерами, которые практикуют фаззинг для поиска уязвимостей, которые они сами затем смогут использовать.

Уязвимости, обнаруженные с помощью фаззинга, сильно различаются. Неожиданный ввод может привести к простому сбою программного обеспечения. Но он также может возвращать личную информацию или позволять пользователю получать доступ к частям программного обеспечения, которые в противном случае были бы запрещены.

Преимущества фаззинга?

Фаззинг является лишь одним из многих способов тестирования программных продуктов на наличие уязвимостей. Он популярен, потому что:

  • Фаззинг полностью автоматизирован. После настройки программы она может продолжать искать уязвимости без участия человека.
  • Фаззинг может найти уязвимости, которых нет у других методов тестирования программного обеспечения. Из-за этого его часто используют в дополнение к мануальным приемам.
  • Фаззинг часто используется хакерами для поиска уязвимостей нулевого дня. Использование тех же методов, что и хакеры, позволяет разработчикам находить уязвимости нулевого дня до того, как это сделают злоумышленники.

Как работает фаззинг?

Инструмент, используемый для фаззинга, обычно состоит из трех компонентов. Их часто называют поэтом, курьером и оракулом.

Поэт

Поэт запускает процесс и отвечает за генерацию тестового случая. Тестовый случай — это длинный список потенциальных входных данных.

Курьер

Курьер вставляет все случайные входные данные в целевое программное обеспечение. Делается все это автоматически, что позволяет тестировать большие объемы входных данных оптом.

Оракул

Оракул проверяет, заставляют ли какие-либо входные данные программное обеспечение делать что-то другое, чем оно было разработано. Если фаззинг выполняется в законных целях, поведение может быть воспроизведено и исправлено. Или, если фаззинг осуществляется хакером, и неожиданное поведение полезно, оно может быть использовано в злонамеренных целях.

Как злоумышленники используют фаззинг?

Фаззинг является популярной техникой среди хакеров, поскольку позволяет им находить уязвимости в программном обеспечении без доступа к исходному коду. Поскольку фаззинг автоматизирован, его также легко выполнить. Если хакер обнаружит уязвимость, он может выполнить следующие атаки, используя найденные этим методом лазейки.

DDoS-атаки

Если фаззинг обнаружит, что определенные входные данные требуют длительного времени для обработки, эта информация может быть использована для запуска DDoS-атаки. DDoS-атака включает в себя отправку такого количества запросов в систему, что она перестает функционировать. Фаззинг позволяет адаптировать запросы таким образом, чтобы на них требовалось больше всего системных ресурсов для ответа.

Внедрение кода SQL

Атака путем внедрения кода SQL — это атака, когда вредоносные инструкции SQL отправляются в приложение. Если эти инструкции не очищены должным образом, они могут позволить злоумышленнику взаимодействовать с базой данных. Это может позволить им украсть данные или изменить их. Фаззинг является эффективным инструментом для попыток больших объемов инструкций SQL и определения того, дают ли они положительный ответ.

Переполнение буфера

Атака переполнения буфера — это когда в буфер программы добавляется больше данных, чем она может обработать. В этом случае хакер может заставить эту программу выполнять вредоносный код. Это может быть использовано для кражи данных или для получения несанкционированного доступа. Фаззинг используется для поиска входных данных, которые могут вызвать переполнение буфера.

Виды фаззинга

Инструменты фаззинга могут быть классифицированы на основе как того, как генерируются тестовые случаи, так и того, сколько известно о системе.

Тупой vs. Умный

Тупой фаззинг просто добавляет большое количество случайных входных данных. Он не выбирает входные данные, которые, скорее всего, будут приняты приложением. Это облегчает реализацию, ничего не зная о программном обеспечении; однако он также крайне неэффективен, поскольку большинство вводимых ресурсов будут отклонены.

Интеллектуальны фаззинг генерирует входные данные, которые приложение, скорее всего, примет. Этот метод требует, чтобы пользователь понимал, какой формат ввода является приемлемым, а затем генерирует большое количество входных данных в этом формате. Интеллектуальный фаззинг требует больше усилий и знаний о продукте для реализации, но этот метод наиболее эффективен.

Мутационные и поколенческие

Мутационный фаззинг использует входные данные, которые были ранее приняты, но вносит в них незначительные изменения. Это позволяет генерировать входные данные, которые, вероятно, будут приняты без знания принятого формата.

Поколенческие фаззеры создают совершенно новые входные данные на основе того, что известно о принятом формате.

Белый ящик против черного ящика

Фаззинг «черного ящика» используется без какой-либо информации о тестируемом приложении. Он менее эффективен, чем метод «белого ящика»", но может быть применен к любому приложению без доступа к исходному коду. Это делает его популярным среди хакеров.

Нечеткость белого ящика использует информацию о тестируемом приложении для создания входных данных, которые, скорее всего, будут приняты и создадут уязвимости. Он в основном используется разработчиками программного обеспечения, потому что он более эффективен, чем нечеткий черный ящик.

Фаззинг является важным инструментом для выявления эксплойтов нулевого дня

Fuzzing - это мощный метод тестирования программного обеспечения, который используется разработчиками программного обеспечения, специалистами по безопасности и хакерами. Он требует минимальных усилий для реализации и способен находить уязвимости, которых нет у других методов тестирования программного обеспечения.

Это особенно важно с точки зрения безопасности, потому что он часто используется для обнаружения уязвимостей нулевого дня. Эти уязвимости могут быть либо обнаружены и исправлены специалистами по безопасности, либо обнаружены и использованы хакерами.