Архитектурный анализ. Формирование и предоставление ППК ФСТЭК России
Полный курс по практикам РБПО за пределами фаззинга и статического анализа кода: что входит в архитектурный анализ, как оценивать поверхность атаки, какие защитные опции компилятора и привилегии анализировать, как формировать Перечень программных компонентов и предоставлять его в ФСТЭК России.
Зачем эта лекция
Современная разработка средств защиты информации в России проходит в условиях, когда «наложенные» средства защиты (NGFW, антивирусы, SOC) необходимы, но недостаточны. Безопасность должна быть встроена в продукт с этапа проектирования.
Стратегия: технологическая независимость + доверенность
Президентом РФ поставлена задача достижения технологической независимости. Импортозамещение — лишь первый шаг. На уровне разработки СЗИ критически важны:
- Суверенизация критических разработок с одновременным усилением позиций в мировом OpenSource.
- Разработка систем в парадигме доверенности как базового принципа.
Системный подход на практике
- Secure by Design — проектирование и разработка приложений в парадигме безопасной разработки.
- Школа продуктовой безопасности — формирование инженерной и образовательной культуры.
- Центры компетенций — объединение усилий по углублённому анализу критических компонентов.
Почему «архитектурный анализ»? Исторически название связано с развитием курсов ФСТЭК России на базе ИСП РАН по практикам РБПО и наименованиями разделов Методики ВУ и НДВ. Всё то, что не «фаззинг и сценарное/модульное тестирование» и не «статический анализ кода», было объединено в курс с таким названием.
Требования ФСТЭК России
Архитектурный анализ — не «ритуал лаборатории», а обязанность разработчика. Это закреплено в трёх ключевых документах ФСТЭК.
Приказ №76
«Требования по безопасности информации…», раздел IV, п. 17. Тестирование, испытания по выявлению уязвимостей и НДВ проводятся изготовителем в ходе приёмочных испытаний.
Приказ №121
«О внесении изменений в положение о системе сертификации…», п. 12. При проверке организации производства проверяется внедрение заявителем процедур безопасной разработки в соответствии с требованиями.
Методика ВУ и НДВ
Если по совокупности пунктов дана положительная оценка работы разработчика, исследования лаборатории ограничиваются верификацией результатов, предоставленных разработчиком.
Ключевой принцип: разработчик отвечает, лаборатория переиспользует, контролирует, частично дополняет. В проекте новой Методики ВУ и НДВ 2024 этот принцип сделан явным и недвусмысленным.
Карта актуальной нормативной базы
10 ключевых документов, формирующих регулирование РБПО и сертификации СЗИ. Часть документов уже действует, часть в поздних стадиях разработки — но рекомендуется ознакомиться с обоими типами для понимания вектора развития требований.
| Документ | Статус | Что регламентирует |
|---|---|---|
| ГОСТ Р 56939-2024 «Безопасная разработка. Общие требования» | действует с 20.12.2024 | Сертификационные испытания РБПО. Заменил редакцию 2016 года. |
| ГОСТ Р 71207-2024 «Статический анализ ПО. Общие требования» | действует с 01.04.2024 | Защитные меры РБПО, требования к статическим анализаторам и процессу их применения. |
| ГОСТ Р 71206-2024 «Безопасный компилятор C/C++» | действует | Защитные меры РБПО в части компиляции (см. опции компилятора в разделе 06). |
| ГОСТ Р 59548-2022 «Регистрация событий безопасности» | действует | Сертификационные испытания СЗИ, формат и состав событий — особенно для SIEM. |
| Приказ ФСТЭК №240 от 01.12.2023 (с изменениями от Приказа №230 от 30.06.2025) | действует | Порядок проведения сертификации процессов РБПО СЗИ. Изменения 2025 года привели сертификацию в соответствие с ГОСТ Р 56939-2024 и ввели обязательное Руководство по РБПО. |
| Информационное письмо ФСТЭК от 25.09.2024 | действует | О порядке испытаний и поддержки безопасности СЗИ. Взаимодействие с Центром исследования безопасности системного ПО. |
| Информационное письмо ФСТЭК от 25.10.2024 (формализовано как №240/24/39 от 10.01.2025) | действует | О повышении безопасности СЗИ с интерпретаторами, веб-серверами и серверами приложений. |
| Методика ВУ и НДВ ФСТЭК России 2024 | в разработке | Сертификационные испытания СЗИ. Вводит концепцию ППК на входе в испытания, требования к ПОД.1, КАО.1, КАО.2. |
| ГОСТ КАПО «Композиционный анализ ПО. Общие требования» | в разработке | Регламентация процессов композиционного анализа. Учитывается в сертификации СЗИ в части формата ППК. |
| ГОСТ Р «Методика оценки уровней зрелости РБПО» | в разработке | Три уровня зрелости: соответствие 56939-2024 + два повышенных. Разрабатывается АО «Лаборатория Касперского». |
Главная мысль: регулирование разрабатывается рабочей группой при ФСТЭК России на базе ИСП РАН с участием АО «Лаборатория Касперского», АО «ИнфоТеКС», АО «Позитив Текнолоджиз», ООО «РусБИТех-Астра», АО «СберТех», ООО НТЦ «Фобос-НТ», ООО «ЦБИ», АО НПО «Эшелон». Тексты находятся в поздних стадиях, возможны коррективы — рекомендуется отслеживать.
Что такое архитектурный анализ
Архитектурный анализ — это совокупность практик исследования продукта на уровне архитектуры, конфигураций, привилегий, компонентного состава и поведения, дополняющая фаззинг и статический анализ кода.
Где он находится в общей картине РБПО
Если разделить все практики поиска уязвимостей и НДВ на крупные классы, картина получается такая:
Статический анализ кода
Поиск дефектов и уязвимостей по исходному коду без его выполнения. См. отдельную лекцию по SAST.
Фаззинг и сценарное тестирование
Поиск уязвимостей через подачу некорректных или граничных входных данных. См. лекцию по нефункциональному тестированию (процесс №18).
Архитектурный анализ
Всё остальное: конфигурации, опции компилятора, привилегии, известные уязвимости, хардкод, бинарный поиск ВПО, web-пентест, песочница, КАПО.
Главный вывод: архитектурный анализ — это не «один инструмент» и не «одна методика». Это зонтичное название для нескольких техник, у каждой свои инструменты и свои нормативные требования.
Поверхность атаки и приоритизация
Перед тем как запускать инструменты, нужно понять — что именно анализировать. Поверхность атаки — это набор точек, через которые недоверенные данные могут попасть в систему.
85% уязвимостей — в транзитивных зависимостях
По данным CodeScoring, 85% уязвимостей находятся в транзитивных зависимостях (библиотеках, которые импортируют ваши прямые зависимости). При определении поверхности атаки критически важно отслеживать, куда именно попадает поток данных — в какие сторонние приложения и библиотеки, а не только в очевидный исполняемый файл.
Стратегия: с каких компонентов начинать
Анализ начинаем с компонентов, наиболее подверженных угрозам и доступных наиболее слабым нарушителям:
- Вспомогательные сервисы, не реализующие функции безопасности и бизнес-логику. Например: мессенджер или SIP-сервер, «для удобства» встроенный в межсетевой экран типа «А».
- Web-сервисы — каждый второй мнит себя пентестером, нарушителей много.
- Парсеры пользовательского ввода — обработчики файлов, изображений, документов. Любой код, разбирающий внешние данные.
Тактика: приоритет по языкам программирования
- C/C++ — высокий приоритет анализа (нет управляемой памяти, классические уязвимости переполнений).
- C#, Java, Python — обычно безопаснее (управляемая память), но в управляемом коде бывают вставки на нативных языках (unsafe C#, JNI в Java и т. д.).
- Движки интерпретаторов и SDK — как правило написаны в том числе на нативных языках программирования.
Советы бывалого
- Смотрите документацию — скриншоты тестирования и рекламные материалы на сайте разработчика. Там всплывает функционал, который прячут в сертификационной документации.
- Различные подменю загрузки картинок для аватарки, функции загрузки превью документов и иные «незначительные» возможности часто скрывают за собой огромные библиотеки-парсеры.
- Парсеры исходных текстов / байткода в составе интерпретатора, как правило, не являются поверхностью атаки на СЗИ — в типовых сценариях запуск доступен только администратору, а не произвольному пользователю.
Статический архитектурный анализ — 6 техник
Шесть направлений анализа, не связанных с выполнением кода. Каждое направление — отдельная техника со своими инструментами.
Анализ конфигураций
Многие популярные службы (sshd, nginx, прокси-серверы) могут быть настроены небезопасно. Анализаторы конфигураций оценивают соответствие рекомендациям по безопасности — обычно ищутся прямо на GitHub под нужный сервис.
Опции компилятора и бинарных файлов
Защитные опции, задаваемые при компиляции: ASLR (случайное размещение памяти), STACK-PROT (защита от переполнения стека), READ-ONLY-RELOC (запрет записи в исполняемые страницы), IMMEDIATE-BIND (привязка символов при загрузке), FORTIFY-SOURCE.
Анализ прав и возможностей
DAC (дискреционный принцип); SUID/SGID (любой пользователь запускает с правами владельца); Linux capabilities (минимально необходимые привилегии — bind < 1024, raw-сокеты); параметры монтирования noexec, nosuid, nodev для доп. барьеров защиты.
Анализ известных уязвимостей
Альфа и Омега работы эксперта. Постановка процесса вычищения CVE из состава продукта — самая болезненная активность для команды, впервые сталкивающейся с сертификацией. За CVE отвечает разработчик, не лаборатория: устранение либо обоснование неприменимости.
Поиск хардкода и лексем
Поиск в исходных текстах СЗИ хардкодной чувствительной информации (пароли, ключи, токены) и текстовых комментариев, потенциально указывающих на присутствие НДВ. Базовый анализ коммитов на маркерные слова, диапазоны IP. Встраивание в сборочный конвейер для каждого коммита.
Бинарный поиск признаков ВПО
Поиск бинарных последовательностей, потенциально свидетельствующих о наличии типового вредоносного кода. В кодовой базе СЗИ могут быть бинарные вставки, конкретный вредоносный исходный код, механизмы динамической кодогенерации. Нельзя исключать НДВ в тулчейнах.
Важно про CVE. При выявлении уязвимой версии пакета именно разработчик, а не лаборатория, отвечает за разбор ситуации. Рекомендуется (в ряде случаев требуется) внедрение средств автоматизированного отслеживания известных уязвимостей в пакетной базе — они в том числе могут помочь в формировании машиночитаемого формата ППК.
Динамический архитектурный анализ — 3 техники
Анализ работающего кода. В отличие от фаззинга, акцент не на подаче входных данных, а на наблюдении за поведением системы и выявлении нежелательных эффектов.
Web-пентест
«Несмотря на все методики и классификаторы — хороший пентест это творчество». Однако перед творческой частью необходимо проанализировать систему всеми имеющимися сканерами на предмет выявления типовых проблем.
Песочница
Что ищем (выборочно): соединения с недекларированными сетевыми ресурсами; недекларированные чтение и запись файлов; запуск недекларированных процессов; присутствие чувствительной информации в открытом виде; использование небезопасных протоколов.
«Блесна» — анализ помеченных данных
Специализированный инструмент ИСП РАН для поиска утечек чувствительных данных (паролей, ключей) в памяти. Полносистемный анализ — исследуется весь стек развёрнутого ПО, выявляются утечки через границы виртуальных адресных пространств. Учёт особенностей аппаратуры (конвейер команд, прерывания, трансляция адресов, DMA).
Ключевая идея «Блесны» — автоматизация экспертизы исполняемого кода с минимальными требованиями к квалификации пользователей. Достаточно наличия исполняемого бинарного кода и описания сигнатур анализируемых функций.
Контейнеры и Kubernetes
Реализация СЗИ в контейнерном исполнении не освобождает разработчика от обязанностей по анализу компонентов. Контейнер — не «вещь в себе».
Что нельзя делать
- Скачивать пресобранные образы с недоверенных репозиториев.
- Собирать наполнение образов самостоятельно (за исключением переиспользования компонентной базы из состава сертифицированных сред исполнения).
- Не выполнять статический и динамический анализ составляющих ПА или реализующих ФБ компонентов, запущенных в контейнерах.
Главный принцип: компонентная база контейнеров точно так же входит в состав СЗИ и подлежит анализу. Не является «вещью в себе».
Оркестраторы (Kubernetes)
В оркестраторах добавляются свои парадигмы управления доступом субъектов к объектам — микросервисы, поды, ServiceAccount, RBAC, NetworkPolicy. На архитектуру и её безопасность необходимо смотреть дополнительно в парадигме выбранного оркестратора.
Автоматизация архитектурного анализа
Больше автоматизации — меньше «сертификации». Регулярность анализа заложена в Требованиях. Автоматизация позволяет встроить проверки в процесс разработки и не возвращаться к ним вручную.
Декларативный подход
Существует множество систем автоматизации и готовых шаблонов поиска недостатков и уязвимостей. Один из вариантов — использование декларативного языка разметки сценариев тестирования, что позволяет создавать наборы сценариев для различных семейств ОС.
Ansible
Движок автоматизации с готовыми плейбуками для проверки конфигураций безопасности на множестве серверов одновременно. Реюзабельные роли — сообщество публикует на Ansible Galaxy.
Inspec
Среда тестирования с открытым исходным кодом, в которой для реализации сценариев и описания конфигураций тестирования используется декларативный язык разметки. Особенно хороша для compliance-проверок.
Найди архитектурную ошибку: 6 кейсов
Шесть архитектурных решений, типичных для разработки СЗИ. В каждом — два варианта: один с дефектом, другой соответствующий требованиям РБПО. Прочитайте сценарий, выберите вариант, который кажется правильным, затем раскройте подсказку.
gitleaks, detect-secrets) должен стоять в pre-commit hook.
CAP_NET_BIND_SERVICE), а не «всё root».
fs-extra для удобной работы с файловой системой.@latest — это supply-chain-уязвимость в потенциале: завтра злоумышленник публикует версию 11.2.1 с закладкой, и ваш CI её затягивает. Контролируемый репозиторий + фиксированная версия + регулярная сверка ППК с базами CVE — обязательная практика.
Dockerfile?FROM ubuntu:latest — это «движущаяся цель» (что внутри сегодня — неизвестно). Фиксация digest-а образа (@sha256:...), внутренний registry, установка строго из ППК и запуск под непривилегированным пользователем — минимально необходимый набор практик.
Композиционный анализ ПО (КАПО)
КАПО — отдельный процесс №16 в ГОСТ Р 56939-2024 («Использование инструментов композиционного анализа»). Концепция ППК как машиночитаемого перечня программных компонентов прорабатывалась в рабочей группе при ФСТЭК России с 2022 года.
Цели композиционного анализа
- Инвентаризация всех видов сторонних компонентов в продукте.
- Обогащение данных компонентов информацией из баз известных уязвимостей (CVE, БДУ ФСТЭК).
- Проверка лицензионной чистоты, репутации компонентов и иных особенностей.
- Регулярный процесс в организации — не разовая активность перед сертификацией.
Ключевое решение рабочей группы: уйти от собственной нотации формата ППК и использовать расширенный стандартизованный CycloneDX — на момент решения была актуальна версия 1.6, в марте 2026 вышла версия 1.7 (с поддержкой Traffic Light Protocol для распространения BOM). Использование стандарта позволяет переиспользовать существующий tooling экосистемы SBOM.
ППК и SBOM
ППК — Перечень программных компонентов. По смыслу это российский эквивалент SBOM (Software Bill of Materials). Формат — CycloneDX, содержит обязательные поля для каждого компонента.
Что обязано быть в ППК
- Имя и версия компонента — точная фиксация, без диапазонов.
- Тип компонента — библиотека, контейнерный образ, исполняемый файл, fragment кода.
- Source repository / origin — откуда взят компонент.
- Хэш — для верификации целостности.
- Лицензия — для проверки совместимости и лицензионной чистоты.
- Связи между компонентами — кто зависит от кого (transitive deps).
Формат CycloneDX
CycloneDX — открытый стандарт SBOM, который российская рабочая группа выбрала за основу. Текущая версия — 1.7 (релиз марта 2026), также продолжает применяться 1.6. Расширения для ФСТЭК добавляют специфичные поля (классификатор по БДУ, уровень доверия и т. п.).
Формирование ППК
Звучит просто — «соберите список компонентов в формате CycloneDX». На практике большинство команд натыкаются на одни и те же грабли.
Типовые сценарии формирования
На этапе сборки
SBOM-генератор (cdxgen, syft) подключается к build-конвейеру и формирует ППК автоматически по результатам разрешения зависимостей.
Из готового артефакта
Анализ собранного бинарника / контейнерного образа для формирования ППК «постфактум». Менее точно, но применимо для legacy-продуктов.
Ручная разметка
Для компонентов, не охваченных автоматическими инструментами (закрытые библиотеки, кастомные сборки) — ручное добавление в ППК с обоснованием.
Главная боль: разработчики, как правило, не знают точно, из каких компонентов состоит их продукт. Особенно это касается транзитивных зависимостей и тех компонентов, что попали в продукт «случайно» (через base-образы, через языковые runtime'ы, через embedded-инструменты сборки). Первый запуск SBOM-генератора часто — это откровение.
Инструменты формирования ППК
cdxgen
Универсальный SBOM-генератор от OWASP. Поддерживает Java, JavaScript, Python, Go, Rust, .NET и десятки других стеков. Выдаёт CycloneDX из коробки.
Syft
Анализатор контейнерных образов и файловых систем. Хорошо подходит для анализа готовых артефактов «постфактум».
Dependency-Track
Платформа для приёма ППК и непрерывного мониторинга компонентов на наличие новых уязвимостей. Подключается к НБД (CVE, OSS Index, Snyk DB).
Предоставление ППК в ФСТЭК России
Сформированный ППК подаётся в составе сертификационных материалов. Существует выделенная инфраструктура для приёма и проверки ППК — на платформе ИСП РАН.
Инфраструктура
- Платформа SBOM-инструментов: gitlab.community.ispras.ru — gitlab-инстанс ИСП РАН, где разрабатывается tooling для работы с ППК.
- SBoM-updater / sbom-checker: инструменты для верификации формата и содержания ППК до отправки.
- Центр исследования безопасности системного ПО — подразделение ФСТЭК России. Контакт публиковался в выступлении Д. Н. Шевцова на Kaspersky CyberDay 2024.
Дискуссия и обсуждения
Активная дискуссия по инструментам и практикам генерации ППК / SBOM ведётся в открытом сообществе — в Telegram-чате t.me/sdl_fld (ветка /6495), в gitlab-issues ИСП РАН, на встречах сообщества, посвящённых особенностям внедрения.
Что важно понимать: подача ППК — не «отправил файл и забыл», а живой процесс. ППК продукта обновляется при каждом изменении состава компонентов; для каждого CVE, найденного в компоненте, разработчик готовит обоснование (устранили / обоснованно неприменимо / ложное срабатывание). Регулярность анализа — обязательное требование.
Проблематика КАПО — три угла зрения
КАПО как процесс одновременно болезнен для всех трёх сторон — разработчика, лаборатории и регулятора. Понимание боли каждой стороны помогает выстроить процесс так, чтобы не множить её.
Разработчик
Не знает, из каких компонентов состоит его продукт. Неправильно собирает ППК — пропускает транзитивные зависимости, не фиксирует версии, не подключает обогащение CVE.
Лаборатория
Сталкивается с большим количеством ложных срабатываний при анализе ППК. Сложно выдавать экспертную оценку для тысяч предупреждений — особенно когда часть из них исходят от некорректно сформированного ППК.
Регулятор
Сталкивается с большим объёмом материалов в исследовании отрасли open-source. Каждый разработчик подаёт ППК со «своими» компонентами — а одни и те же популярные библиотеки повторяются у всех.
Стратегический ответ ФСТЭК: создание Центра исследования безопасности системного ПО на базе ИСП РАН. Идея в том, чтобы анализ популярных компонентов открытого кода выполнялся централизованно, а конкретные разработчики переиспользовали результаты этого анализа в своих ППК. В Методике ВУ и НДВ 2024 сделан явный акцент: уровень качества и полноты исследований привязан к работам Центра.
Связь с другими стандартами
ГОСТ Р 56939-2024 — не одиночный документ, а центр созвездия. Эта лекция охватывает 4 процесса (№6, №7, №16, №17), и они опираются на серию связанных стандартов и методик.
Что это значит на практике. Команда, которая внедряет процессы РБПО, должна одновременно держать в голове все эти документы. Архитектурный анализ — это про №7 (поверхность атаки), КАПО — про №16, нефункциональное тестирование — про №18 (отдельная лекция), статанализ — про требования ГОСТ 71207. И всё это в рамках ГОСТ 56939-2024 как единого нормативного зонтика.