Информ::Доверенная Разработка
1.14K subscribers
55 photos
7 files
95 links
Информационный канал сообщества ФСТЭК России и ИСП РАН в области разработки безопасного и качественного ПО.

Описание семейства чатов и правила доступны тут: https://t.me/sdl_community/7859
Download Telegram
Методическая рекомендация № 2025-04-006 | Уровень критичности: 3

Область: Фаззинг-тестирование

Тип недостатка: Низкая стабильность фаззера. Снижение эффективности генетического фаззинга.

Описание: На рис. 1 и рис. 2 представлены статистики работы фаззера afl++ (UI-представление и текстовые логи работы фаззера). Характеристика стабильности работы фаззера - параметр Stability - является значимо отличной от целевого (максимального) значения 100%.

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

- недетерминированное поведение программы. Выполнение программы может зависеть, например, от системного таймера и тогда могут выполниться другие базовые блоки. Изменение окружения от запуска к запуску также может влиять на выполнение программы

- ошибки в инструментировании. Даже если программа выполняется по одному и тому же пути, ошибки в инструментировании могут привести к тому, что покрытие будет сохраняться недетерминированно

Значение параметра стабильности меньшее 95%, особенно в случае если отличие составляет не 2-3%, а 5% и более, является признаком сниженной эффективности фаззинг-процедуры, поскольку фаззер "перестает понимать" полезность смутированных сэмплов для открытия новых трасс выполнения - теряется (снижается) эффективность, достигаемая за счет генетического фаззинга (фаззинга с "обратной связью").

Рекомендации:

- анализировать значение стабильности фаззера, рассматривать его как один из важнейших показателей корректной организации фаззинг-тестирования

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

Дополнительные информационные материалы:

- описание стабильности в документации Crusher (прил. Г, на русском)
- описание подходов AFL к повышению стабильности (на английском)
- библиотека preeny, модуль derand
Методическая рекомендация № 2025-04-006 (графические материалы)
Методическая рекомендация № 2025-04-007 | Уровень критичности: 3

Область: Фаззинг-тестирование

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

Описание: На рис. 1 представлена статистика работы фаззера afl++ (UI-представление). Параметр last new find: none yet говорит о том, что за всё время работы фаззер не смог обнаружить ни одного нового пути выполнения программы.

При выполнении фаззинг-тестирования фаззер анализирует поведение программы, подавая на вход различные варианты тестовых данных (семплов). Основной метрикой эффективности работы фаззера afl++ является количество найденных уникальных путей выполнения исследуемой программы (объекта оценки). Если в процессе работы фаззера значение параметра last new find остается равным none yet, это указывает на то, что фаззер не может обнаружить ни одного нового пути выполнения программы. Полное отсутствие найденных путей выполнения программы является показателем неэффективности процедуры фаззинг-тестирования, так как основная цель фаззинг-тестирования заключается в исследовании различных сценариев работы программы для выявления потенциальных уязвимостей и ошибок. Такое тестирование не достигает своей цели и, как правило, не имеет практической ценности. В соответствии с требованиями Методики выявления уязвимостей и недекларированных возможностей, утвержденной ФСТЭК России 25 декабря 2020 года (далее - Методика ВУ НДВ), одним из критериев завершения фаззинг-тестирования является следующее условие:
В течение не менее двух часов фаззер не находит новой трассы или отсутствует прирост покрытия кода.

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

Дополнительное предупреждение (odd, check syntax!) может свидетельствовать о проблемах с форматом или синтаксисом входных данных, которые передаются фаззеру.

Возможные причины отсутствия найденных путей:
-
некорректный формат входных данных. Если семплы, передаваемые фаззеру, имеют неправильный формат или не соответствуют ожидаемому синтаксису, программа может игнорировать их или обрабатывать некорректно (например, если программа ожидает JSON, а входные данные содержат недопустимые символы или неверную структуру, фаззер не сможет обнаружить новые пути);

- ограниченность начального корпуса. Начальный набор тестовых данных (корпус) слишком мал или не покрывает достаточное количество состояний программы. Это ограничивает возможности фаззера по исследованию новых путей (например, если корпус содержит только один или несколько однотипных семплов, фаззер может не иметь достаточно разнообразных входных данных для анализа). На рис. 1 значение параметра corpus count равно 1 - это значит, что на вход исследуемой программе был передан всего один семпл, что противоречит требованиям Методики ВУ НДВ.
Мутирующий фаззер должен подавать на вход тестируемых модулей входные данные на основе коллекций, суммарно состоящих не менее чем из 20 образцов входных данных.


- конфигурационные ошибки фаззера. Неправильные настройки фаззера могут препятствовать обнаружению новых путей (например: ограничение глубины анализа; неправильные параметры мутации, которые не создают значимых изменений во входных данных).

Рекомендации:

- необходимо анализировать значения last new finds и corpus count для оценки эффективности работы фаззера

Дополнительные информационные материалы:

