Назад к обновлениям
New releaseAug 7, 2026

osv-scanner v2.5.0

Сканер уязвимостей, написанный на Go, который использует данные, предоставленные https://osv.dev

Поделиться

OpenSSF Scorecard Checks codecov SLSA 3 GitHub Release

Используйте OSV-Scanner для поиска существующих уязвимостей, затрагивающих зависимости вашего проекта. OSV-Scanner предоставляет официально поддерживаемый фронтенд для базы данных OSV и CLI-интерфейс для OSV-Scalibr, который связывает список зависимостей проекта с уязвимостями, которые на них влияют.

OSV-Scanner поддерживает широкий спектр типов проектов, менеджеров пакетов и функций, включая, но не ограничиваясь:

  • Языки: C/C++, Dart, Elixir, Go, Java, Javascript, PHP, Python, R, Ruby, Rust.
  • Менеджеры пакетов: npm, pip, yarn, maven, go modules, cargo, gem, composer, nuget и другие.
  • Операционные системы: Обнаруживает уязвимости в пакетах ОС в системах Linux.
  • Контейнеры: Сканирует образы контейнеров на наличие уязвимостей в их базовых образах и включённых пакетах.
  • Управляемое исправление: Предоставляет рекомендации по обновлению версий пакетов на основе таких критериев, как глубина зависимостей, минимальная серьёзность, стратегия исправления и окупаемость.

OSV-Scanner использует расширяемую библиотеку OSV-Scalibr под капотом для обеспечения этой функциональности. Если язык или менеджер пакетов в настоящее время не поддерживается, пожалуйста, оставьте запрос на добавление функции.

База данных, лежащая в основе

База данных, лежащая в основе, OSV.dev, имеет ряд преимуществ по сравнению с закрытыми базами данных рекомендаций и сканерами:

  • Охватывая большинство экосистем языков с открытым исходным кодом и ОС (включая Git), она является всеобъемлющей.
  • Каждая рекомендация поступает из открытого и авторитетного источника (например, GitHub Security Advisories, RustSec Advisory Database, уведомления безопасности Ubuntu)
  • Любой может предложить улучшения к рекомендациям, что приводит к созданию очень качественной базы данных.
  • Формат OSV однозначно хранит информацию о затронутых версиях в машиночитаемом формате, который точно сопоставляется со списком пакетов разработчика

Всё вышеперечисленное приводит к точным и применимым на практике уведомлениям об уязвимостях, что сокращает время, необходимое для их устранения. Загляните на OSV.dev для получения более подробной информации!

Базовая установка

Для установки OSV-Scanner, пожалуйста, обратитесь к разделу установки нашей документации. Релизы OSV-Scanner можно найти на странице релизов репозитория GitHub. Рекомендуемый способ — загрузить предварительно собранный двоичный файл для вашей платформы. В качестве альтернативы вы можете использовать go install github.com/google/osv-scanner/v2/cmd/osv-scanner@latest для сборки из исходного кода.

Ключевые возможности

Для получения дополнительной информации, пожалуйста, прочитайте нашу подробную документацию, чтобы узнать, как использовать OSV-Scanner. Для получения подробной информации о каждой функции нажмите на их заголовки в этом README.

Обратите внимание: Это инструкции для последней бета-версии OSV-Scanner V2. Если вы используете V1, обратитесь к README и документации V1.

Сканирование исходного каталога

$ osv-scanner scan source -r /path/to/your/dir

Эта команда рекурсивно просканирует указанный каталог на наличие любых поддерживаемых файлов пакетов, таких как package.json, go.mod, pom.xml и т.д., и выведет все обнаруженные уязвимости.

OSV-Scanner имеет возможность использовать анализ вызовов, чтобы определить, действительно ли уязвимая функция используется в проекте, что приводит к меньшему количеству ложных срабатываний и применимым на практике предупреждениям.

OSV-Scanner также может обнаруживать вендоренный C/C++ код для сканирования уязвимостей. Подробности см. здесь.

Поддерживаемые файлы блокировок

OSV-Scanner поддерживает 11+ языковых экосистем и 19+ типов файлов блокировок. Чтобы проверить, покрыта ли ваша экосистема, пожалуйста, ознакомьтесь с нашей подробной документацией.

Сканирование контейнеров

