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 :
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é.
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 :
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 !
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.
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.
$ 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.
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.
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

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
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
[!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 :
Cette fonctionnalité est disponible sous forme de commande CLI sans interface utilisateur (headless), ainsi qu'en mode interactif.
$ osv-scanner fix \
--max-depth=3 \
--min-severity=5 \
--ignore-dev \
--strategy=in-place \
-L path/to/package-lock.json
$ osv-scanner fix \
-M path/to/package.json \
-L path/to/package-lock.json

OSV-Scanner communique avec les services externes suivants pendant son fonctionnement :
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.
Utilisée pour des informations complémentaires sur les paquets :
--licenses) : Récupère les informations de licence des paquetsLes données envoyées comprennent les noms de paquets, les versions et les écosystèmes. Aucun code source n'est transmis.
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 |
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.
osv-scannerConsultez CONTRIBUTING.md pour la documentation sur la façon de contribuer au code.