Проверки кода по ГОСТ Р 56939-2024: статический и динамический анализ, фаззинг, тестирование

Канал в MAX
Редакция ГрамотаИБ · Опубликовано 16.10.2026

Статический и динамический анализ, фаззинг, экспертиза кода, композиционный анализ, функциональное и нефункциональное тестирование: что ГОСТ Р 56939-2024 требует от каждой проверки, что записать в регламент, какие отчёты показать проверяющему и какие свободные инструменты подойдут.

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

Эта статья — о том, что стандарт требует от каждой проверки, что записать в её регламент и какие отчёты потом показать проверяющему. Как устроено руководство в целом и откуда берётся обязанность, разобрано в статье Регламент безопасной разработки ПО по ГОСТ Р 56939-2024.

Кому нужны эти проверки

Оператору государственной информационной системы, который сам пишет ПО. Пункт 50 Требований, утверждённых приказом ФСТЭК России от 11.04.2025 № 117, обязывает такого оператора реализовать меры разделов 4 и 5 ГОСТ Р 56939-2024. Все шесть проверок входят в раздел 5. Если программу пишет подрядчик, требования стандарта можно включить в техническое задание.

Субъекту КИИКритическая информационная инфраструктура — Информационные системы и сети госорганов и организаций ключевых отраслей; режим защиты установлен 187-ФЗ., который создаёт или модернизирует значимый объект. Пункт 29.3 Требований, утверждённых приказом ФСТЭК России от 25.12.2017 № 239, касается прикладного ПО, которое внедряют при создании, модернизации, реконструкции или ремонте значимого объекта и которое обеспечивает его функции. Для такого ПО подпункт 29.3.2 требует статический анализ исходного кода и фаззинг-тестирование, а для объектов первой категории — ещё и динамический анализ кода. Это требование к самой программе: оно действует, кто бы её ни писал. Выполнение оценивают на этапе проектирования по материалам разработчика, а результаты оценки включают в проектную документацию (пункт 29.4).

Разработчику на заказ. Объём обязательств задают договор и техническое задание. Если документ требует соответствия стандарту целиком, выполняются все его требования, кроме рекомендуемых (пункт 4.14). Для научно-исследовательских и опытно-конструкторских работ процессы перечисляют в техническом задании явно и могут ограничить их объём (пункт 4.15).

Шесть проверок и что каждая ищет

Проверки не заменяют друг друга. Каждая ловит свой класс ошибок, и у каждой есть слепые зоны, которые закрывает соседняя.

Проверка (пункт ГОСТ)Что ищетКогда удобно проводитьГлавное доказательство
Экспертиза кода (5.9)Логические ошибки, отступления от правил кодирования, подозрительные конструкции, которые не видит анализаторПри слиянии изменений в основную веткуРезультаты экспертизы: что смотрели, что нужно изменить, вопросы к коду
Статический анализ (5.10)Опасные конструкции и типовые ошибки в исходном коде без его запускаНа каждое изменение кода в конвейере сборкиОтчёт анализатора со всеми срабатываниями и их разметкой
Динамический анализ и фаззинг (5.11)Ошибки, которые проявляются только при выполнении: аварийные завершения, зависания, ошибки работы с памятьюРегулярно и после изменений модулей поверхности атакиОтчёты динамического анализа и фаззинга с разбором аварийных завершений
Композиционный анализ (5.16)Известные уязвимости в заимствованных библиотеках и компонентахНепосредственно перед сборкой и при появлении новых сведений об уязвимостяхПеречень зависимостей и результаты его проверки
Функциональное тестирование (5.18)Ошибки в работе функций, в том числе функций защиты: входа, разграничения доступа, журналированияПеред выпуском версииПлан, отчёт и журналы тестирования, записи в системе управления ошибками
Нефункциональное тестирование (5.19)Недостатки, которыми может воспользоваться нарушитель: интерфейсы, сетевые взаимодействия, обработка чужих данныхПеред выпуском значимых версий и по графикуОтчёт с найденными уязвимостями и сверка с моделью угроз

Подпункт 5.15 о секретах стоит рядом. Это не испытание программы, а проверка того, что в код и файлы настроек не попали пароли, ключи и токены.

