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

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

OSV-Scanner

Для чего

OSV-Scanner — официальный клиент базы OSV.dev. Он читает не SBOM, а сами lockfiles проекта (package-lock.json, poetry.lock, go.mod, Cargo.lock, pom.xml и др.), извлекает точные версии и опрашивает OSV по каждой паре «экосистема + версия». Сила в том, что OSV хранит уязвимые диапазоны в виде машинных событий introduced/fixed, поэтому совпадение по версии точное, а не по эвристике CPE.

Как применяют

Базовый прогон — по дереву проекта или конкретному lockfile; для гейтов используют машинный вывод и call-graph анализ (Go), отсекающий недостижимый код:

Команда

# рекурсивно найти и просканировать все lockfiles
osv-scanner scan --recursive ./
# конкретный lockfile + анализ достижимости (Go) + JSON для гейта
osv-scanner scan --lockfile=go.mod --call-analysis=all --format=json ./ > osv.json
# просканировать готовый SBOM
osv-scanner scan --sbom=sbom.cdx.json

Запрос к API можно сделать и руками — это полезно показать студентам:

Прямой запрос к OSV API

curl -s https://api.osv.dev/v1/query -d \
  '{"package":{"ecosystem":"PyPI","name":"requests"},"version":"2.19.0"}'

В ответ — массив записей с id (например GHSA-..., PYSEC-...), полем affected.ranges и ссылками. Подавление FP делается файлом конфигурации с записями [[02 Справочник/Глоссарий/IgnoredVulns|IgnoredVulns]] по id и сроком.

Сильные стороны

Ограничения

Offline / on-premise

Частично. По умолчанию сканер ходит в api.osv.dev. Для закрытого контура существует офлайн-режим: предварительно выгружается локальная копия БД (osv-scanner --offline --download-offline-databases или зеркало zip-дампов экосистем из бакета OSV), после чего матчинг идёт без сети. Минус — данные актуальны на момент выгрузки, нужен регламент регулярного обновления зеркала.

Связанные темы

М06 Поиск уязвимостей и VDR/VEX · М04 Идентификаторы компонентов и уязвимостей Практика: П07. OSV-Scanner и lockfiles · П09. VDR и VEX Смежные карточки: OSV.dev · Package URL (PURL) · GitHub Security Advisory · Grype · EPSS · БДУ ФСТЭК