ДАО.2 — Фаззинг-тестирование объекта оценки
Раздел методики: 4.3.3
Применимость для уровня доверия 4 (уровень контроля 4): базовое исследование + усиления 1, 2, 3, 4, 5
Кто проводит: испытательная лаборатория
Важно: для уровня контроля 4 — выполняется на специальных отладочных сборках ОО со встроенными датчиками ошибок (подготовленных на этапе ПОД.2, усиление 1)
Задача исследования
Выявление недостатков безопасности ОО самостоятельно и в результате анализа процессов разработки ОО по ГОСТ Р 56939-2024 — методом и инструментами фаззинг-тестирования и сбора покрытия ОО.
Исходные данные
От разработчика ОО (п. 2.3 Методики):
- б) Исходный код ОО
- г) Дистрибутив ОО
- д) Результаты выполнения процессов разработки ОО по ГОСТ Р 56939-2024: результаты фаззинг-тестирования (фаззинг-тесты, коллекции входных данных, правила, словари, покрытие)
- ж) ⭐ Фаззинг-тесты и синтетические тесты; тестовая документация с описанием целей, процедур, фактических результатов фаззинга (журналы, сведения об обнаруженных сбоях); конфигурации инструментов фаззинга
- з) При внесении изменений в сертифицированный ОО: план поддержки безопасности заимствованных компонентов
- н) Методики фаззинг-тестирования open-source компонентов с портала portal.linuxtesting.ru
Из предыдущих этапов:
- Сведения из ПОД.1: методика проведения исследований, поверхность атаки, перечень анализируемых модулей, перечень критичных участков кода (для синтетических целей, усиление 4)
- Испытательный стенд по результатам ПОД.2, включая специальные отладочные сборки со встроенными датчиками срабатывания ошибок
- Сведения о достигнутом покрытии модулей по результатам ДАО.1 (для определения приоритетов фаззинга)
Требования к проведению исследования
Оценка результатов разработчика
При фаззинг-тестировании оцениваются исходные данные по п. 3.1 Методики и реализация разработчиком следующих требований:
а) Охват поверхности атаки: Выполняется фаззинг-тестирование интерфейсов, относящихся к поверхности атаки ОО.
- Не требуется фаззинг кода, выполняющегося в контексте браузера.
- Допускается проведение фаззинга только в одной среде функционирования, обеспечивающей наиболее эффективное выполнение тестирования.
б) Специализированные фаззеры: Выполняется фаззинг-тестирование интерфейсов, для которых доступны специализированные фаззеры, адаптированные для конкретных типов интерфейсов (SMI, USB, SQL и другие). Фаззинг веб-приложений — специализированными фаззерами для веб.
Для фаззеров с коллекциями входных данных:
- для каждого подлежащего фаззингу интерфейса сформированы и применены коллекции примеров входных данных
- коллекции вызывают использование различных функциональных возможностей тестируемого интерфейса
- коллекции формируются на основе: публично доступных коллекций, генераторов коллекций, инструментов автоматического определения и формирования коллекций, экспертного метода
Для фаззеров без коллекций (на основе правил):
- для каждого подлежащего фаззингу интерфейса сформированы и применены правила порождения входных данных, вызывающие использование различных функциональных возможностей
Для фаззеров со словарями:
- для интерфейсов, где применим такой подход, сформированы и применены словари лексем
в) Анализ журналов фаззера: Для каждой тестируемой цели (интерфейс, участок кода) выполняется:
- анализ журналов фаззера на предмет зависаний и сбоев работы ОО (в т.ч. от датчиков ошибок)
- подтверждение воспроизведения выявленных фактов в штатном режиме функционирования ОО
Если разработчик участвует в программах Центра исследований
Если разработчик ОО выполнил фаззинг подлежащих тестированию модулей в объёме программы исследований безопасности Центра исследований — требования п. 4.3.3 в отношении этих модулей считаются выполненными.
Если результаты разработчика не соответствуют требованиям
Испытательная лаборатория оценивает число целей, в отношении которых не выполнены требования.
- Если число таких целей не превышает 3 → испытательная лаборатория выполняет фаззинг самостоятельно либо принимает решение о невозможности дальнейших исследований.
- Если число таких целей превышает 3 → принимается решение о невозможности проведения дальнейших исследований.
Если результаты разработчика соответствуют требованиям
Испытательная лаборатория проверяет результаты фаззинга, выявившие воспроизводимые сбои и зависания целей.
Критерии:
- Доля неверно размеченных результатов ≤ 10% → исследования продолжаются после устранения недостатков.
- Доля неверно размеченных результатов > 10% → принимается решение о невозможности дальнейших исследований.
Самостоятельная разработка фаззинг-целей испытательной лабораторией
Испытательная лаборатория самостоятельно разрабатывает не менее 2 новых фаззинг-целей и выполняет их фаззинг-тестирование в составе ОО
ИЛИ
значительно дорабатывает не менее 3 существующих комплектов фаззинг-тестов (улучшение коллекции, расширение словаря, добавление нового датчика ошибок, учёт сложных зависимостей мутируемых параметров).
При выборе подлежащего тестированию кода — приоритет отдаётся целям, наиболее значимым для безопасности ОО (с обоснованием выбора).
Дополнительные требования (усиления) для уровня контроля 4
Усиление 1 — Генетические алгоритмы фаззинга (инструментирование)
Испытательная лаборатория проверяет, что используемый фаззер обеспечивает применение генетических алгоритмов фаззинг-тестирования за счёт инструментирования кода (если доступны инструменты для данных языков программирования, компиляторов и среды функционирования).
Допустимые виды инструментирования:
- по исходным текстам
- по бинарному (в т.ч. промежуточному) представлению
- по бинарному представлению — если модуль на интерпретируемом языке компилировался в промежуточное представление или подвергался «Ahead of Time» компиляции
Усиление 2 — Эффективность фаззинга (показатели прироста)
Испытательная лаборатория проверяет выполнение при фаззинг-тестировании ОО как минимум одного из следующих условий:
а) Для фаззеров, подсчитывающих число найденных уникальных путей:
Число уникальных путей, найденных фаззером, должно не менее чем в 2 раза превышать число образцов входных данных, поданных на вход фаззеру.
б) Для фаззеров, подсчитывающих достигнутое покрытие:
Процент покрытия, достигнутого фаззером, должен не менее чем в 2 раза превышать процент покрытия, достигаемый в результате подачи на вход фаззеру стартовых образцов.
Условие завершения фаззинга: При достижении покрытия по строкам исходного кода ≥ 90% (по базовым блокам ≥ 80%) — испытательная лаборатория может не учитывать дальнейший прирост покрытия при принятии решения о завершении фаззинга.
Усиление 3 — Open-source модули по методикам Центра исследований
Испытательная лаборатория проверяет, что для тестируемых модулей с открытым исходным кодом, для которых определены методики фаззинг-тестирования (п. 2.3, подпункт «н» Методики, portal.linuxtesting.ru), фаззинг-тестирование выполнено в соответствии с требованиями этих методик.
Усиление 4 — Синтетические фаззинг-цели для критичных участков кода
Испытательная лаборатория проверяет, что фаззинг-тестирование выполнялось в отношении специально подготовленных синтетических целей, сформированных с целью эффективного тестирования участков кода, выделенных при ПОД.1 (усиление 4) — критичных участков с высокой сложностью, взаимодействующих с данными от нарушителя.
Синтетические цели:
- Функции-обёртки, вызывающие тестируемые участки кода целей.
- Конвертируют мутируемые фаззером данные во входные параметры тестируемых функций в соответствии со спецификациями интерфейсов (протоколов), типов данных и контекста выполнения.
При фаззинге интерфейсов ОО допускается ограничиться фаззингом в отношении синтетических целей. Достаточность состава выделенных целей определяется испытательной лабораторией непосредственно в ходе ДАО.2 с обоснованием в протоколах исследований.
Усиление 5 — Длительность фаззинга каждой цели
Испытательная лаборатория проверяет, что тестирование каждой фаззинг-цели продолжается до состояния, когда в течение не менее двух часов фаззер:
- не находит нового пути, или
- отсутствует прирост покрытия
при условии, что на вход подаются уникальные мутированные данные.
Требования к результатам исследования
Если результаты разработчика соответствуют требованиям п. 3.1 и п. 2.3 Методики — испытательная лаборатория допускается повторно использовать их при оформлении материалов исследований.
Результаты исследований фиксируются в материалах исследований (п. 5.2 Методики).
Дополнительно фиксируется в электронных приложениях:
- структурное покрытие для каждого тестируемого модуля
Дополнительно фиксируется в материалах исследований:
- параметры сборки каждой фаззинг-цели
- принципы формирования коллекций, правил, словарей
- достигнутое структурное покрытие для каждой фаззинг-цели
Результаты фаззинга передаются разработчику ОО для развития применяемого комплекта тестов.
Проверка артефактов результата
Формат для агента: артефакт считается принятым только при выполнении всех критериев; неприменимые пункты фиксируются с причиной.
| Артефакт | Что проверить | Критерий приемки |
|---|---|---|
| Матрица фаззинг-целей | Интерфейсы поверхности атаки и критичные участки кода сопоставлены с фаззинг-целями | Все требуемые цели включены; если требований не выполнено более чем для 3 целей, зафиксирована невозможность продолжения |
| Отладочные сборки и инструментирование | Для каждой цели указаны сборка, среда, архитектура, датчики и способ инструментирования | Используются сборки ПОД.2; генетические алгоритмы с инструментированием применены, если доступны для языка/платформы |
| Входные данные фаззинга | Для каждой цели есть коллекции, правила или словари; указаны источники и принципы формирования | Входные данные задействуют различные функциональные возможности интерфейса; уникальные мутированные данные подтверждены для условия завершения |
| Журналы фаззера | Есть логи запусков, зависаний, сбоев, срабатываний датчиков и воспроизведения в штатном режиме | Все воспроизводимые сбои размечены; доля неверной разметки не превышает 10% |
| Вклад испытательной лаборатории | Зафиксированы новые или доработанные цели/комплекты тестов | Не менее 2 новых целей или не менее 3 существенно доработанных комплектов; выбор целей обоснован значимостью для безопасности |
| Метрики эффективности | Приложены число стартовых образцов, уникальные пути, стартовое и итоговое покрытие | Выполнено хотя бы одно: уникальные пути не менее 2× стартовых образцов или итоговое покрытие не менее 2× покрытия стартовых образцов |
| Порог высокого покрытия | Если применялось завершение по высокому покрытию, указаны строки/базовые блоки | Покрытие по строкам не менее 90% или по базовым блокам не менее 80% |
| Длительность фаззинга | Для каждой цели есть временная шкала последнего нового пути/прироста покрытия | Фаззинг шел не менее 2 часов без нового пути или прироста покрытия при подаче уникальных мутированных данных |
| Материалы передачи разработчику | Есть перечень переданных результатов и дата/способ передачи | Результаты по п. 4.3.3 переданы разработчику для развития комплекта тестов |
Чек-лист проверки результатов перед отправкой
Формат: каждый пункт проверяется как выполнено / не выполнено / неприменимо.
Блок 1: Отладочные сборки (предварительное условие)
- Фаззинг-тестирование выполнено на специальных отладочных сборках со встроенными датчиками ошибок (из ПОД.2, усиление 1).
- Выявленные механизмы в коде ОО, препятствующие динамическому анализу, зафиксированы — затронутые модули направлены на ЭКО.
Блок 2: Охват интерфейсов поверхности атаки
- Фаззинг-тестирование выполнено для всех интерфейсов из поверхности атаки ОО.
- Для интерфейсов с доступными специализированными фаззерами — использованы специализированные фаззеры (SMI, USB, SQL, веб и др.).
- Для веб-интерфейсов — использованы специализированные веб-фаззеры.
Блок 3: Формирование входных данных
- Для каждого тестируемого интерфейса сформированы коллекции/правила/словари входных данных.
- Коллекции охватывают различные функциональные возможности тестируемого интерфейса.
- Источники коллекций задокументированы (публичные коллекции, генераторы, экспертный метод).
Блок 4: Анализ журналов фаззера
- Для каждой фаззинг-цели выполнен анализ журналов на предмет зависаний и сбоев.
- Все воспроизводимые зависания и сбои подтверждены в штатном режиме функционирования ОО.
- Результаты задокументированы.
Блок 5: Самостоятельный вклад испытательной лаборатории
- Разработано не менее 2 новых фаззинг-целей ИЛИ доработано не менее 3 существующих комплектов фаззинг-тестов.
- Обоснование выбора тестируемых целей задокументировано.
Блок 6: Генетические алгоритмы (усиление 1)
- Используемый фаззер поддерживает генетические алгоритмы с инструментированием кода.
- Инструментирование выполнено (по исходным текстам или бинарному представлению).
- При использовании AoT-компиляции — инструментирование выполнено по бинарному представлению.
- Если инструменты недоступны для конкретных языков/платформ — зафиксировано обоснование.
Блок 7: Показатели эффективности (усиление 2)
- Для фаззеров, считающих уникальные пути: число путей ≥ 2× числа стартовых образцов (или обоснование неприменимости).
- Для фаззеров, считающих покрытие: итоговое покрытие ≥ 2× покрытия от стартовых образцов (или обоснование неприменимости).
- При достижении покрытия по строкам ≥ 90% (по базовым блокам ≥ 80%): зафиксировано как условие завершения фаззинга.
Блок 8: Open-source модули (усиление 3)
- Определён перечень open-source фаззинг-целей, для которых на portal.linuxtesting.ru опубликованы методики фаззинга.
- Фаззинг выполнен в соответствии с требованиями указанных методик.
- Результаты задокументированы.
Блок 9: Синтетические цели (усиление 4)
- Подготовлены синтетические фаззинг-цели для всех критичных участков кода из ПОД.1 (усиление 4).
- Функции-обёртки корректно конвертируют мутированные данные в параметры тестируемых функций.
- Достаточность состава синтетических целей определена и обоснована в протоколе исследований.
Блок 10: Длительность фаззинга (усиление 5)
- Фаззинг каждой цели продолжался до состояния «≥ 2 часов без нового пути/прироста покрытия».
- Факт достижения условия завершения зафиксирован для каждой цели в протоколе.
- На вход при достижении условия подавались уникальные мутированные данные.
Блок 11: Оформление результатов
- Результаты зафиксированы в материалах исследований (п. 5.2 Методики).
- Для каждой фаззинг-цели приложены: параметры сборки, принципы формирования входных данных, структурное покрытие.
- Результаты фаззинга переданы разработчику ОО.
- Все выявленные недостатки безопасности задокументированы по форме таблицы 6 Методики.
Задачи СИ по данному разделу
Рабочий перечень задач для Redmine: Перечень_задач_СИ_М3.md
| Код задачи | Наименование |
|---|---|
| СИ-ДАО2.01 | Сформировать матрицу фаззинг-целей |
| СИ-ДАО2.02 | Проверить фаззинг-результаты разработчика |
| СИ-ДАО2.03 | Подготовить входные данные фаззинга |
| СИ-ДАО2.04 | Подготовить новые или доработанные цели ИЛ (≥2 новых ИЛИ ≥3 доработанных) |
| СИ-ДАО2.05 | Подготовить синтетические цели для критичных участков кода (усил. 4) |
| СИ-ДАО2.06 | Выполнить фаззинг с инструментированием (усил. 1) |
| СИ-ДАО2.07 | Проверить эффективность фаззинга (прирост ≥2×, усил. 2) |
| СИ-ДАО2.08 | Проверить длительность фаззинга каждой цели (≥2 ч без прироста, усил. 5) |
| СИ-ДАО2.09 | Проанализировать журналы фаззера |
| СИ-ДАО2.10 | Проверить open-source цели по методикам Центра исследований (усил. 3) |
| СИ-ДАО2.11 | Передать результаты фаззинга разработчику |