Что общего у всех проверок

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

  1. Регламент. Кто проводит проверку, по каким правилам выбирают инструменты и проверяемые модули, что считается ошибкой, которую надо исправить, и когда проверку повторяют. Регламенты всех проверок можно включить в одно руководство по разработке безопасного ПО (пункт 4.12).
  2. Перечень инструментов. Название, версия и к чему инструмент применим: к какому языку или модулю.
  3. Отчёт с разбором. Не просто выгрузка инструмента, а решение по каждой находке: ошибка или ложное срабатывание, исправлять или нет, когда.
  4. Повтор. Проверку повторяют после исправлений и после изменений, которые могли повлиять на результат. Для статического анализа поводы повтора названы в самом стандарте, регламент их уточняет, но не отменяет.

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

Экспертиза исходного кода (5.9)

Экспертиза — это чтение кода человеком. Стандарт имеет в виду анализ кода разработчиком, который сам этот код не писал. Экспертиза нужна и там, где для языка нет инструментов статического анализа, и там, где выводы анализатора нужно подтвердить.

Что проверять в первую очередь. Модули, которые составляют поверхность атаки: всё, что принимает данные извне, отвечает за вход и права, работает с файлами и сетью. Стандарт прямо называет их приоритетом (подпункт 5.9.2.2).

Что записать в регламент (подпункт 5.9.3.1):

  • кто участвует в экспертизе и кто за что отвечает;
  • базовые правила: сколько участников, какие области кода, какие инструменты;
  • основные проверки — сценарии, шаблоны или чек-листы.

Что должно остаться в результатах (подпункт 5.9.3.2): какие модули смотрели, какие изменения нужны, какие места кода непонятны и требуют объяснений, что можно улучшить.

Удобнее всего проводить экспертизу через запросы на слияние в системе контроля версий. Стандарт это рекомендует (подпункт 5.9.2.3). Тогда результаты сохраняются сами: комментарии, решения и исправления привязаны к изменению кода.

Экспертиза помогает найти подозрительную логику, которую пропускают автоматические средства. Анализатор вряд ли отличит скрытую служебную роль, которая включается по «секретному» значению параметра, от обычной функции. Человек, который не писал этот код и спрашивает «зачем это здесь», имеет больше шансов это заметить.

Статический анализ (5.10)

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

Что записать в регламент (подпункт 5.10.3.1):

  • роли и обязанности;
  • как выбирают инструменты;
  • какие программы и модули анализируют;
  • как обрабатывают срабатывания;
  • какие типы ошибок и какой критичности обязательно устраняют и в каком порядке;
  • периодичность анализа или события, после которых его повторяют;
  • когда пересматривают настройки инструментов.

Каждый язык под анализом. Инструменты подбирают так, чтобы был покрыт каждый язык программирования в составе ПО (подпункт 5.10.2.2). Один инструмент может поддерживать несколько языков. Но если система написана на Java, а отчёты собираются скриптами на Python, анализ одной Java оставляет дыру. В перечне инструментов указывают название, версию и языки (подпункт 5.10.3.2).

Все срабатывания регистрируются. Стандарт требует фиксировать все предупреждения анализатора (подпункт 5.10.2.4), а отчёт должен содержать и сами срабатывания, и их разметку (подпункт 5.10.3.4). Разметка — это решение по каждому срабатыванию: истинная ошибка или ложное срабатывание. Отчёт без разметки показывает, что анализатор запускали, но не показывает, что результаты кто-то разбирал.

Ложные срабатывания неизбежны. Анализатор ошибается в обе стороны: сообщает о проблемах, которых нет, и пропускает настоящие. Слишком строгая настройка тонет в шуме, и команда перестаёт читать отчёты. Слишком мягкая пропускает ошибки. Поэтому настройки фиксируют и пересматривают при заданных событиях: смене правил сборки, обновлении анализатора, появлении сведений о новых уязвимостях (подпункт 5.10.2.5).

Когда повторять. После исправления найденных ошибок, после изменений кода, при смене версии компилятора или среды выполнения и при обновлении самого анализатора (подпункт 5.10.2.6). На практике анализ встраивают в конвейер сборки и запускают на каждое изменение, а полный прогон делают перед выпуском версии.

Динамический анализ и фаззинг (5.11)

Динамический анализ исследует программу во время работы. Стандарт допускает разные методы: подачу заведомо некорректных данных, профилирование, отладку, поиск защищаемой информации в памяти, санитайзеры и двоичное инструментирование. Санитайзеры — это датчики, которые компилятор встраивает в программу. Они останавливают её на ошибке работы с памятью, неопределённом поведении или гонке потоков, которые иначе прошли бы незаметно.

