Организация внутреннего Центр мониторинга и реагирования на инциденты ИБ
Построение SOC
Выполнение требований по защите ПДн
в соответствие с 152-ФЗ
Защита персональных данных
Создание централизованной ИБ-системы
на предприятии
Построение СОИБ
Защита от сетевых атак, аудит архитектуры
и подбор средств защиты сети
Сетевая безопасность
Минимизация ущерба, выявление причин предотвращение повторных инцидентов
Расследование инцидентов ИБ
Объективная оценка ИБ для повышения уровня киберустойчивости
Аудит ИБ
Внедрение принципов ИБ на всех этапах разработки По от сборки до интеграции и развертывания
Безопасная разработка
Оценка защищенности систем и определение возможных векторов атак
Анализ защищенности
Итоги пентестов в 2025 году
По результатам внутренних тестов на проникновение от Центра кибербезопасности УЦСБ
Подробнее
Назад
Выявление критичных недостатков ИБ и укрепление защиты ИТ-инфраструктуры
Экспресс-повышение уровня защищенности
Подключение к платформе цифрового рубля с полным сопровождением на всех этапах
Цифровой рубль
Выполнение требований 187-ФЗ и организация защиты информационных систем от киберугроз
Комплексная киберзащита субъектов КИИ
Комплексная проверка скрытых признаков компрометации на ИТ-инфраструктуру организации
Compromise Assessment
Предотвращение DDoS-атак любой сложности на уровнях L3 и L4
Анти-DDoS
Итоги пентестов в 2025 году
По результатам внутренних тестов на проникновение от Центра кибербезопасности УЦСБ
Вперед
Защита веб-приложений
WAF
Защита конечных точек
EDR
Анализ трафика
NTA
Управление уязвимостями
Sandbox
Автоматизация процессов управления ИБ, рисков и комплаенса
SGRC
Управление учетными записями и доступом
IdM/IGA
Межсетевые экраны нового поколения
NGFW
Управление уязвимостями
VM
Анализ и корреляция событий
SIEM
Вебинары
Разбираем актуальные темы и тренды в рамках кибербезопасности и ИТ
Подробнее
Назад
Повышение киберграмотности сотрудников
SA
Предотвращение утечек информации
DLP
Контроль привилегированного доступа
PAM
Управление инцидентами ИБ
IRP/SOAR
Киберразведка
TI
Вебинары
Разбираем актуальные темы и тренды в рамках кибербезопасности и ИТ
Вперед
Комплексное решение для контроля соответствия требованиям ИБ
CheckU
Непрерывный мониторинг и оперативное реагирование на инциденты для минимизации ущерба
УЦСБ SOC
Облачная DevSecOps-платформа
для непрерывного анализа защищенности приложений
Apsafe
CheckU
Решение для внутреннего контроля соответствия требованиям ИБ
Получить рекомендацию
Заполните форму, и специалист Центра кибербезопасности свяжется с вами
Нажимая кнопку «Отправить», я даю свое согласие на обработку моих персональных данных, в соответствии с Федеральным законом от 27.07.2006 года № 152-ФЗ
«О персональных данных», на условиях и для целей, определенных в Согласии на обработку персональных данных
Контакты
О центре
Новости
Сервисы
Решения
Услуги
Контакты
О центре
Новости
Сервисы
Решения
Сетевая безопасность
Защита от сетевых атак, аудит архитектуры
и подбор средств защиты сети
Построение SOC
Организация внутреннего Центр мониторинга и реагирования на инциденты ИБ
Защита персональных данных
Выполнение требований по защите ПДн
в соответствие с 152-ФЗ
Построение СОИБ
Создание централизованной ИБ-системы
на предприятии
Анти-DDoS
Предотвращение DDoS-атак любой сложности на уровнях L3 и L4
Комплексная киберзащита субъектов КИИ
Выполнение требований 187-ФЗ и организация защиты информационных систем от киберугроз
Compromise Assessment
Комплексная проверка скрытых признаков компрометации на ИТ-инфраструктуру организации
Цифровой рубль
Подключение к платформе цифрового рубля с полным сопровождением на всех этапах
Экспресс-повышение уровня защищенности
Выявление критичных недостатков ИБ и укрепление защиты ИТ-инфраструктуры
Расследование инцидентов ИБ
Минимизация ущерба, выявление причин предотвращение повторных инцидентов
Аудит ИБ
Объективная оценка ИБ для повышения уровня киберустойчивости
Безопасная разработка
Внедрение принципов ИБ на всех этапах разработки По от сборки до интеграции
и развертывания
Анализ защищенности
Оценка защищенности систем и определение возможных векторов атак
Услуги
Контакты
О центре
Новости
Сервисы
IRP/SOAR
Защита от сетевых атак, аудит архитектуры
и подбор средств защиты сети
NGFW
Межсетевые экраны нового поколения
PAM
Контроль привилегированного доступа
TI
Киберразведка
SA
Повышение киберграмотности сотрудников
WAF
Защита веб-приложений
DLP
Предотвращение утечек информации
SGRC
Автоматизация процессов управления ИБ, рисков и комплаенса
IdM/IGA
Управление учетными записями и доступом
EDR
Защита конечных точек
NTA
Анализ трафика
Sandbox
Сетевые лесочницы
VM
Управление уязвимостями
SIEM
Анализ и корреляция событий
Решения
Услуги
Контакты
О центре
Новости
CheckU
Комплексное решение для контроля соответствия требованиям ИБ
УЦСБ SOC
Непрерывный мониторинг и оперативное реагирование на инциденты для минимизации ущерба
Apsafe
Облачная DevSecOps-платформа
для непрерывного анализа защищенности приложений
Сервисы
Решения
Услуги
Чтобы сделать сайт более удобным,
мы собираем cookie-файлы. Отключить сбор cookie можно в настройках браузера. Подробную информацию о файлах cookie можно изучить здесь.
Понятно
Главная / О Центре / Новости / Фаззинг на пальцах. Часть 1: идея, техника и мера