OSV-Scanner также поддерживает комплексное сканирование образов контейнеров с учётом слоёв для обнаружения уязвимостей в следующих пакетах операционных систем и зависимостях, специфичных для языков.

Поддержка дистрибутивовПоддержка языковых артефактов
Alpine OSGo
DebianJava
UbuntuNode
Python

Подробности о поддержке см. в полной документации.

Использование:

$ osv-scanner scan image my-image-name:tag

экранная запись HTML-вывода сканирования контейнеров

Сканирование лицензий

Проверьте лицензии ваших зависимостей, используя данные deps.dev. Для получения сводки:

osv-scanner --licenses path/to/repository

Для проверки по списку разрешённых лицензий (формат SPDX):

osv-scanner --licenses="MIT,Apache-2.0" path/to/directory

Автономное сканирование

Сканируйте свой проект по локальной базе данных OSV. Сетевое соединение не требуется после первоначальной загрузки базы данных. Базу данных также можно загрузить вручную.

osv-scanner --offline --download-offline-databases ./path/to/your/dir

Управляемое исправление (Экспериментально)

[!WARNING] Управляемое исправление (команда fix) может быть рискованным при запуске на ненадёжных проектах. Оно может побудить менеджер пакетов выполнять скрипты или следовать внешним реестрам, указанным в проекте. Пожалуйста, убедитесь, что вы доверяете исходному коду и артефактам, прежде чем продолжить.

OSV-Scanner предоставляет управляемое исправление — функцию, которая предлагает обновления версий пакетов на основе таких критериев, как глубина зависимостей, минимальная серьёзность, стратегия исправления и окупаемость. В настоящее время мы поддерживаем исправление уязвимостей в следующих файлах:

ЭкосистемаФормат файла (тип)Поддерживаемые стратегии исправления
npmpackage-lock.json (файл блокировки)in-place
npmpackage.json (манифест)relock
Mavenpom.xml (манифест)override

Это доступно как неинтерактивная CLI-команда, а также в интерактивном режиме.

Пример (для npm)

$ osv-scanner fix \
    --max-depth=3 \
    --min-severity=5 \
    --ignore-dev  \
    --strategy=in-place \
    -L path/to/package-lock.json

Интерактивный режим (для npm)

$ osv-scanner fix \
    -M path/to/package.json \
    -L path/to/package-lock.json
Скриншот экрана интерактивных результатов relock с выбранными некоторыми патчами ослабления ограничений

Источники данных и конфиденциальность

OSV-Scanner взаимодействует со следующими внешними сервисами во время работы:

OSV.dev API

Основной источник данных об уязвимостях. OSV-Scanner обращается к этому API для проверки пакетов на наличие известных уязвимостей и для идентификации вендоренных C/C++ зависимостей. Отправляемые данные включают имена пакетов, версии, экосистемы и хеши файлов. Используйте режим --offline, чтобы отключить сетевые запросы и сканировать по локальной базе данных.

deps.dev API

Используется для дополнительной информации о пакетах:

  • Разрешение зависимостей: Строит графы зависимостей для сканирования уязвимостей и их исправления
  • Сканирование образов контейнеров: Запрашивает метаданные образов контейнеров для обнаружения уязвимостей
  • Сканирование лицензий (флаг --licenses): Получает информацию о лицензиях для пакетов
  • Устаревание пакетов: Проверяет, являются ли пакеты устаревшими

Отправляемые данные включают имена пакетов, версии и экосистемы. Исходный код не передаётся.

Реестры пакетов

При использовании собственного реестра для разрешения зависимостей (вместо deps.dev) OSV-Scanner может обращаться к:

РеестрURLИспользуется для
Maven Centralrepo.maven.apache.org/maven2Метаданных пакетов Maven и POM-файлов
npm Registryregistry.npmjs.orgМетаданных пакетов npm
PyPIpypi.orgМетаданных пакетов Python

Участие в разработке

Сообщение о проблемах

Если у вас есть что-то похожее на ошибку, пожалуйста, используйте систему отслеживания проблем GitHub. Прежде чем создавать проблему, пожалуйста, поищите существующие проблемы, чтобы увидеть, не покрыта ли ваша проблема уже.

Внесение кода в osv-scanner

См. CONTRIBUTING.md для документации о том, как вносить код.

История звёзд

Star History Chart

Категории