Фаззинг — частный случай динамического анализа. Фаззер подаёт на вход программе огромное число изменённых входных данных и следит за реакцией. Распространённые фаззеры работают с обратной связью по покрытию: если вход ведёт программу по новому пути выполнения, фаззер сохраняет его и меняет дальше. Если программа падает или зависает, вход сохраняют для разбора. Стандарт требует фаззинг отдельно (подпункт 5.11.2.7).

Что записать в регламент (подпункт 5.11.3.1):

  • роли и обязанности;
  • как выбирают инструменты, методы и проверяемые модули;
  • какие срабатывания требуют разбора — например, аварийная остановка или зависание;
  • как устраняют найденные ошибки;
  • когда повторяют динамический анализ;
  • как часто проводят фаззинг и когда его считают завершённым.

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

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

Критерий завершения. Фаззинг может идти бесконечно, поэтому регламент задаёт, когда его останавливать. Обычно это минимальная длительность и отсутствие новых путей выполнения в течение заданного времени. Конкретные числа стандарт не устанавливает — их выбирает разработчик и обосновывает в регламенте.

Что должно быть в отчётах. Отчёт динамического анализа содержит срабатывания и результаты их разбора (подпункт 5.11.3.5). Отчёт фаззинга — длительность, число аварийных завершений, число найденных путей выполнения и разбор каждого аварийного завершения (подпункт 5.11.3.6). Найденные ошибки устраняют по принятым процедурам (подпункт 5.11.2.9), а модуль проверяют повторно (подпункт 5.11.2.6).

Композиционный анализ (5.16)

Современная программа во многом состоит из чужого кода: библиотек, фреймворков, пакетов. Вместе с ними в программу приходят их уязвимости и, в худшем случае, закладки. Композиционный анализ отвечает на вопрос, из чего собрана программа и нет ли в этих компонентах известных уязвимостей.

Перечень зависимостей. Основа анализа — перечень заимствованных компонентов с версиями и источником каждого (подпункт 5.16.3.2). Учитывайте не только прямые зависимости, но и транзитивные: библиотеки, которые подтянули ваши библиотеки. Перечень удобно формировать автоматически в машиночитаемом формате спецификации компонентов (SBOMSoftware Bill of Materials — перечень компонентов ПО — Список заимствованных компонентов программы с версиями; основа композиционного анализа.), например CycloneDX или SPDX.

Проверка перед сборкой. Заимствованные компоненты, которые входят в поверхность атаки, проверяют на известные уязвимости непосредственно перед сборкой (подпункт 5.16.2.4). Проверка раз в квартал этого требования не выполняет: между проверками в сборку попадёт библиотека с уязвимостью, опубликованной вчера.

Где искать уязвимости. В Банке данных угроз безопасности информации ФСТЭКФедеральная служба по техническому и экспортному контролю — Регулятор технической защиты информации (ИСПДн, ГИС, КИИ); ведёт реестр сертифицированных СЗИ. России и в международных базах CVE и OSV. Сведения в базах отличаются: уязвимость может быть описана в одной базе и отсутствовать в другой. Поэтому разумно сверяться с несколькими.

Что записать в регламент (подпункт 5.16.3.1): роли, как отслеживают уязвимости заимствованных компонентов, как проводят анализ, какие компенсирующие и защитные меры принимают, как часто проводят анализ.

Что делать с найденной уязвимостью. Корректирующие действия обязательны (подпункт 5.16.2.5), а правила компенсирующих мер записывают в регламент. Каким может быть содержание этой работы, стандарт показывает на примере (подпункт 5.16.3.5). Сначала оценивают, применима ли уязвимость к вашей программе: используется ли уязвимая функция и достижима ли она для нарушителя. Если применима — обновляют компонент. Для компонента с закрытым кодом обращаются к поставщику и обновляют компонент, когда выйдет исправление; до этого принимают компенсирующие меры. Для компонента с открытым кодом, если обновить версию нельзя, исправляют его своими силами. Каждое решение полезно записывать, включая решение «не применимо» с обоснованием.

