Отчет о соответствии ГОСТ Р 56939-2024

Обзор

CodeGraph генерирует комплексный отчет о соответствии ГОСТ Р 56939-2024 («Требования к разработке защищенного программного обеспечения»), оценивая все 25 процессов стандарта. Отчет агрегирует артефакты из анализа CPG, SARIF-отчетов, конфигурационных файлов, результатов тестирования, истории git и модели угроз в единый структурированный документ для прохождения аудита ФСТЭК.

Основные возможности:

  • Автоматический сбор артефактов из 11 подсистем CodeGraph
  • Оценка всех 25 процессов ГОСТ со статусами FULL/PARTIAL/GAP/N/A
  • Матрица трассируемости: требование, код, тесты, находки, исправления
  • Три формата вывода: Markdown, JSON, шаблон для аудитора ГОСТ
  • Двуязычный вывод (русский и английский)
  • Хранение истории оценок с вычислением дельты
  • Хранилище на базе SQLite для анализа тенденций

Архитектура

ArtifactCollector ──> ProcessEvaluator ──> ReportRenderer
                                                
  CPG, SARIF, git,    25 оценок процессов   Markdown / JSON / ГОСТ
  конфигурация,       (специализированные
  тесты, модель       или стандартная
  угроз               оценка)
                            
TraceabilityMatrix    ComplianceStore
  CWE -> код ->        История SQLite
  тест -> находка      дельта между оценками

Компоненты

Компонент Модуль Назначение
ArtifactCollector src/compliance/gost_56939/artifact_collector.py Сбор артефактов из всех подсистем
ProcessEvaluator src/compliance/gost_56939/process_evaluator.py Оценка 25 процессов по собранным артефактам
ReportRenderer src/compliance/gost_56939/report_renderer.py Рендеринг в Markdown, JSON, шаблон ГОСТ
ComplianceStore src/compliance/gost_56939/compliance_store.py Хранилище SQLite с отслеживанием дельты
TraceabilityMatrix src/compliance/gost_56939/traceability.py Связь CWE-требований с кодом, тестами, находками
ComplianceGostConfig src/config/unified_config.py Конфигурация (пути поиска, переопределения, история)

Процессы ГОСТ

Все 25 процессов раздела 5 ГОСТ Р 56939-2024:

# Процесс Тип Покрытие CodeGraph
5.1 Планирование процессов смешанный SDLC-документация, PRD, политика безопасности
5.2 Обучение сотрудников организационный Н/П (ручная оценка)
5.3 Требования безопасности смешанный SECURITY.md, PRD, оценка рисков, модель угроз
5.4 Управление конфигурацией автоматизированный Git, CHANGELOG.md, реестр проектов
5.5 Управление недостатками смешанный Issue tracker, CLI, API, синхронизация, severity
5.6 Архитектура ПО автоматизированный CPG-граф, архитектурная документация
5.7 Моделирование угроз автоматизированный STRIDE (139 угроз, 138 точек входа), документация, CLI
5.8 Правила кодирования автоматизированный 190+ YAML-правил, конфигурации линтеров
5.9 Экспертиза кода автоматизированный Конвейер рецензирования, CI-workflows, хуки
5.10 Статический анализ автоматизированный GoCPG, SARIF-отчёты, CI-конвейер
5.11 Динамический анализ автоматизированный Фаззинг, DAST-хранилище, корреляция, CLI, API
5.12 Безопасная сборка смешанный Dockerfile, CI/CD, фиксация зависимостей
5.13 Безопасность сборочной среды смешанный Docker-изоляция, переменные среды, сканирование
5.14 Управление доступом автоматизированный RBAC-модуль, JWT/OAuth аутентификация
5.15 Безопасность секретов автоматизированный DLP-модуль (1356 LOC), .gitignore, SECURITY.md
5.16 Композиционный анализ автоматизированный SBOM, сканирование уязвимостей (OSV+NVD+БДУ)
5.17 Цепочка поставок автоматизированный Реестр, доверие, целостность, детектирование, ГОСТ-отчёт
5.18 Функциональное тестирование смешанный 9400+ тестов, покрытие, маркеры
5.19 Нефункциональное тестирование смешанный Тесты безопасности, тесты цепочки поставок
5.20 Безопасность при выпуске смешанный Release gate, профили, подавление, история
5.21 Безопасная поставка автоматизированный Docker, CI/CD-конвейер
5.22 Поддержка смешанный SLA в SECURITY.md, CHANGELOG.md, release gate
5.23 Реагирование на уязвимости смешанный 58 CWE, синхронизация issues, SLA, автоматизация
5.24 Поиск уязвимостей автоматизированный Система гипотез (58 CWE, 27 CAPEC)
5.25 Вывод из эксплуатации организационный Н/П (ручная оценка)

