
osv-scanner v2.5.0
Scanner de vulnérabilités écrit en Go qui utilise les données fournies par https://osv.dev
Utilisez OSV-Scanner pour détecter les vulnérabilités existantes affectant les dépendances de votre projet. OSV-Scanner fournit une interface officiellement prise en charge pour la base de données OSV et une interface CLI pour OSV-Scalibr, qui relie la liste des dépendances d'un projet aux vulnérabilités qui les affectent.
OSV-Scanner prend en charge une large gamme de types de projets, de gestionnaires de paquets et de fonctionnalités, notamment :
- Langages : C/C++, Dart, Elixir, Go, Java, Javascript, PHP, Python, R, Ruby, Rust.
- Gestionnaires de paquets : npm, pip, yarn, maven, go modules, cargo, gem, composer, nuget et autres.
- Systèmes d'exploitation : Détecte les vulnérabilités dans les paquets du système d'exploitation sur les systèmes Linux.
- Conteneurs : Analyse les images de conteneurs à la recherche de vulnérabilités dans leurs images de base et les paquets inclus.
- Remédiation guidée : Fournit des recommandations de mise à niveau des versions de paquets basées sur des critères tels que la profondeur des dépendances, la sévérité minimale, la stratégie de correction et le retour sur investissement.
OSV-Scanner utilise la bibliothèque extensible OSV-Scalibr en interne pour fournir cette fonctionnalité. Si un langage ou un gestionnaire de paquets n'est pas actuellement pris en charge, veuillez soumettre une demande de fonctionnalité.
Base de données sous-jacente
La base de données sous-jacente, OSV.dev, présente plusieurs avantages par rapport aux bases de données d'avis de sécurité et aux scanners propriétaires :
- Couvrant la plupart des écosystèmes open source de langages et de systèmes d'exploitation (y compris Git), elle est exhaustive.
- Chaque avis provient d'une source ouverte et faisant autorité (par exemple GitHub Security Advisories, RustSec Advisory Database, Ubuntu security notices)
- Tout le monde peut suggérer des améliorations aux avis, ce qui donne une base de données de très haute qualité.
- Le format OSV stocke sans ambiguïté les informations relatives aux versions affectées dans un format lisible par machine qui correspond précisément à la liste des paquets d'un développeur.
Tout cela aboutit à des notifications de vulnérabilités précises et exploitables, ce qui réduit le temps nécessaire pour les résoudre. Consultez OSV.dev pour plus de détails !
Installation de base
Pour installer OSV-Scanner, veuillez vous référer à la section installation de notre documentation. Les versions d'OSV-Scanner sont disponibles sur la page des versions du dépôt GitHub. La méthode recommandée consiste à télécharger un binaire précompilé pour votre plateforme. Vous pouvez également utiliser
go install github.com/google/osv-scanner/v2/cmd/osv-scanner@latest pour le compiler à partir des sources.
Fonctionnalités clés
Pour plus d'informations, veuillez lire notre documentation détaillée pour apprendre à utiliser OSV-Scanner. Pour des informations détaillées sur chaque fonctionnalité, cliquez sur leurs titres dans ce README.
Veuillez noter : il s'agit des instructions pour la dernière version bêta d'OSV-Scanner V2. Si vous utilisez V1, consultez plutôt le README et la documentation de la V1.
Analyse d'un répertoire source
$ osv-scanner scan source -r /path/to/your/dir
Cette commande analysera récursivement le répertoire spécifié à la recherche de tous les fichiers de paquets pris en charge, tels que package.json, go.mod, pom.xml, etc., et affichera toutes les vulnérabilités découvertes.
OSV-Scanner offre la possibilité d'utiliser l'analyse des appels pour déterminer si une fonction vulnérable est réellement utilisée dans le projet, ce qui se traduit par moins de faux positifs et des alertes exploitables.
OSV-Scanner peut également détecter le code C/C++ vendorisé pour l'analyse des vulnérabilités. Voir ici pour plus de détails.
Fichiers de verrouillage pris en charge
OSV-Scanner prend en charge plus de 11 écosystèmes de langages et plus de 19 types de fichiers de verrouillage. Pour vérifier si votre écosystème est couvert, consultez notre documentation détaillée.
Analyse de conteneurs
OSV-Scanner prend également en charge une analyse complète et tenant compte des couches pour les images de conteneurs, afin de détecter les vulnérabilités dans les paquets des systèmes d'exploitation et les dépendances spécifiques aux langages suivants.
| Distributions prises en charge | Artefacts de langage pris en charge |
|---|---|
| Alpine OS | Go |
| Debian | Java |
| Ubuntu | Node |
| Python |
Consultez la documentation complète pour plus de détails sur la prise en charge.
Utilisation :
$ osv-scanner scan image my-image-name:tag