Фаззинг на пальцах. Часть 1: идея, техника и мера

1 ноября 2023

О чем вы думаете, когда слышите слово «фаззинг»? Одни вспоминают о приказе ФСТЭК России № 239, другие — об утилитах с пугающими отчетами, а кто-то и вовсе озадаченно пожимает плечами. Рассказываем, для чего нужен фаззинг, зачем его применять и каким он бывает.

Навигация по статье

Это первая часть цикла статей, посвященных фаззинг-тестированию, от аналитиков направления «Безопасная разработка» Центра кибербезопасности УЦСБ. У нас есть практический опыт проверки программ, и мы готовы делиться знаниями.

Ввод понятия

В ГОСТ 58142 «Информационная технология. Методы и средства обеспечения безопасности. Детализация анализа уязвимостей программного обеспечения в соответствии с ГОСТ Р ИСО/МЭК 15408 и ГОСТ Р ИСО/МЭК 18045. Часть 2. Тестирование проникновения» есть следующее определение: «фаззинг — это тестирование, использующее как корректные, так и случайные (включая некорректные) входные данные для проверки, устанавливающей, обрабатываются ли должным образом интерфейсом случайные входные данные или возникает ошибочная ситуация (ошибочное условие), указывающая (указывающее) на наличие недостатков при разработке (ошибки исходного кода) или при эксплуатации».

Если проще, то фаззинг — это проверка на то, могут ли при обработке случайных, в том числе некорректных, входных данных некоторыми частями софта возникнуть «странности» в поведении ПО, которые разработчики не закладывали в его функционал.

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

Подходы к тестированию (White/Black/Grey Box)

В общем случае фаззинг представляет из себя не конкретную технику, а идею проверки объекта, заключающуюся в передаче ему некоторых данных. В зависимости от того, насколько доступны сведения о проверяемом объекте, выделяют три подхода к тестированию: Black-box, Gray-box и White-box. В случае с White-box фаззингом специалист понимает, как устроена и реализована его цель. Он проводит тестирование на уровне исходного кода. При использовании Black-box подхода проверяющий не обладает сведениями о внутреннем устройстве исследуемого объекта и взаимодействует только с его внешними интерфейсами с позиции пользователя. При реализации Gray-box специалист имеет доступ к скомпилированной программе, но не к ее исходникам. Обладая неполным представлением о внутреннем устройстве цели, он пытается получить недостающую информацию о ней в процессе анализа.

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

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

Ниже приведена сравнительная таблица описанных подходов.

Необходимость проведения

Зачем проводить фаззинг? Прежде всего, это нужно разработчику ПО, если он хочет избежать материального или репутационного ущерба, который может возникнуть из-за эксплуатации уязвимостей в его продукте. Такие инциденты происходят регулярно. Например, в 2023 году неизвестные хакеры использовали связанную с path traversal уязвимость CVE-2022-41328 операционной системы FortiOSот компании Fortinet в таргетированной атаке на правительственную организацию. Действия злоумышленников привели к отключению межсетевых экранов FortiGate. За несколько месяцев до инцидента произошла другая атака на оборудование от Fortinet, применяемое организацией авиационного сектора. В этот раз хакеры использовали уязвимость переполнения буфера (CVE-2022-42475) в FortiOS SSL-VPN. В результате атаки взломанные устройства оказались заражены вредоносным ПО, которое повреждало данные в журналах FortiOS и нарушало функциональность системы предотвращения вторжений (IPS). Фаззинг позволяет предотвратить подобные инциденты.

