Как читать авторский курс и нормативные материалы
Это учебные материалы, а не заключение о соответствии конкретного продукта. Организационные модели курса отделяйте от терминов стандарта: ППК в опубликованном проекте — машиночитаемый перечень, а живой реестр его версий является практикой сопровождения. Термин OSA в разных материалах имеет разный охват. Статус и обязательность нормативного документа проверяются отдельно; проект КАПО опубликован как проект первой редакции.
Что проверять на проекте: форматы и качество SBOM
Чек-лист аудитора по теме модуля. Проверяется не «есть ли SBOM», а соответствует ли он формату и порогу качества BSI TR-03183-2.
Принцип проверки Сначала формат и версия (формальный фильтр), затем обязательные поля компонента (5.2.2), затем семантика лицензий и идентификаторов. Если формат/версия не проходят — остальное проверять преждевременно.
Чек-лист
- [ ] Формат и версия. SBOM представлен в CycloneDX ≥ 1.6 или SPDX ≥ 3.0.1, в JSON или XML. Файлы 1.4/1.5 и SPDX 2.x не принимаются как соответствующие BSI.
- [ ] SWID на своём месте. SWID-теги (если есть) используются как идентификатор компонента (
swid.tagId/externalIdentifierType: swid), а не выдаются за SBOM целиком. - [ ] Поля самого SBOM. Заполнены creator (email или URL) и timestamp (рекомендуется UTC/Zulu); присутствует SBOM-URI/serialNumber.
- [ ] Обязательные поля компонента (5.2.2). Для каждого компонента есть creator, name, version, filename, dependencies с признаком полноты, distribution licence, hash SHA-512 deployable, executable/archive/structured property.
- [ ] Свойства BSI. Executable/archive/structured закодированы через
bsi:component:*(CycloneDX) илиsoftware_additionalPurpose(SPDX); их отсутствие отмечено как пробел качества, а не «всё ок». - [ ] Идентификаторы. Есть устойчивый ключ (purl и/или CPE); проверена нормализация — см. П24. PURL нормализация и private qualifiers, П25. CPE alias worklist.
- [ ] Лицензии по трём категориям. Различаются original / distribution / effective; лицензии заданы SPDX-идентификаторами или выражениями, а не только текстом (BSI 6.1).
- [ ] Глубина (level of detail). Объявлен класс/глубина SBOM (top-level / n-level / transitive / delivery item / complete); прямые и транзитивные зависимости разрешены минимум до первого компонента вне scope of delivery.
- [ ] Чистота от уязвимостей. В файле SBOM нет блока уязвимостей; информация об уязвимостях вынесена в CSAF/VEX — см. М06 Поиск уязвимостей и управление VDR VEX.
- [ ] Конвертация под контролем. Если SBOM конвертируется между форматами, зафиксирован список теряемых полей (hash, declared/concluded, properties) и решение, как это компенсируется.
- [ ] Класс SBOM заявлен. Указано, это Design / Source / Build / Analysed / Deployed / Runtime SBOM — от этого зависит, какие поля вообще достижимы (например, hash требует доступа к бинарю).
- [ ] Подпись. SBOM по возможности подписан для проверки подлинности — см. П14. Подпись SBOM через Sigstore.
Типовые несоответствия
Частые провалы аудита - SBOM в CycloneDX 1.4 «по умолчанию инструмента» — формально не BSI. - SWID/инвентарь активов выдан за SBOM. - Лицензия как свободный текст без SPDX-идентификатора. - Уязвимости вшиты в SBOM (статика тащит динамику по всей цепочке). - Не заявлен класс SBOM, поэтому непонятно, почему нет hash или filename.
Опора
BSI TR-03183-2 v2.1.0 (разделы 4, 5.1, 5.2, 6.1, 8.3, 8.4) · CISA Minimum Elements for SBOM · Чек-лист качества CycloneDX · Чек-лист качества SPDX · Соглашение о качестве данных SBOM · Минимальный набор полей ППК.