Как читать авторский курс и нормативные материалы
Это учебные материалы, а не заключение о соответствии конкретного продукта. Организационные модели курса отделяйте от терминов стандарта: ППК в опубликованном проекте — машиночитаемый перечень, а живой реестр его версий является практикой сопровождения. Термин OSA в разных материалах имеет разный охват. Статус и обязательность нормативного документа проверяются отдельно; проект КАПО опубликован как проект первой редакции.
Grype
Для чего
Grype сопоставляет перечень компонентов (готовый SBOM или собственное сканирование образа/директории) с собственной БД уязвимостей и выдаёт список «компонент → CVE/GHSA → диапазон уязвимых версий → исправленная версия». Сильная сторона — связка с Syft: один и тот же движок каталогизации делает SBOM, а Grype только матчит, поэтому покрытие экосистем у них общее.
Как применяют
Канонический сценарий курса — сканирование поверх уже готового SBOM, чтобы матчинг был воспроизводим и отделён от каталогизации:
Команда
# 1) обновить БД (или указать на офлайн-копию)
grype db update
# 2) матчинг поверх готового CycloneDX SBOM, вывод в таблицу
grype sbom:./sbom.cdx.json -o table
# 3) машинный вывод для гейта + только зафиксированные уязвимости
grype sbom:./sbom.cdx.json -o json --only-fixed > grype.json
Прямое сканирование артефакта тоже работает: grype dir:., grype docker:image:tag, grype registry:.... Гейт настраивается через --fail-on high (порог по severity) и файл .grype.yaml с правилами игнора по CVE/PURL. На входе понимает CycloneDX и SPDX; ключ компонента — PURL вида pkg:npm/lodash@4.17.20 или pkg:deb/debian/openssl@1.1.1n.
Сильные стороны
- Чистое разделение «инвентаризация (Syft) → матчинг (Grype)»: SBOM можно хранить как артефакт и пересканировать его позже, не пересобирая проект.
- БД компактна и обновляется одной командой; поддерживается явная фиксация версии БД для воспроизводимости отчёта.
- Управляемый игнор-лист (
.grype.yaml) с привязкой к PURL/CVE и сроком действия — удобно для документирования принятых рисков. - Гибкий контроль гейта: порог
--fail-on, фильтр--only-fixed, форматы table/json/cyclonedx/sarif.
Ограничения
- Матчинг для нативного C/C++ слаб: без PURL/CPE у статически слинкованных или собранных вручную библиотек уязвимость не привяжется (пустой PURL → нет совпадения).
- Источник — преимущественно агрегированная БД на базе NVD/GHSA/дистрибутивных фидов; российская специфика (БДУ ФСТЭК) и EPSS/KEV из коробки не учитываются.
- Качество результата напрямую определяется качеством SBOM: мусор на входе (неверная версия, отсутствующий namespace) даёт FP/FN.
- Нет собственного оркестратора портфеля — для сводки по многим проектам нужен внешний слой (например, Dependency-Track).
Offline / on-premise
Да. БД скачивается отдельно (grype db update), её можно зеркалировать во внутренний контур: переменные GRYPE_DB_CACHE_DIR и GRYPE_DB_UPDATE_URL указывают на локальный каталог/прокси, а GRYPE_DB_AUTO_UPDATE=false запрещает выход в сеть при матчинге. После загрузки БД матчинг полностью автономен. Сам бинарь — один статический файл без рантайм-зависимостей.
Связанные темы
М06 Поиск уязвимостей и VDR/VEX · М05 Инструменты генерации SBOM Практика: П06. Grype поверх готового SBOM · П34. SBOM quality gate Смежные карточки: Syft · Trivy · OSV-Scanner · Package URL (PURL) · NVD · GitHub Security Advisory · EPSS