Нельзя забывать и о букве закона. В нашей стране фаззинг-тестирование обязательно для защиты значимых объектов критической информационной инфраструктуры (КИИ). Согласно пункту 29.3.2 приказа ФСТЭК России от 25.12.2017 №239 «Об утверждении требований по обеспечению безопасности значимых объектов критической информационной инфраструктуры Российской Федерации» субъект КИИ должен реализовать «проведение фаззинг-тестирования программы, направленного на выявление в ней уязвимостей».

Кроме того, в приказе обозначена необходимость наличия в организации руководства по безопасной разработке программного обеспечения. Этот документ можно составить на основе ГОСТ Р 56939-2016 «Защита информации. Разработка безопасного программного обеспечения. Общие требования». В стандарте фаззинг-тестирование фигурирует в качестве меры, которую следует прописать в руководстве.

По решению заказчика или разработчика для реализации фаззинга как меры по разработке безопасного программного обеспечения может применяться «Методика выявления уязвимостей и недекларированных возможностей в программном обеспечении», утвержденная ФСТЭК России. Этот документ имеет пометку ограничения доступа.
Получение организациями «Методики выявления уязвимостей и недекларированных возможностей в программном обеспечении» производится в соответствии с порядком обеспечения документами ФСТЭК России.

Ограничения в выборе

Как проводить проверку субъекта КИИ, которому нужно выполнить требования из приказа ФСТЭК России №239? Достаточно ли для этого использовать любую доступную утилиту и профаззить то, что хочется? Нет, всё не так просто. На официальном сайте регулятора опубликованы видеоматериалы для специалистов в области информационной безопасности. В частности, в лекции «Инструментальная и технологическая поддержка проведения фаззинг-тестирования программного обеспечения» Шамиль Курмангалеев, руководитель направления аудита бинарного кода в ИСП РАН, рассказывает о фаззере, тестовом покрытии и дополнительных средствах выявления ошибок в исследуемом объекте. Давайте разберемся, что означают некоторые термины, употребляемые лектором.

Основная программа, необходимая для проведения рассматриваемого вида тестирования — фаззер. Он может быть мутационным и генерационным (порождающим, grammar-based). Первый тип инструмента создает отправляемые данные на основе эталона. Обрабатывая ответ от исследуемого объекта, программа делает выводы об успешности тех или иных «мутаций» и в следующей итерации формирует новые последовательности. Фаззер второго типа сам генерирует исходные данные случайным образом или по заданным правилам.


Работа мутационного фаззера

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

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

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

Международные практики

А используют ли фаззинг в других странах? Да. Например, в США, где регулятором в сфере информационной безопасности выступает Cybersecurity and Infrastructure Security Agency (CISA), он необходим. CISA в соответствии с приказом об улучшении национальной кибербезопасности взаимодействует с Национальным институтом стандартов и технологий США (NIST) по вопросам разработки и внедрения регламентирующих документов. NIST уже выпустил Special Publication 800-53 «Security and Privacy Controls for Federal Information Systems and Organizations», где представил меры безопасности для федеральных информационных систем и организаций. Фаззинг присутствует в публикации в качестве дополнительной меры на этапе тестирования разрабатываемого приложения.

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

Другое международное сообщество OWASP, исследующее вопросы обеспечения безопасности веб-приложений, разработало документ Web Security Testing Guide. В нём описаны приёмы, методики, инструменты и ресурсы для тестирования наиболее распространённых уязвимостей web-приложений. В данном руководстве рассматривается и фаззинг, рекомендуются конкретные утилиты.

Вместо заключения

Фаззинг-тестирование — полезный метод проверки программы, используемый по всему миру в качестве практики безопасной разработки (DevSecOps). Существует несколько подходов к реализации этой техники, которые применяются в зависимости от особенностей исследуемого объекта. В следующей статье мы остановимся на практических аспектах проведения фаззинга, расскажем про доступные утилиты.

Автор: Нинель Шницарь, аналитик по безопасной разработке программного обеспечения
Вторая часть цикла статей доступна по ссылке.
Для статистики
За 2023 год число запросов на проведение фаззинг-тестирования средствами Центра кибербезопасности УЦСБ увеличилось в два раза по сравнению с прошлым годом. А как обстоят дела в вашей компании? Мы решили провести опрос, чтобы собрать статистику по проведению фаззинг-тестирования.
Вы являетесь разработчиком ПО?
Вы когда-нибудь проводили фаззинг?
Если проводили, то самостоятельно или с привлечением сторонних специалистов?
Какой подход к проведению фаззинга вы используете чаще всего?
Ответить
Спасибо, что поделились с нами данными!
Подпишитесь на нашу рассылку
Вы будете получать только полезную информацию о кибербезопасности — никакого спама и рекламы
Нажимая кнопку «Подписаться», я даю свое согласие на обработку моих персональных данных, в соответствии с Федеральным законом от 27.07.2006 года №152-ФЗ «О персональных данных», на условиях и для целей, определенных в Согласии на обработку персональных данных