Что показать проверяющему: перечень зависимостей, описание того, как он поддерживается в актуальном виде и какими инструментами, журналы его обновлений, результаты анализа с критичностью найденного и результаты корректирующих действий (подпункты 5.16.3.2–5.16.3.5).

Секреты в коде (5.15)

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

Стандарт предлагает три меры: регламент использования секретов, проверку кода и файлов настроек на секреты при каждом изменении и систему управления секретами для их хранения и выдачи (подпункты 5.15.2.1–5.15.2.4). У подраздела есть особенность: его требования применяются по усмотрению и в нужном объёме. Но проверка изменений на секреты дешева и легко встраивается в конвейер, поэтому отказываться от неё неразумно.

В регламенте полезно описать типы секретов и сроки их действия, порядок выдачи доступа, порядок смены и действия при компрометации (подпункт 5.15.3.1). Если секрет всё же попал в репозиторий, удалить его из кода недостаточно: его надо сменить, потому что старое значение осталось в истории.

Код от поставщиков (5.17)

Отдельный процесс касается кода, полученного через цепочки поставок: библиотек, предсобранных компонентов, инструментов. Его проверяют на внедрение вредоносного ПО (подпункт 5.17.2.5). Результаты должны содержать как минимум отчёты антивирусного сканирования (подпункт 5.17.3.5). Проверку удобно встроить туда же, где выполняется композиционный анализ: перед сборкой.

Функциональное тестирование (5.18)

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

План тестирования (подпункт 5.18.3.1) содержит роли, описание тестового стенда, сценарии для каждой функции, критерии повторного тестирования, критерии завершения и остановки. Сценарий описывает проверяемое требование, действия, ожидаемый результат и критерий успеха. Удобно связать каждый сценарий с требованием, которое он проверяет: тогда видно, какие требования остались без тестов.

Уровни. Тестируют отдельные модули, подсистемы и программу целиком (подпункт 5.18.2.3). Отчёт должен позволять понять, какие тесты на каком уровне выполнены.

Отчёт (подпункт 5.18.3.2) содержит версию и номер сборки, среду, выполненные сценарии и их порядок, что не проверялось, полученные результаты, найденные и исправленные ошибки, выводы.

Журналы и система управления ошибками. Ход тестирования регистрируют: время запуска и завершения сценария, результат, изменения тестируемой программы, сбои (подпункт 5.18.3.3). Найденные ошибки ведут в системе управления ошибками. По каждой записывают дату, сценарий, модуль, категорию, принятое решение, подтверждение разработчика и сведения об исправлении (подпункт 5.18.3.4). Обычный трекер задач с этими полями подходит.

Нефункциональное тестирование (5.19)

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

Объём определяет разработчик (подпункт 5.19.2.1). Это не разрешение ничего не делать: выявлять интерфейсы, выполнять тесты с имитацией нарушителя и уточнять по их итогам модель угроз всё равно нужно (подпункты 5.19.2.3–5.19.2.5). Выбор объёма полезно обосновать в регламенте.

Что записать в регламент (подпункт 5.19.3.1):

  • какие версии тестируют и как часто;
  • методы и средства;
  • роли и обязанности;
  • типовые сценарии тестирования;
  • возможности и мотивацию нарушителя по результатам моделирования угроз;
  • типовые сценарии атак для основных режимов работы программы.

Связь с моделью угроз. У нефункционального тестирования две цели. Первая — найти недостатки. Вторая — подтвердить, что описание поверхности атаки, модель угроз и архитектура полны (подпункт 5.19.1.1). Если тестировщик нашёл интерфейс, которого нет в описании поверхности атаки, исправляют не только программу, но и описание. Результаты сравнения и перечень изменений — отдельный артефакт (подпункт 5.19.3.3).

Для веб-приложений типовой набор проверок — внедрение команд SQL, межсайтовый скриптинг, подделка межсайтовых запросов, выход за пределы каталога при работе с файлами, обход авторизации. Защита от них известна: параметризованные запросы вместо склейки строк, экранирование вывода и политика безопасности содержимого, токены против подделки запросов, нормализация и белые списки путей.

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

Как встроить проверки в работу

Проверки, которые запускают вручную от случая к случаю, не выдерживают первой срочной задачи. Надёжнее встроить их в конвейер сборки, который стандарт и так требует (раздел 4). Один из рабочих вариантов:

