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

САО — Статический анализ объекта оценки

Раздел методики: 4.2
Применимость для уровня доверия 4 (уровень контроля 4): базовое исследование + усиления 1, 2, 3
Кто проводит: испытательная лаборатория (с использованием или без результатов разработчика)


Задача исследования

Выявление недостатков безопасности ОО самостоятельно и в результате анализа выполнения процессов разработки ОО по ГОСТ Р 56939-2024 — методами и инструментами статического анализа исходного кода.


Исходные данные

От разработчика ОО (п. 2.3 Методики) — в первую очередь подпункт «б»:

  • б) ⭐ Исходный код ОО (приоритет — именно он подвергается статическому анализу)
  • а) Документация на ОО: руководство пользователя, руководство администратора, руководство по безопасной установке и настройке
  • д) Результаты выполнения процессов разработки ОО по ГОСТ Р 56939-2024: результаты статического анализа исходного кода, выполненного разработчиком (с разметкой предупреждений), а также анализ безопасности архитектуры и конфигураций
  • е) Перечень программных компонентов в формате CycloneDX 1.6/1.7 (для сторонних модулей в поверхности атаки)
  • ж) Конфигурации инструментальных средств статического анализа, применявшихся разработчиком
  • з) При внесении изменений в сертифицированный ОО: план поддержки безопасности заимствованных компонентов (предупреждения по нему должны быть размечены разработчиком)
  • л) Методики статического анализа open-source компонентов с портала portal.linuxtesting.ru

Из предыдущих этапов:

  • Сведения из ПОД.1: методика проведения исследований, поверхность атаки, перечень анализируемых модулей, перечень критичных участков кода
  • Испытательный стенд по результатам ПОД.2
  • План по разметке предупреждений статического анализатора по результатам предыдущих исследований ОО (если применимо)

Требования к проведению исследования

Оценка реализации требований к статическому анализу разработчика

При проведении статического анализа оцениваются исходные данные по п. 3.1 Методики и выполнение разработчиком следующих требований:

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

б) Статический анализ выполнен разработчиком для всех высокоуровневых языков программирования, встречающихся в исходном коде модулей.

Примечание: НЕ требуется статический анализ для языков разметки (html, css3, xaml и т.п.) и языка ассемблера.

в) Используется статический анализатор, реализующий метод автоматизированного анализа исходного кода на уровне синтаксического дерева.

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

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

е) Разработчиком ОО выполнена ручная разметка всех предупреждений о критических ошибках в соответствии с классификацией ГОСТ Р 71207-2024 «Защита информации. Разработка безопасного программного обеспечения. Статический анализ программного обеспечения. Общие требования».

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

з) Разработчиком ОО выполнена ручная разметка всех предупреждений, предусмотренных программой исследований безопасности модулей с открытым исходным кодом Центра исследований (если разработчик ОО выполняет исследование в рамках деятельности Центра исследований).

Если разработчик участвует в программах Центра исследований

Если разработчик ОО выполнил статический анализ подлежащих анализу модулей в объёме программы исследований безопасности Центра исследований — требования п. 4.2 Методики в отношении этих модулей считаются выполненными.

Если результаты разработчика соответствуют требованиям

Испытательная лаборатория проводит выборочную проверку разметки. Контрольная выборка формируется по принципу:

  • не менее 20 предупреждений о критических ошибках для каждого проанализированного высокоуровневого языка программирования
  • предупреждения, относящиеся не менее чем к 5 подлежащим анализу модулям
  • не менее 10 предупреждений от каждого из использованных статических анализаторов
  • для каждого анализатора — предупреждения различных типов

Приоритет формирования выборки:

  1. «Истинные, не требующие исправления» — в первую очередь.
  2. «Ложноположительные» — во вторую очередь.
  3. В порядке убывания уровня критичности, определённого анализатором.

