Методическая рекомендация № 2025-07-010 | Уровень критичности: 3
Область: Фаззинг-тестирование.
Тип недостатка: Применение средств фаззинг-тестирования, не реализующих генетические алгоритмы фаззинг-тестирования (в том числе за счет инструментирования тестируемого кода).
Описание: На рис. 1-3 представлены протоколы сертификационных испытаний (4 уровень доверия) с применением инструментов (BurpSuite, OWASP ZAP, RestlerFuzz), не предназначенных для проведения фаззинг-тестирования с инструментированием кода и не реализующих генетические алгоритмы фаззинг-тестирования.
Что такое генетические алгоритмы в фаззинге?
Генетические алгоритмы в фаззинге применяются для автоматической генерации и оптимизации тестовых входных данных, на основе отобранных входных данных, которые максимизируют покрытие кода или вызывают аномальное поведение программы. Примеры популярных фаззеров, реализующих генетические алгоритмы фаззинг-тестирования: AFL++, libFuzzer, go-fuzz, SharpFuzz, JQF.
Что такое фаззинг с инструментированием кода?
Инструментирование кода – это процесс внедрения минимально возможных изменений в код программы для сбора информации о её выполнении. Может проводиться как до запуска программного обеспечения (статическое инструментирование, выполняется на этапе компиляции), так и во время выполнения исполняемого кода программного обеспечения (динамическое инструментирование, например с помощью Pin, Valgrind или DynamoRIO).
BurpSuite, OWASP ZAP и подобные инструменты анализа уязвимостей и тестирования безопасности веб-приложений не подходят для мутационного фаззинга с инструментированием кода и реализации генетических алгоритмов тестирования. Данные инструменты выполняют сканирование на основе сигнатур и заранее определенных шаблонов атак (SQL-инъекции, XSS, CSRF). В состав данных инструментов входят базовые фаззеры для автоматизации тестирования веб-приложений методом подстановки значений из заранее заданных словарей (payloads). Функция Grep-Extract не осуществляет мутации полученных данных, а позволяет автоматически извлекать данные из HTTP-ответов и использовать их в качестве payloads для последующих запросов по заданному правилу (regex, позиции текста, HTML-атрибуты). Для мутации (автоматизированной генерации) значений в BurpSuite / OWASP ZAP могут интегрироваться сторонние инструменты, такие как Radamsa. Однако инструменты не содержат функциональных возможностей по инструментированию кода тестируемых веб-приложений, и как следствие, не обеспечивают возможность проведения фаззинг-тестирования, реализующего генетические алгоритмы.
Рекомендации
- в соответствии с требованиями Методики выявления уязвимостей и недекларированных возможностей, утвержденной ФСТЭК России 25 декабря 2020 года, начиная с 5 уровня доверия, необходимо проводить мутационное фаззинг-тестирование объекта оценки с инструментированием кода, обеспечивающим реализацию генетических алгоритмов фаззинг-тестирования.
- для фаззинг-тестирования веб-приложения с инструментированием кода и использованием генетических алгоритмов необходимо выделить участки кода, непосредственно доступные потенциальному нарушителю для взаимодействия с ними и передачи значений аргументов в них (например: обработка JSON-запросов; обработка входных данных через API или веб-интерфейсы; обработка данных, передаваемых через HTTP-запросы), создать минимальный тестируемый интерфейс (fuzz target) — функцию, которая: принимает входные данные от фаззера → передает их в тестируемый участок кода (функцию, библиотеку, модуль).
- применение генетических инструментирующих фаззеров и REST-фаззеров не противоречит друг-другу. Данные типы инструментов ориентированы на нахождение различных типов дефектов, рекомендуется применять их совместно. В дальнейшем развитии методической базы запланировано расширение разделов, описывающих подходы к динамическому тестированию API.
Дополнительные информационные материалы
- Чат сообщества ФСТЭК России и ИСП РАН. Динамика.
- Методическая рекомендация № 2025-04-004
- Методическая рекомендация № 2025-04-007
- Документация на AFL++
- Документация на libfuzzer
Источник: https://t.me/sdl_inform/172