Пиков / КАПО
Как читать авторский курс и нормативные материалы

Это учебные материалы, а не заключение о соответствии конкретного продукта. Организационные модели курса отделяйте от терминов стандарта: ППК в опубликованном проекте — машиночитаемый перечень, а живой реестр его версий является практикой сопровождения. Термин OSA в разных материалах имеет разный охват. Статус и обязательность нормативного документа проверяются отдельно; проект КАПО опубликован как проект первой редакции.

Контрольные вопросы: Инструменты генерации SBOM

Базовый уровень 1. Чем манифест-скан отличается от бинарь-скана? Приведите по одному примеру входа для каждого. 2. Что видит Syft и почему он не отдаёт список уязвимостей сам по себе? 3. Чем Trivy отличается от Syft при генерации SBOM? В каком сценарии выгоден именно Trivy? 4. Почему cdxgen применяют для C/C++, а Syft/Trivy там почти бесполезны? 5. Какие поля компонента в bom.json обязательны, чтобы анализатор смог сопоставить его с CVE?

Средний уровень 6. Почему один репозиторий даёт у трёх инструментов разное число компонентов? Это баг или ожидаемо? 7. Что именно нужно зафиксировать рядом с bom.json, чтобы SBOM был воспроизводим и сравним во времени? 8. Какие факты для C/C++ дотягивает обогащение «генератором фактов» поверх сырого cdxgen-SBOM? (динамические .so, маппинг на DEB и т. п.) 9. Почему статически слинкованная библиотека — слепая зона бинарь-скана, и какой генератор/режим частично её закрывает? 10. Какие данные нельзя отправлять во внешний облачный сервис или публичное зеркало без отдельного решения в закрытом контуре?

Продвинутый уровень 11. SBOM от cdxgen для C/C++ содержит компонент libssl без версии и без PURL. Что это значит для последующего поиска уязвимостей и как это исправить? 12. Как организовать выбор генератора в CI, если в монорепозитории есть и npm, и PyPI, и C/C++ модули одновременно?

Кейс-задачи

Кейс 1. Подозрительно мало CVE Команда сгенерировала SBOM одним инструментом и получила всего 4 уязвимости на крупный проект; коллеги на похожем проекте видят десятки. SBOM формально валиден. С чего начать разбор? Какие поля и метрики охвата (доля PURL, число компонентов, режим скана) проверить в первую очередь, прежде чем радоваться «чистому» проекту?

Кейс 2. Три разных SBOM На приёмке соисполнитель прислал bom.json на 120 компонентов, а ваш повторный прогон даёт 80. Версия инструмента и commit входа у вас и у него различаются. Как доказательно установить, разница в проекте, в версии инструмента или в режиме (манифест vs бинарь)? Какой минимальный набор данных надо было затребовать вместе с SBOM, чтобы такого спора не возникло?

Кейс 3. C/C++ без версий cdxgen отдал каркас C/C++ графа: есть имена библиотек, но у половины нет версии и DEB-координат. Опишите, что должна сделать enrichment-утилита («генератор фактов»), чтобы превратить этот каркас в пригодный для анализа уязвимостей SBOM, и какие компоненты всё равно останутся unresolved.

Связи

Конспект · П03. Генерация SBOM через Syft · П04. Генерация SBOM через cdxgen для C C++ · П05. Trivy как генератор и сканер · М09