Критерии:

  • Доля неверно размеченных предупреждений ≤ 10% → исследования продолжаются после устранения недостатков.
  • Доля неверно размеченных предупреждений > 10% → испытательная лаборатория выполняет статический анализ самостоятельно либо принимает решение о невозможности дальнейших исследований.

Если результаты разработчика не соответствуют требованиям

Испытательная лаборатория оценивает объём кода, в отношении которого не выполнены требования п. 4.2.

  • Если суммарный объём такого кода не превышает 10 000 строк → допускается вместо статического анализа выполнить экспертизу участков исходного кода ОО (ЭКО).
  • Если объём превышает 10 000 строк → испытательная лаборатория может выполнить статический анализ самостоятельно либо принять решение о невозможности дальнейших исследований.

Самостоятельный статический анализ испытательной лабораторией

Испытательная лаборатория самостоятельно выполняет статический анализ исходного кода:

  • не менее 5 различных модулей из поверхности атаки ОО
  • в объёме не менее 10 предупреждений для каждого высокоуровневого языка программирования
  • инструмент статического анализа — любой, соответствующий требованиям Методики (предоставляется испытательной лабораторией, встраивается в стенд на этапе ПОД.2)

Дополнительные требования (усиления) для уровня контроля 4

Усиление 1 — Модули, реализующие ФБ ОО

Испытательная лаборатория проверяет, что состав анализируемых модулей дополнен модулями, реализующими функции безопасности (ФБ) ОО.

Усиление 2 — Соответствие статического анализатора ГОСТ Р 71207-2024

Испытательная лаборатория проверяет, что используемый статический анализатор отвечает требованиям национального стандарта Российской Федерации ГОСТ Р 71207-2024 «Защита информации. Разработка безопасного программного обеспечения. Статический анализ программного обеспечения. Общие требования».

Усиление 3 — Анализ open-source модулей по методикам Центра исследований

Испытательная лаборатория проверяет, что для подлежащих статическому анализу модулей с открытым исходным кодом, для которых определены методики статического анализа (п. 2.3, подпункт «л» Методики, portal.linuxtesting.ru), статический анализ выполнен в соответствии с требованиями этих методик.


Требования к результатам исследования

Если результаты разработчика ОО соответствуют требованиям п. 3.1 и п. 2.3 Методики — испытательная лаборатория допускается повторно использовать их при оформлении материалов исследований.

Результаты исследований фиксируются в материалах исследований (п. 5.2 Методики).

Дополнительно фиксируется в электронных приложениях:

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

Проверка артефактов результата

Формат для агента: артефакт считается принятым только при выполнении всех критериев; неприменимые пункты фиксируются с причиной.

Артефакт Что проверить Критерий приемки
Матрица охвата САО Перечень модулей поверхности атаки и модулей ФБ сопоставлен с языками и анализаторами Все высокоуровневые языки покрыты; исключения для разметки/ассемблера обоснованы
Конфигурации анализаторов Приложены версии, правила, профили, параметры запуска, учет специфики языков и заимствованных модулей Анализаторы работают на уровне синтаксического дерева и соответствуют ГОСТ Р 71207-2024 или есть документальное обоснование соответствия
Машиночитаемые результаты САО Приложены базы/отчеты анализаторов и журналы запусков Результаты открываются повторно и позволяют восстановить предупреждения, типы, уровни критичности и места в коде
Разметка предупреждений разработчика Все критические предупреждения размечены вручную; есть комментарии Нет общих формулировок без конкретики; комментарий понятен без тщательного анализа кода
Контрольная выборка ИЛ Есть не менее 20 критических предупреждений на язык, не менее 5 модулей, не менее 10 предупреждений на анализатор, разные типы Доля неверной разметки не превышает 10% либо принято решение о самостоятельном анализе/прекращении
Самостоятельный анализ ИЛ Проверено не менее 5 модулей поверхности атаки и не менее 10 предупреждений на каждый высокоуровневый язык Результаты ИЛ сопоставлены с результатами разработчика и оформлены в материалах
Исправления истинных предупреждений Приложены патчи или иные свидетельства исправления Для каждого истинного предупреждения есть статус: исправлено, принято как недостаток, повторно проверено
Неподдерживаемые языки и ассемблер Есть список модулей, язык, объем строк, причина непокрытия САО Участки переданы в ЭКО или оформлено решение о дальнейших действиях

