КАО.1 — Анализ архитектуры ОО статическими методами
Раздел методики: 4.1.2
Применимость для уровня доверия 4 (уровень контроля 4): базовое исследование + усиления 1, 2, 3
Кто проводит: испытательная лаборатория (самостоятельно и/или с использованием результатов разработчика)
Задача исследования
Выявление недостатков безопасности и известных уязвимостей ОО статическими методами.
При всех видах анализа архитектуры ОО анализируются полномочия (права, привилегии, разрешения, политики) ОО и его составных частей (файлов, модулей, процессов, интерпретаторов, веб-серверов, серверов приложений), назначенные в соответствии с:
- руководством по безопасной установке и настройке ОО
- руководствами администратора и пользователя из эксплуатационной документации
Ключевое правило: ОО и его составным частям назначаются только минимально необходимые полномочия. Выявленные избыточные полномочия рассматриваются как недостатки безопасности ОО.
Исходные данные
От разработчика ОО (п. 2.3 Методики):
- а) Документация на ОО: руководство пользователя, руководство администратора, формуляр, руководство по безопасной установке и настройке
- б) Исходный код ОО
- в) Сборочная среда и система сборки ОО, включая их документацию
- г) Дистрибутив ОО
- д) Результаты выполнения процессов разработки ОО по ГОСТ Р 56939-2024: анализ безопасности архитектуры и определение поверхности атаки, композиционный анализ (перечни компонентов, известные уязвимости заимствованных компонентов), анализ безопасности конфигураций, результаты тестирования на проникновение, результаты Bug Bounty (если проводились)
- е) Перечень программных компонентов и образов контейнеров ОО в формате CycloneDX 1.6/1.7 (JSON, RFC 8259)
- з) При внесении изменений в сертифицированный ОО: план поддержки безопасности заимствованных компонентов
- и) Для контейнерного исполнения: перечни разрешённых действий (правила) взаимодействия компонентов ОО между собой, с компонентами среды функционирования и внешними по отношению к ОО компонентами (из эксплуатационной документации)
- к) Методики анализа поверхности атаки open-source компонентов с портала portal.linuxtesting.ru
Из предыдущих этапов:
- Сведения из ПОД.1: методика проведения исследований, описание поверхности атаки, перечень анализируемых модулей с перечнем критичных участков кода
- Испытательный стенд и тестовые сборки ОО по результатам ПОД.2
Требования к проведению исследования
Сбор данных из открытых источников
Испытательная лаборатория самостоятельно собирает и анализирует материалы из открытых источников об ОО и аналогичном по архитектуре ПО:
Источники информации:
- Банк данных угроз безопасности информации ФСТЭК России (bdu.fstec.ru) и иные отечественные базы уязвимостей
- Зарубежные базы данных: CVE/Common Vulnerabilities and Exposures, CWE/Common Weakness Enumeration, CAPEC/Common Attack Pattern Enumeration and Classification
- Публикации и форумы с отзывами пользователей
- Результаты исследований сторонних исследователей (по ОО и аналогичным продуктам)
Оценка результатов разработчика
Оцениваются исходные данные по п. 3.1 и п. 2.3 Методики:
а) Композиционный анализ (перечни компонентов):
- Перечни программных компонентов (SBOM) и результаты поиска известных уязвимостей заимствованных компонентов (включая образы контейнеров) в публично доступных базах уязвимостей.
б) Анализ конфигурации:
- Результаты автоматизированного анализа конфигурации ОО и отдельных модулей на предмет уязвимостей конфигурации; применение инструментальных средств анализа конфигураций.
в) Учёт требований безопасности:
- Результаты учёта в архитектуре ОО требований безопасности, результатов композиционного анализа и анализа конфигураций.
Если результаты разработчика соответствуют требованиям
Испытательная лаборатория проводит выборочную проверку результатов анализаторов разработчика:
- контрольная выборка: не менее 10 предупреждений для каждого используемого анализатора
- для сторонних компонентов ОО из поверхности атаки: подтвердить отсутствие актуальных уязвимостей либо наличие компенсирующих мер
Если результаты разработчика не соответствуют требованиям
Испытательная лаборатория проводит анализ архитектуры самостоятельно либо принимает решение о невозможности дальнейших исследований.
Анализ комментариев в исходном коде
В целях выявления НДВ, компрометирующих конструкций и недостатков — выполняется анализ комментариев в исходном коде ОО.
Самостоятельный анализ испытательной лабораторией
Испытательная лаборатория самостоятельно анализирует:
-
Исходный код ОО на предмет открыто присутствующей чувствительной информации и «секретов» (пароли, приватные ключи, другие данные).
-
Веб-интерфейсы из состава поверхности атаки (статическими методами) — на предмет наличия уязвимостей из раздела «Типовые уязвимости веб-приложений» банка данных угроз ФСТЭК России.
-
Конфигурации запуска контейнеров и групп контейнеров (для ОО в контейнерном исполнении) — на соответствие публично доступным рекомендациям по безопасности и минимизации полномочий (рекомендации ФСТЭК России, CIS, Kubernetes Security Best Practices и др.):
- контейнеры запускаются с минимально необходимыми полномочиями на уровне процессов хостовой ОС
- для ОО под управлением оркестратора: управление доступом между компонентами ОО соответствует правилам, заданным разработчиком (п. 2.3 Методики)
Избыточные полномочия компонентов и избыточные разрешающие правила доступа расцениваются как недостатки безопасности ОО.
Дополнительные требования (усиления) для уровня контроля 4
Усиление 1 — Композиционный анализ компонентов среды функционирования
Испытательная лаборатория анализирует перечень программных компонентов и результаты композиционного анализа в части поиска известных уязвимостей компонентов среды функционирования ОО (за исключением компонентов системы сборки и сборочной среды).
Усиление 2 — Код, выполняющийся в контексте браузера
Проверяется наличие в составе ОО кода (либо генераторов такого кода), выполняющегося в контексте браузера (JavaScript, ActiveX, WebAssembly и др.):
- такой код должен быть учтён в перечне программных компонентов
- в отношении него должен быть выполнен композиционный анализ разработчиком
Критичные выявления:
- Динамическая загрузка кода в контекст браузера не из состава (и не из результатов генерации) ОО — расценивается как основание для прекращения исследований ОО.
- Возможности взаимодействия кода со стандартными интерфейсами доступа к камере, микрофону, экрану, уведомлениям, геопозиции, буферу обмена, методам оплаты и т.п. — расцениваются как недостаток безопасности ОО.
Усиление 3 — Опции компиляции и компоновки
Испытательная лаборатория анализирует конфигурации систем сборки и сборочных сред ОО на предмет использования опций конфигурирования, компиляции и компоновки, повышающих безопасность исполняемого кода, в том числе за счёт минимизации объёма исполняемого кода ОО.
Справочник опций: ГОСТ Р 71206-2024 «Разработка безопасного программного обеспечения. Безопасный компилятор языков C/C++», а также методические рекомендации ФСТЭК России по повышению безопасности программных компонентов.
Отсутствие выбора и использования указанных опций рассматривается как недостаток безопасности ОО.
Требования к результатам исследования
- Если результаты разработчика соответствуют требованиям п. 3.1 и п. 2.3 Методики — испытательная лаборатория допускается повторно использовать их при оформлении материалов исследований.
- Результаты фиксируются в материалах исследований в объёме, соответствующем п. 5.2 Методики.
Проверка артефактов результата
Формат для агента: артефакт считается принятым только при выполнении всех критериев; неприменимые пункты фиксируются с причиной.
| Артефакт | Что проверить | Критерий приемки |
|---|---|---|
| Матрица полномочий ОО | Перечислены файлы, модули, процессы, интерпретаторы, веб-серверы, серверы приложений и их права | Для каждого элемента подтвержден принцип минимально необходимых полномочий или оформлен недостаток безопасности |
| Обзор открытых источников | Есть источники ФСТЭК/отечественные БДУ, CVE, CWE, CAPEC, публикации, форумы, исследования аналогов | Для найденных уязвимостей указан статус применимости к ОО и решение: отсутствует, устранено, компенсировано или оформлено как недостаток |
| Проверка результатов разработчика | Есть выборка не менее 10 предупреждений на каждый анализатор разработчика | По каждому предупреждению есть вердикт ИЛ и комментарий; сторонние компоненты из поверхности атаки проверены на актуальные уязвимости |
| Анализ исходного кода и комментариев | Есть результаты поиска секретов, чувствительной информации, НДВ и компрометирующих конструкций | Все находки имеют ссылку на файл/строку или объяснение отсутствия; значимые находки внесены в таблицу недостатков |
| Проверка веб-интерфейсов | Перечень веб-интерфейсов из поверхности атаки сопоставлен с типовыми уязвимостями БДУ ФСТЭК | Каждый веб-интерфейс имеет результат проверки; пропуски обоснованы |
| Контейнерная конфигурация | Проверены полномочия контейнеров, правила оркестратора и взаимодействия компонентов | Избыточные полномочия и разрешающие правила оформлены как недостатки безопасности |
| Браузерный код | Код JS/ActiveX/WebAssembly и генераторы учтены в перечне компонентов и композиционном анализе | Нет динамической загрузки кода не из состава ОО; доступ к камере, микрофону, экрану, уведомлениям, геопозиции, буферу обмена, оплате обоснован или оформлен как недостаток |
| Опции безопасной сборки | Проверены конфигурации сборки, компиляции и компоновки с учетом ГОСТ Р 71206-2024 | Отсутствующие применимые защитные опции оформлены как недостатки безопасности |
Чек-лист проверки результатов перед отправкой
Формат: каждый пункт проверяется как выполнено / не выполнено / неприменимо.
Блок 1: Анализ полномочий ОО
- Проверены полномочия ОО и всех его составных частей (файлы, модули, процессы, веб-серверы, интерпретаторы).
- Выявленные избыточные полномочия зафиксированы как недостатки безопасности.
- Полномочия соответствуют руководствам по безопасной установке и настройке из эксплуатационной документации.
Блок 2: Сбор данных из открытых источников
- Проверены базы ФСТЭК BDU и отечественные базы уязвимостей.
- Проверены CVE, CWE, CAPEC.
- Проверены публикации, форумы, результаты сторонних исследователей по ОО и аналогичным продуктам.
- Результаты сбора задокументированы.
Блок 3: Оценка результатов разработчика
- Оценены перечни программных компонентов (SBOM) и результаты поиска уязвимостей в заимствованных компонентах.
- Оценены результаты автоматизированного анализа конфигурации ОО.
- Оценён учёт требований безопасности в архитектуре ОО.
- По каждому используемому анализатору разработчика выполнена выборочная проверка не менее 10 предупреждений.
- Для сторонних компонентов из поверхности атаки: подтверждено отсутствие актуальных уязвимостей или наличие компенсирующих мер.
Блок 4: Анализ исходного кода
- Выполнен анализ комментариев в исходном коде на предмет НДВ и компрометирующих конструкций.
- Исходный код проверен на наличие чувствительной информации и «секретов» (пароли, ключи, токены).
- Результаты задокументированы.
Блок 5: Веб-интерфейсы
- Выполнен статический анализ всех веб-интерфейсов из поверхности атаки.
- Проверен весь перечень типовых уязвимостей веб-приложений из банка данных угроз ФСТЭК России.
- Результаты задокументированы.
Блок 6: Контейнерное исполнение (при применимости)
- Проверены конфигурации запуска контейнеров на соответствие рекомендациям ФСТЭК, CIS, Kubernetes Security Best Practices.
- Подтверждено, что контейнеры запускаются с минимально необходимыми полномочиями.
- Для ОО под управлением оркестратора: правила доступа между компонентами соответствуют заданным разработчиком.
- Избыточные полномочия и разрешающие правила доступа зафиксированы как недостатки безопасности.
Блок 7: Опции компиляции (усиление 3)
- Проверены конфигурации систем сборки на наличие опций безопасной компиляции и компоновки.
- Учтены требования ГОСТ Р 71206-2024 и рекомендации ФСТЭК по безопасному компилятору C/C++.
- Отсутствие необходимых опций зафиксировано как недостаток безопасности.
Блок 8: Браузерный код (усиление 2)
- Проверено наличие кода, выполняющегося в контексте браузера (JS, ActiveX, WebAssembly и др.).
- Такой код включён в перечень программных компонентов разработчиком.
- В отношении браузерного кода выполнен композиционный анализ.
- Отсутствует динамическая загрузка кода в контекст браузера не из состава ОО (при выявлении — зафиксировано основание для прекращения исследований).
- Отсутствует доступ кода к камере, микрофону, геопозиции, буферу обмена, методам оплаты и т.п. без обоснования (при выявлении — зафиксировано как недостаток безопасности).
Блок 9: Компоненты среды функционирования (усиление 1)
- Выполнен анализ известных уязвимостей компонентов среды функционирования ОО (кроме компонентов системы сборки).
- Результаты зафиксированы в материалах исследований.
Блок 10: Оформление результатов
- Результаты исследований зафиксированы в материалах исследований в соответствии с п. 5.2 Методики.
- Все выявленные недостатки безопасности задокументированы по форме таблицы 6 Методики.
Задачи СИ по данному разделу
Рабочий перечень задач для Redmine: Перечень_задач_СИ_М3.md
| Код задачи | Наименование |
|---|---|
| СИ-КАО1.01 | Проверить полномочия ОО и его компонентов |
| СИ-КАО1.02 | Собрать сведения из открытых источников |
| СИ-КАО1.03 | Проверить результаты композиционного анализа разработчика (усил. 1) |
| СИ-КАО1.04 | Проверить анализ конфигурации ОО |
| СИ-КАО1.05 | Проверить выборку предупреждений анализаторов разработчика |
| СИ-КАО1.06 | Проанализировать исходный код на секреты и чувствительные данные |
| СИ-КАО1.07 | Выполнить статический анализ веб-интерфейсов |
| СИ-КАО1.08 | Проверить контейнерные конфигурации |
| СИ-КАО1.09 | Проверить браузерный код (усил. 2) |
| СИ-КАО1.10 | Проверить опции безопасной компиляции и компоновки (усил. 3) |
| СИ-КАО1.11 | Выполнить анализ комментариев в исходном коде на НДВ |
| СИ-КАО1.12 | Выполнить самостоятельный КАО.1 при несоответствии результатов разработчика |