Проблема безопасности зависимостей
Любой разработчик серьёзного проекта знает, что наибольший риск исходит не от собственного кода, а от сотен или даже тысяч сторонних библиотек и пакетов, которые устанавливаются вместе с основными инструментами. Реальная поверхность атаки — это полный граф всех используемых пакетов внутри вашего бинарника или контейнера.
Традиционные решения
До недавнего времени инструменты аудита зависимостей были представлены коммерческими продуктами вроде Snyk, WhiteSource, Black Duck либо специализированными сканерами для конкретных экосистем (например, npm audit, pip-audit).
Однако если ваш стек включает несколько языков программирования и технологий (Node.js, Python, Go плюс контейнеры), вам приходится использовать разные инструменты, каждый со своим форматом вывода и базой данных, часто противоречащих друг другу.
Решение от Google
В 2021 году компания Google запустила проект OSV.dev — открытую базу данных известных уязвимостей открытого ПО с единым стандартизированным форматом. На её основе был создан официальный командный инструмент под названием osv-scanner, который заменяет большинство специализированных сканеров одним универсальным решением.
Особенности osv-scanner:
- Написан на языке Go;
- Поддерживает широкий спектр языков программирования и менеджеров пакетов;
- Бесплатен и распространяется под лицензией Apache-2.0;
- Код проверяется согласно уровню SLSA 3, обеспечивая высокий уровень доверия.
Как работает osv-scanner?
osv-scanner анализирует манифесты и файлы блокировки вашего проекта (или образ контейнера, директорию исходников) и сравнивает их с данными базы OSV.dev, выявляя зависимости с известными уязвимостями и предлагая исправленные версии при наличии таковых.
Поддерживаемые языки и менеджеры пакетов включают:
- Языки: C/C++, Dart, Elixir, Go, Java, JavaScript, PHP, Python, R, Ruby, Rust;
- Менеджеры пакетов: npm, pip, Cargo, Bundler и другие.