Чек-лист проверки результатов перед отправкой

Формат: каждый пункт проверяется как выполнено / не выполнено / неприменимо.

Блок 1: Покрытие статического анализа разработчиком

  • Статический анализ выполнен для всех модулей из поверхности атаки ОО.
  • Анализ выполнен для всех высокоуровневых языков программирования в составе модулей.
  • Использован анализатор на уровне синтаксического дерева.
  • Использована конфигурация анализатора, учитывающая специфику языков и заимствованных модулей.
  • Выполнен статический анализ динамически генерируемого исходного кода (если применимо).
  • Конфигурации генератора кода и средств трансляции обоснованы разработчиком.

Блок 2: Разметка предупреждений разработчиком

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

Блок 3: Выборочная проверка разметки испытательной лабораторией

  • Сформирована контрольная выборка предупреждений (не менее 20 критических на язык, не менее 5 модулей, не менее 10 на анализатор, разные типы).
  • Выборка сформирована по приоритетам: «истинные, не требующие исправления» → «ложноположительные» → по убыванию критичности.
  • Доля неверно размеченных предупреждений в выборке не превышает 10%.
  • Если доля > 10%: принято обоснованное решение (самостоятельный анализ или прекращение исследований).

Блок 4: Самостоятельный анализ испытательной лабораторией

  • Проанализировано не менее 5 модулей из поверхности атаки.
  • Для каждого высокоуровневого языка получено не менее 10 предупреждений.
  • Инструмент статического анализа соответствует требованиям Методики.

Блок 5: Модули ФБ ОО (усиление 1)

  • Перечень анализируемых модулей дополнен всеми модулями, реализующими ФБ ОО.
  • Статический анализ выполнен для этих модулей в полном объёме.

Блок 6: Соответствие анализатора ГОСТ Р 71207-2024 (усиление 2)

  • Используемый статический анализатор соответствует требованиям ГОСТ Р 71207-2024.
  • Соответствие подтверждено документально (сертификат, заключение или обоснование).

Блок 7: Open-source модули по методикам Центра исследований (усиление 3)

  • Определён перечень open-source модулей, для которых на portal.linuxtesting.ru опубликованы методики статического анализа.
  • Статический анализ этих модулей выполнен в соответствии с требованиями указанных методик.
  • Результаты задокументированы.

Блок 8: Оформление результатов

  • Результаты зафиксированы в материалах исследований (п. 5.2 Методики).
  • Приложены: конфигурации инструментов, состав выборки, машиночитаемые результаты, результаты разметки.
  • Приложены исправления (патчи) истинных предупреждений или свидетельства применения исправлений.
  • Составлен список модулей с неподдерживаемыми языками и ассемблерными вставками (с указанием объёма).
  • Все выявленные недостатки безопасности задокументированы по форме таблицы 6 Методики.

Задачи СИ по данному разделу

Рабочий перечень задач для Redmine: Перечень_задач_СИ_М3.md

Код задачи Наименование
СИ-САО.01 Сформировать матрицу охвата САО (усил. 1)
СИ-САО.02 Проверить конфигурации статических анализаторов (усил. 2)
СИ-САО.03 Оценить статический анализ разработчика
СИ-САО.04 Проверить ручную разметку предупреждений разработчика
СИ-САО.05 Выполнить контрольную выборку предупреждений (≥20 на язык / ≥5 модулей / ≥10 на анализатор)
СИ-САО.06 Выполнить самостоятельный САО при необходимости
СИ-САО.07 Проверить open-source модули по методикам Центра исследований (усил. 3)
СИ-САО.08 Зафиксировать результаты САО и исправления