САО — Статический анализ объекта оценки
Раздел методики: 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 предупреждений от каждого из использованных статических анализаторов
- для каждого анализатора — предупреждения различных типов
Приоритет формирования выборки:
- «Истинные, не требующие исправления» — в первую очередь.
- «Ложноположительные» — во вторую очередь.
- В порядке убывания уровня критичности, определённого анализатором.
Критерии:
- Доля неверно размеченных предупреждений ≤ 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 | Зафиксировать результаты САО и исправления |