Как читать авторский курс и нормативные материалы
Это учебные материалы, а не заключение о соответствии конкретного продукта. Организационные модели курса отделяйте от терминов стандарта: ППК в опубликованном проекте — машиночитаемый перечень, а живой реестр его версий является практикой сопровождения. Термин OSA в разных материалах имеет разный охват. Статус и обязательность нормативного документа проверяются отдельно; проект КАПО опубликован как проект первой редакции.
Что проверять на проекте: генерация SBOM
Чек-лист аудитора по этапу генерации. Проверяем не «есть ли SBOM», а чем, на каком входе и в каком режиме он получен и не выдаётся ли неполный снимок за полный.
Как пользоваться Каждый пункт — да/нет с доказательством (команда, фрагмент
bom.json, запись о версии инструмента). «Не знаю» приравнивается к «нет».
- [ ] Инструмент назван явно. Для каждого SBOM известно, чем он сгенерирован (Syft / Trivy / cdxgen / иное), а не «каким-то генератором».
- [ ] Версия инструмента зафиксирована. Рядом с
bom.jsonхранитсяsyft version/trivy --version/cdxgen --versionна момент генерации. - [ ] Вход зафиксирован. Указаны репозиторий, commit/tag, дата и параметры запуска; SBOM воспроизводим повторным прогоном.
- [ ] Режим скана понятен. Ясно, манифест-скан это или бинарь-скан (каталог/lock-файлы против образа/ELF) — от этого зависит, что вообще могло попасть в SBOM.
- [ ] Генератор соответствует экосистеме. npm/PyPI/Go — Syft или cdxgen; контейнерный образ + CVE — Trivy; C/C++ — cdxgen. Нет ситуации, когда C/C++ «просканировали» Syft и считают результат полным.
- [ ] Полнота координат измерена. Известна доля компонентов с PURL/CPE, версией и лицензией, а не только их общее число.
- [ ] Подозрительно «чистый» SBOM перепроверен. Аномально малое число компонентов или CVE не принимается на веру — проверена доля заполненных PURL и режим скана.
- [ ] C/C++ отдан на обогащение. Сырой cdxgen-SBOM проходит через enrichment-утилиту («генератор фактов»): анализ ELF, маппинг динамических библиотек на DEB, дополнение метаданных; на выходе обогащённый
bom.json. - [ ] Unresolved-компоненты выделены. Есть явный список библиотек без версии/PURL/DEB-координат с ответственным за доразметку, а не «тихо пропавшие» из SBOM.
- [ ] Формат и валидность. SBOM в согласованном формате (CycloneDX/SPDX) и проходит валидацию схемы.
- [ ] Граница контура соблюдена. Внешние онлайн-режимы, публичные зеркала и облачные сервисы инструментов используются только по отдельному решению; чувствительные данные не уходят наружу.
- [ ] SBOM сравним во времени. Хранится история генераций так, что изменения можно отнести к проекту, а не к смене версии инструмента.
Стоп-сигналы аудита - SBOM есть, но неизвестно, чем и когда сгенерирован — результат недоверенный. - C/C++ «покрыт» манифест-сканером без обогащения — состав почти наверняка неполон. - Число компонентов у соисполнителя и при повторном прогоне расходится, а версии инструмента и commit входа не зафиксированы — спор неразрешим.
Связи
Конспект · BSI TR-03183-2 v2.1.0 · NIST SP 800-218 SSDF · NTIA Minimum Elements for SBOM · CISA Minimum Elements for SBOM · П03. Генерация SBOM через Syft · П04. Генерация SBOM через cdxgen для C C++ · П05. Trivy как генератор и сканер