МоментЧто запускается
Каждое изменение кодаСтатический анализ, проверка на секреты, экспертиза через запрос на слияние
Каждая сборкаКомпозиционный анализ зависимостей поверхности атаки
По графику (например, ночью)Фаззинг модулей поверхности атаки, полный композиционный анализ
Перед выпуском версииФункциональное тестирование, нефункциональное тестирование в объёме из регламента, повторный разбор неустранённых срабатываний
Новые сведения об уязвимостиВнеплановый композиционный анализ и пересмотр настроек анализаторов

Важно, чтобы конвейер сохранял результаты. Отчёт, который был на экране и исчез, проверяющему не покажешь. Настройте хранение отчётов вместе с номером сборки.

Инструменты без затрат на лицензии

Требования ГОСТ Р 56939-2024 к этим процессам не называют конкретных продуктов и не требуют сертификации инструментов анализа. Требует он другого: инструмент подходит к языку и модулю, описан в регламенте с версией, а его результаты разбираются. Начать можно со свободных инструментов.

ПроверкаСвободные инструменты
Статический анализSemgrep, SonarQube Community Build, Cppcheck, Clang Static Analyzer; для отдельных языков — gosec, Bandit, SpotBugs
Динамический анализ и фаззингAFL++, libFuzzer, встроенный фаззинг Go, Jazzer для Java, Atheris для Python, cargo-fuzz для Rust; санитайзеры ASan, UBSan, TSan, MSan
Композиционный анализOWASP Dependency-Check, OWASP Dependency-Track, Trivy; для перечня компонентов — Syft, cdxgen
СекретыGitleaks, detect-secrets; для хранения — HashiCorp Vault, OpenBao
Нефункциональное тестированиеOWASP ZAP, sqlmap, Nmap — только на своём тестовом стенде

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

Частые ошибки

  • Анализатор есть, разметки нет. Отчёт с тысячей срабатываний без решений по ним не подтверждает процесс.
  • Один инструмент на всё. Анализатор основного языка не видит скрипты, шаблоны и код на втором языке.
  • Фаззинг без коллекции входных данных и без критерия остановки. Запустили на пять минут на одном примере и записали «проведено».
  • Перечень зависимостей только из прямых зависимостей. Уязвимость нередко сидит в библиотеке, которую подтянула ваша библиотека.
  • Секрет удалили из кода, но не сменили. Старое значение осталось в истории репозитория.
  • Тестирование на проникновение, отделённое от модели угроз. Найденное не возвращается в описание поверхности атаки, и следующая модель угроз повторяет старые пробелы.
  • Регламент обещает больше, чем делается. Периодичность в регламенте должна совпадать с той, что видна в отчётах.

Если вы сертифицируете процессы разработки

Изготовитель средств защиты информации может сертифицировать сами процессы безопасной разработки. Порядок установлен приказом ФСТЭК России от 01.12.2023 № 240. Орган по сертификации, кроме документов, проверяет артефакты процессов, наличие средств статического, динамического и композиционного анализа и проводит инструментальный контроль среды разработки (пункт 19 Порядка). Подробности — в статье Сертификация процессов безопасной разработки ПО.

Частые вопросы

Можно ли обойтись без фаззинга, если есть статический анализ? Нет. Стандарт требует оба вида анализа, и для ПО значимого объекта КИИ подпункт 29.3.2 приказа № 239 называет фаззинг отдельно. Статический анализ не видит ошибок, которые проявляются только при выполнении, а фаззинг не доходит до редких веток кода.

Нужно ли устранять все срабатывания анализатора? Нет. Каждое срабатывание нужно разобрать. Какие ошибки и какой критичности устраняются обязательно и в каком порядке, определяет регламент (подпункт 5.10.3.1). Ложные срабатывания помечают с обоснованием.

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

Мы используем готовую библиотеку с открытым кодом. Нужно ли её анализировать статически? Стандарт относит к статическому анализу и заимствованный код: цель процесса — не допустить и опасных конструкций из заимствованного кода (подпункт 5.10.1.1). Какие модули анализировать, определяет регламент. Известные уязвимости библиотеки ищут композиционным анализом.

Подходит ли обычный трекер задач как система управления ошибками? Да, если в нём записываются сведения из подпункта 5.18.3.4: дата, сценарий, модуль, категория, решение, подтверждение и исправление.