Типы процессов

  • автоматизированный — полностью оценивается анализом артефактов CodeGraph
  • организационный — требует ручной оценки (по умолчанию Н/П)
  • смешанный — частично автоматизирован, частично требует ручного ввода
  • внешний — требует интеграции внешнего инструментария

Использование CLI

Генерация полного отчета

# Отчет в Markdown (по умолчанию)
python -m src.cli compliance gost-56939

# JSON-вывод
python -m src.cli compliance gost-56939 --format json

# Шаблон для аудитора ГОСТ
python -m src.cli compliance gost-56939 --format gost --language ru

# С матрицей трассируемости
python -m src.cli compliance gost-56939 --include-traceability

# Сохранить в файл и историю
python -m src.cli compliance gost-56939 --output report.md --save-history

# Вывод на английском
python -m src.cli compliance gost-56939 --language en

Чек-лист артефактов

# Все процессы
python -m src.cli compliance checklist

# Определенные процессы
python -m src.cli compliance checklist --process 5.7,5.10

# Формат JSON
python -m src.cli compliance checklist --format json

История и дельта

# Просмотр истории оценок
python -m src.cli compliance history --project myproject

# Сравнение двух оценок
python -m src.cli compliance delta --old abc123 --new def456

Матрица трассируемости

# Формат Markdown
python -m src.cli compliance traceability

# Формат JSON
python -m src.cli compliance traceability --format json --output trace.json

Конечные точки API

Все конечные точки доступны по префиксу /api/v1/compliance/gost-56939/.

Метод Путь Описание
GET /{project_id} Полный отчет о соответствии
GET /{project_id}/checklist Чек-лист артефактов
GET /{project_id}/traceability Матрица трассируемости
GET /{project_id}/history История оценок
GET /{project_id}/export?format=gost Экспорт в указанном формате
GET /{project_id}/delta?old=ID&new=ID Дельта между оценками
POST /{project_id}/evaluate Запуск оценки

Пример: получение отчета

curl http://localhost:8000/api/v1/compliance/gost-56939/myproject

Ответ:

{
  "project_name": "myproject",
  "compliance_score": 100.0,
  "gost_standard": "GOST R 56939-2024",
  "summary": {"full": 23, "partial": 0, "gap": 0, "n_a": 2},
  "processes": [...]
}

Инструмент MCP

codegraph_compliance_gost(
  action="evaluate",     # evaluate | checklist | traceability | history | delta
  format="markdown",     # markdown | json | gost
  language="ru",         # ru | en
  process_filter="",     # идентификаторы процессов через запятую
  include_traceability=false,
  report_id_old="",      # для действия delta
  report_id_new=""       # для действия delta
)

Конфигурация

# config.yaml
compliance:
  gost_56939:
    enabled: true
    auto_evaluate_on_audit: true
    store_history: true
    history_db_path: "data/compliance_history.sqlite"
    organizational_processes_status: "n_a"
    sarif_search_paths: ["data/", "reports/"]
    manual_overrides: {}     # например, "5.1": "partial"

Ручные переопределения

Для организационных процессов, требующих ручной оценки, задайте переопределения:

compliance:
  gost_56939:
    manual_overrides:
      "5.1": "partial"   # Планирование задокументировано
      "5.2": "full"      # Обучение проведено
      "5.22": "partial"  # Процессы поддержки определены

Расчет уровня соответствия

Уровень соответствия рассчитывается по формуле:

  • FULL = 1,0 балла
  • PARTIAL = 0,5 балла
  • GAP = 0 баллов
  • N/A = исключается из расчета