- описание основных параметров UI-представления AFL++
Методическая рекомендация № 2025-04-007 (графические материалы)
Методическая рекомендация № 2025-05-008 | Уровень критичности: 2

Область: Статический анализ

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

Описание: На рис. 1-5 представлены размеченные предупреждения о потенциальных уязвимостях кода, полученные от статического анализатора. При этом результаты проведения разметки не содержат достаточного обоснования, позволяющего подтвердить корректность вынесенных вердиктов (Won't fix - истинное срабатывание, которое по тем или иным причинам исправлять нецелесообразно; False Positive - ложное срабатывание инструмента статического анализа).

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

Рекомендации:

- необходимо каждое размеченное предупреждение сопровождать индивидуальным комментарием, содержащим обоснование вынесенного вердикта

- при формировании комментариев необходимо избегать общих фраз, таких как «Не эксплуатируемо» или «Не применимо». Вместо этого необходимо приводить конкретные аргументы и обоснования (рис. 6-7 - пример корректной разметки)

- в случае, если срабатывание статического анализатора является False Positive - настоятельно рекомендуется заводить заявку (Issue) на исправление бага в трекер инструмента статического анализа. Также необходимо указать в комментарии к разметке ссылку на данную заявку, если трекер является публичным

Дополнительные информационные материалы:

- Инструкция по проведению разметки результатов статического анализа
- ГОСТ Р 71207-2024
Методическая рекомендация № 2025-05-008 (графические материалы)
Методическая рекомендация № 2025-05-009 | Уровень критичности: 2

Область: Фаззинг-тестирование

Тип недостатка: Игнорирование необходимости анализа сэмплов, приведших к зависанию фаззинг-цели.

Описание: На рис. 1-2 представлены сведения о том, что фаззер обнаружил варианты входных данных, подача которых в фаззинг-цель приводит к "зависанию" (hang) фаззера - выполнению кода цели больше отведенного времени. На рис. 3 представлен пример итогового отчета по анализу (триажу) результатов запуска одной из упомянутых выше фаззинг-целей, в котором игнорируется факт обнаружения фаззером зависаний цели.

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

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

Рекомендации:

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

- рекомендуется стремиться к времени выполнения одной фаззинг-цели, не превышающем 10 миллисекунд на одном ядре современной серверной вычислительной системы

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

Дополнительные информационные материалы:

- трактовка результатов зависаний для фаззера AFL
- трактовка результатов зависаний для фаззера Crusher
Методическая рекомендация № 2025-05-009 (графические материалы)
Forwarded from Дмитрий Пономарев
Коллеги, доброго дня!

В пятницу состоится интереснейший эфир, посвященный теме РБПО. В качестве специального гостя - Ирина Сергеевна Гефнер, и она точно ответит на несколько волнующих всех вопросов (например - требуется ли сертификат ФСТЭК России на инструменты статического и динамического анализа 😎). Охват тем максимально широкий - сколько можно втолкнуть в мимолетные два часа! Вопросы - как драгоценные камни-самоцветы! Вместе с участниками дискуссии, в т. ч. великим&ужасным @Dmitry_Shmol, постараемся сделать уважаемой аудитории интересно&полезно - заглядывайте к нам на огонёк.

Также не пропустите второй эфир в этот день - важнейшая тема практической безопасности в наше время это защита цепочек поставок и композиционный анализ как часть этой процедуры. Список участников пока не опубликован, но по слухам ожидается Лёша-КАПО @alsmirn собственной персоной по ВКС 🤗
Forwarded from Дмитрий Пономарев
Коллеги, добрый день!

Пока готовимся к завтрашнему большому эфиру, спешим уже оповестить о следующем событии. 10 июля состоится Kaspersky Certification Day, да не простой, а золотой юбилейный - 10й!

На мой личный взгляд это одно из трёх главных отечественных мероприятий по безопасной и качественной разработке в году - наравне с зимними ТБФорум и ISPRASOPEN. Как всегда заявлены интереснейшие темы и традиционное большое выступление ФСТЭК России (Дмитрий Николаевич Шевцов), как всегда - теплейшие компания и кулуары, поскольку проход на конференцию "по спискам по рекомендации".

Что важно - уже второй год конференция будет транслироваться онлайн.

Что ещё важнее - несмотря на традиционный аншлаг и вход только по спискам и рекомендациям, глубокоуважаемая-неподражаемая Карина Олеговна ❤️‍🔥 - идеолог и организатор CertDay, участник РБПО-сообщества и просто чудесный человек - в этом году, в связи с юбилеем, приняла решение выделить небольшой батч мест для потенциальных новых участников - участников РБПО-сообщества ФСТЭК России и ИСП РАН!

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

Важно! Необходимо подать ваши заявки до 13:00 пятницы 27 июня, а лучше - прямо сейчас!

P.S. Вот как это было в таком далёком 2024м.

P.S.S. Пока трек докладов доформировывается на сайте, анонсирую доклад про ход испытаний инструментом статического анализа под патронажем ФСТЭК России 🔥