Analyse des licences
Vérifiez les licences de vos dépendances à l'aide des données de deps.dev. Pour un résumé :
osv-scanner --licenses path/to/repository
Pour vérifier par rapport à une liste de licences autorisées (format SPDX) :
osv-scanner --licenses="MIT,Apache-2.0" path/to/directory
Analyse hors ligne
Analysez votre projet par rapport à une base de données OSV locale. Aucune connexion réseau n'est requise après le téléchargement initial de la base de données. La base de données peut également être téléchargée manuellement.
osv-scanner --offline --download-offline-databases ./path/to/your/dir
Remédiation guidée (Expérimental)
[!WARNING] La remédiation guidée (la commande
fix) peut être risquée lorsqu'elle est exécutée sur des projets non fiables. Elle peut amener le gestionnaire de paquets à exécuter des scripts ou à suivre des registres externes spécifiés dans le projet. Veuillez vous assurer que vous faites confiance au code source et aux artefacts avant de continuer.
OSV-Scanner fournit une remédiation guidée, une fonctionnalité qui suggère des mises à niveau de versions de paquets en fonction de critères tels que la profondeur des dépendances, la sévérité minimale, la stratégie de correction et le retour sur investissement. Nous prenons actuellement en charge la remédiation des vulnérabilités dans les fichiers suivants :
| Écosystème | Format de fichier (Type) | Stratégies de remédiation prises en charge |
|---|---|---|
| npm | package-lock.json (fichier de verrouillage) | in-place |
| npm | package.json (manifeste) | relock |
| Maven | pom.xml (manifeste) | override |
Cette fonctionnalité est disponible sous forme de commande CLI sans interface utilisateur (headless), ainsi qu'en mode interactif.
Exemple (pour npm)
$ osv-scanner fix \
--max-depth=3 \
--min-severity=5 \
--ignore-dev \
--strategy=in-place \
-L path/to/package-lock.json
Mode interactif (pour npm)
$ osv-scanner fix \
-M path/to/package.json \
-L path/to/package-lock.json
Sources de données et confidentialité
OSV-Scanner communique avec les services externes suivants pendant son fonctionnement :
OSV.dev API
La principale source de données pour les informations sur les vulnérabilités. OSV-Scanner interroge cette API pour vérifier les paquets à la recherche de vulnérabilités connues et identifier les dépendances C/C++ vendorisées. Les données envoyées comprennent les noms de paquets, les versions, les écosystèmes et les empreintes de fichiers. Utilisez le mode --offline pour désactiver les requêtes réseau et analyser plutôt par rapport à une base de données locale.
deps.dev API
Utilisée pour des informations complémentaires sur les paquets :
- Résolution des dépendances : Résout les graphes de dépendances pour l'analyse des vulnérabilités et la remédiation
- Analyse des images de conteneurs : Interroge les métadonnées des images de conteneurs pour la détection des vulnérabilités
- Analyse des licences (option
--licenses) : Récupère les informations de licence des paquets - Obsolescence des paquets : Vérifie si les paquets sont obsolètes
Les données envoyées comprennent les noms de paquets, les versions et les écosystèmes. Aucun code source n'est transmis.
Registres de paquets
Lorsqu'il utilise le registre natif pour la résolution des dépendances (au lieu de deps.dev), OSV-Scanner peut interroger :
| Registre | URL | Utilisé pour |
|---|---|---|
| Maven Central | repo.maven.apache.org/maven2 | Métadonnées des paquets Maven et fichiers POM |
| npm Registry | registry.npmjs.org | Métadonnées des paquets npm |
| PyPI | pypi.org | Métadonnées des paquets Python |
Contribuer
Signaler des problèmes
Si vous pensez avoir trouvé un bug, veuillez utiliser le système de suivi des problèmes GitHub. Avant de créer un ticket, veuillez rechercher dans les tickets existants pour vérifier si votre problème est déjà couvert.
Contribuer au code de osv-scanner
Consultez CONTRIBUTING.md pour la documentation sur la façon de contribuer au code.