Формула: оценка = сумма(баллы) / количество(применимых) * 100%

Матрица трассируемости

Матрица трассируемости связывает:

  1. Требования CWE с расположением в коде (из SARIF и CPG-находок)
  2. Расположение в коде с тестовыми файлами (по соглашению именования, например, test_sql_injection.py связывается с CWE-89)
  3. Находки со ссылками на исправления (хеши коммитов git)

Каждая запись имеет статус: covered (код + тесты), partial (только код или тесты), uncovered.

Специализированные оценщики

CodeGraph включает 25 специализированных оценщиков — по одному на каждый процесс ГОСТ:

Автоматизированные оценщики (10)

Эти оценщики определяют соответствие программно, анализируя данные CPG, отчеты SARIF, конфигурационные файлы и структуру проекта:

Оценщик Процесс Источники свидетельств
ConfigManagementEvaluator 5.4 Git, журнал изменений, реестр проектов
ArchitectureEvaluator 5.6 База данных CPG (модули, зависимости)
ThreatModelEvaluator 5.7 Модель STRIDE, поверхность атаки, цели исследования
CodingStandardsEvaluator 5.8 Правила YAML (190+), конфигурации линтеров
CodeReviewEvaluator 5.9 Модуль конвейера проверки кода
StaticAnalysisEvaluator 5.10 Конфигурация GoCPG, инструменты, отчеты SARIF
AccessControlEvaluator 5.14 Модуль RBAC, конфигурация авторизации
SecretsManagementEvaluator 5.15 Модуль DLP, сканирование секретов
SecureDeliveryEvaluator 5.21 Dockerfile, конвейер CI/CD
VulnerabilitySearchEvaluator 5.24 Система гипотез (58 CWE, 27 CAPEC)

Организационные/смешанные/внешние оценщики (15)

Эти оценщики обрабатывают процессы, требующие ручной оценки или внешних инструментов. Поддерживают manual_overrides из конфигурации:

Оценщик Процесс Тип
PlanningEvaluator 5.1 организационный
TrainingEvaluator 5.2 организационный
SecurityRequirementsEvaluator 5.3 смешанный
DefectManagementEvaluator 5.5 смешанный
DynamicAnalysisEvaluator 5.11 внешний
SecureBuildEvaluator 5.12 смешанный
BuildEnvSecurityEvaluator 5.13 смешанный
CompositionAnalysisEvaluator 5.16 внешний
SupplyChainEvaluator 5.17 внешний
FunctionalTestingEvaluator 5.18 смешанный
NonFunctionalTestingEvaluator 5.19 смешанный
ReleaseSecurityEvaluator 5.20 смешанный
SupportEvaluator 5.22 организационный
VulnerabilityResponseEvaluator 5.23 смешанный
DecommissioningEvaluator 5.25 организационный

Реестр оценщиков

Все оценщики загружаются автоматически через build_evaluator_registry():

from src.compliance.gost_56939.evaluators import build_evaluator_registry

registry = build_evaluator_registry(manual_overrides={"5.1": "partial"})
# Возвращает Dict[str, BaseProcessEvaluator] со всеми 25 оценщиками

Форматы вывода

Формат Метод Назначение
Markdown to_markdown(report, language) Вывод в CLI, документация
JSON to_json(report) Ответы API, инструмент MCP
HTML to_html(report, language) Конвертация в PDF, веб-отображение
Шаблон ГОСТ to_gost_template(report, language) Чеклист аудитора

Интеграция с аудитом

При auto_evaluate_on_audit: true отчет о соответствии автоматически генерируется при выполнении составного аудита и включается в метрики аудита под ключом compliance_gost_summary.

Отслеживание изменений

Хранилище соответствия отслеживает историю оценок в SQLite. Дельта-отчеты сравнивают две оценки:

  • improved — статус процесса повышен (например, GAP → PARTIAL)
  • degraded — статус процесса понижен
  • unchanged — статус без изменений
# Сравнение двух отчетов
python -m src.cli compliance delta --old <report_id_1> --new <report_id_2>

Дельта помогает отслеживать прогресс соответствия и выявлять регрессии перед аудитами.