Перейти к содержанию

ДАО.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 Передать результаты фаззинга разработчику