Подрядчик пишет программу для значимого объекта КИИ. Кто проводит проверки? Проверки проводит разработчик программы. Выполнение требований оценивает лицо, которое создаёт, модернизирует или защищает значимый объект, на этапе проектирования по материалам разработчика, представленным по техническому заданию (пункт 29.4). Поэтому состав материалов о проверках закладывают в техническое задание.

Проверить себя можно бесплатными калькуляторами: нужен ли вам ГОСТ Р 56939-2024 и на каком основании, и самооценка по 25 процессам — готовность и недостающие артефакты.

Главное

В ГОСТ Р 56939-2024 шесть процессов проверки кода: экспертиза, статический анализ, динамический анализ с фаззингом, композиционный анализ, функциональное и нефункциональное тестирование. У каждого свои регламент и отчёты, а у большинства — перечень инструментов и правило повтора. Проверяющий смотрит не на список инструментов, а на то, как результаты разбираются и устраняются. Встройте проверки в конвейер сборки, сохраняйте отчёты с номером сборки и пишите в регламенте ту периодичность, которую действительно выдерживаете.

Образцы документов по теме

Образцы полного комплекта документов по разработке безопасного ПО образцы
Все документы процессов разработки безопасного ПО по ГОСТ Р 56939-2024 одним комплектом: руководство, регламенты, описания, отчёты о проверках кода и приказы — заполненными образцами за вымышленного разработчика и пустыми бланками. Заполненные образцы и бланки 45 документов комплекта — 8 900 ₽
Образец модели угроз программного обеспечения и описания поверхности атаки
Модель угроз ПО по пункту 5.7 ГОСТ Р 56939-2024: угрозы, объекты воздействия и последствия, меры нейтрализации с приоритетом, поверхность атаки, цели для фаззинга и экспертизы, уточнения для новых версий.
Образец регламента экспертизы исходного кода
Регламент по пункту 5.9 ГОСТ Р 56939-2024: кто и какой код проверяет, почему эксперт не автор изменения, что проверяется в первую очередь и как оформляются результаты экспертизы.
Образец регламента статического анализа исходного кода
Регламент по пункту 5.10 ГОСТ Р 56939-2024: анализаторы для каждого языка, их настройки, регистрация и разметка всех срабатываний, повторный анализ и пересмотр настроек.
Образец регламента динамического анализа кода и фаззинг-тестирования
Регламент по пункту 5.11 ГОСТ Р 56939-2024: инструменты динамического анализа и фаззинга, перечень модулей и сценарии, тестовые коллекции входных данных, обработка аварийных завершений и повторный анализ.
Образец регламента композиционного анализа программного обеспечения
Регламент по пункту 5.16 ГОСТ Р 56939-2024: перечень зависимостей, его актуализация, анализ заимствованных компонентов на известные уязвимости перед сборкой и корректирующие действия.
Образец перечня заимствованных компонентов программного обеспечения (SBOM)
Перечень зависимостей по пункту 5.16.3.2 ГОСТ Р 56939-2024: каждый заимствованный модуль с версией, назначением и лицензией и источник, из которого он получен. Образцы для Go, Java, Python и TypeScript.
Образец отчёта об экспертизе исходного кода
Отчёт об экспертизе кода по пункту 5.9.3.2 ГОСТ Р 56939-2024: проанализированные модули, необходимые изменения с номерами недостатков, вопросы к неясным местам и предложения по улучшению.
Образец отчёта о статическом анализе исходного кода
Отчёт о статическом анализе по пункту 5.10.3.4 ГОСТ Р 56939-2024: срабатывания каждого анализатора по типам, разметка истинных и ложных, исправления и обоснования переноса.
Образец отчёта о динамическом анализе кода и фаззинг-тестировании
Отчёт по пунктам 5.11.3.5 и 5.11.3.6 ГОСТ Р 56939-2024: срабатывания динамического анализа, аварийные остановки и зависания, длительность фаззинга, число аварийных завершений и найденных путей, их разбор.
Образец отчёта о композиционном анализе программного обеспечения
Отчёт по пунктам 5.16.3.4 и 5.16.3.5 ГОСТ Р 56939-2024: известные уязвимости в заимствованных компонентах и их критичность, анализ применимости, обращения к поставщикам, обновления и исправления.
Образец протокола контроля целостности исходного кода
Протокол по пункту 5.14.3.3 ГОСТ Р 56939-2024: проверенная версия и репозитории, способ и результат проверки — подписи коммитов, сверка истории, контрольные суммы — и вывод о целостности собственного кода.
Образец протокола проверки заимствованного кода на внедрение вредоносного ПО
Протокол по пунктам 5.17.3.4 и 5.17.3.5 ГОСТ Р 56939-2024: идентификация предсобранных компонентов по контрольным суммам и результаты антивирусной проверки кода, полученного через цепочки поставок.
Образец сведений о соответствии программного обеспечения требованиям по безопасности к ПО значимых объектов КИИ
Сведения разработчика прикладного ПО для оценки по пункту 29.4 Требований, утверждённых приказом ФСТЭК России от 25.12.2017 № 239: каждое требование пункта 29.3 — документы, которые его подтверждают, их реквизиты и место хранения.
Образец программы функционального тестирования ПО
Программа по пункту 5.18.3.1 ГОСТ Р 56939-2024: роли при тестировании, тестовый стенд, сценарии для каждой функции с ожидаемым результатом и критерием успеха, правила повторного тестирования, завершения и остановки.
Образец отчёта о функциональном тестировании ПО
Отчёт по пунктам 5.18.3.2–5.18.3.4 ГОСТ Р 56939-2024: тестируемые сборки и среда, порядок сценариев, что не проверялось, найденные и исправленные ошибки, журнал прогонов и записи системы управления ошибками.
Образец регламента нефункционального тестирования программного обеспечения
Регламент по пункту 5.19 ГОСТ Р 56939-2024: какие версии и как часто проверяются на проникновение и устойчивость, чьими силами, по каким сценариям атак и какой нарушитель из модели угроз берётся за основу.
Образец отчёта о нефункциональном тестировании ПО
Отчёт по пунктам 5.19.3.2 и 5.19.3.3 ГОСТ Р 56939-2024: стенд и цели тестирования, сценарии атак и нагрузки, что не проверялось, найденные недостатки с опасностью и рекомендациями, расхождения с архитектурой и моделью угроз.
Образец отчёта о поиске уязвимостей в эксплуатируемом программном обеспечении
Регулярный отчёт по пункту 5.24.3.2 ГОСТ Р 56939-2024: какие проверки поддерживаемых версий проведены за период, какие ошибки и уязвимости найдены, как исправлены, какие обновления выпущены и как доставлены пользователям.

Нужно подготовить документы и меры по защите данных под свой профиль?

Собрать в ГрамотаИБ

Канал ГрамотаИБ в MAX

Коротко о новых статьях, изменениях законодательства и возможностях сервиса. Полные материалы — на сайте.

Подписаться

Положение о ГИС по постановлению № 712: что в нём должно быть о защите информации

С 1 сентября 2026 года действует постановление Правительства РФ от 09.06.2026 № 712. Оно задаёт обязательные разделы Положения о федеральной государственной информационной системе, которую создают актом Правительства, в том числе раздел о защите информации. Разбираем, что в этом разделе должно быть, какие ещё разделы нужны специалисту по защите и что значит рекомендация для региональных систем.

Как внести программу в реестр российского ПО: требования, шаги, сроки и документы

Пошаговый разбор включения программы в единый реестр российских программ Минцифры по постановлению Правительства РФ от 16.11.2015 № 1236: требования к ПО и правообладателю, что приложить к заявлению, сколько длится рассмотрение, где чаще всего отказывают, какие документы придётся написать и что делать после включения.

Сертификация процессов безопасной разработки ПО: порядок ФСТЭК России № 240

Разработчик средства защиты информации может сертифицировать не только продукт, но и сам процесс разработки — на соответствие ГОСТ Р 56939-2024. Кому это нужно, как подать заявку, какие семь групп сведений должны быть в руководстве по безопасной разработке, что проверяет орган по сертификации и какие сроки установлены приказом ФСТЭК России № 240.

Обучение и тренировки сотрудников по приказу ФСТЭК № 117: что обязательно для ГИС, ИСПДн и КИИ

Приказ ФСТЭК России № 117 требует от оператора ГИС учить пользователей, проводить учебные фишинговые рассылки и тренировки, проверять знания не реже раза в три года. Разбираем три вида тренировок, что методический документ от 12.04.2026 перенёс в «усиления» и как обучение учитывается в показателе зрелости Узи. Отдельно — что ждёт операторов ИСПДн и субъектов КИИ.