
osv-scanner v2.5.0
Scanner di vulnerabilità scritto in Go che utilizza i dati forniti da https://osv.dev
Usa OSV-Scanner per trovare le vulnerabilità esistenti che interessano le dipendenze del tuo progetto. OSV-Scanner fornisce un frontend ufficialmente supportato per il database OSV e un'interfaccia CLI per OSV-Scalibr che collega l'elenco delle dipendenze di un progetto alle vulnerabilità che le interessano.
OSV-Scanner supporta un'ampia gamma di tipi di progetto, gestori di pacchetti e funzionalità, tra cui:
- Linguaggi: C/C++, Dart, Elixir, Go, Java, Javascript, PHP, Python, R, Ruby, Rust.
- Gestori di pacchetti: npm, pip, yarn, maven, go modules, cargo, gem, composer, nuget e altri.
- Sistemi operativi: Rileva le vulnerabilità nei pacchetti del sistema operativo su sistemi Linux.
- Contenitori: Scansiona le immagini dei contenitori per individuare vulnerabilità nelle immagini di base e nei pacchetti inclusi.
- Remediation guidata: Fornisce raccomandazioni per gli aggiornamenti di versione dei pacchetti basate su criteri come la profondità delle dipendenze, la gravità minima, la strategia di correzione e il ritorno sull'investimento.
OSV-Scanner utilizza internamente la libreria estensibile OSV-Scalibr per fornire questa funzionalità. Se un linguaggio o un gestore di pacchetti non è attualmente supportato, ti preghiamo di aprire una richiesta di funzionalità.
Database sottostante
Il database sottostante, OSV.dev, offre diversi vantaggi rispetto ai database di advisory e agli scanner closed source:
- Coprendo la maggior parte degli ecosistemi open source di linguaggi e sistemi operativi (incluso Git), è completo.
- Ogni advisory proviene da una fonte aperta e autorevole (ad es. GitHub Security Advisories, RustSec Advisory Database, Ubuntu security notices)
- Chiunque può suggerire miglioramenti agli advisory, con il risultato di un database di altissima qualità.
- Il formato OSV memorizza in modo inequivocabile le informazioni sulle versioni interessate in un formato leggibile dalle macchine che si mappa con precisione sull'elenco dei pacchetti di uno sviluppatore.
Tutto ciò si traduce in notifiche di vulnerabilità accurate e utilizzabili, che riducono il tempo necessario per risolverle. Dai un'occhiata a OSV.dev per maggiori dettagli!
Installazione di base
Per installare OSV-Scanner, fai riferimento alla sezione sull'installazione della nostra documentazione. Le release di OSV-Scanner sono disponibili nella pagina delle release del repository GitHub. Il metodo consigliato è scaricare un binario precompilato per la tua piattaforma. In alternativa, puoi usare
go install github.com/google/osv-scanner/v2/cmd/osv-scanner@latest per compilarlo dal sorgente.
Funzionalità principali
Per maggiori informazioni, leggi la nostra documentazione dettagliata per imparare come usare OSV-Scanner. Per informazioni dettagliate su ciascuna funzionalità, fai clic sui loro titoli in questo README.
Nota: queste sono le istruzioni per l'ultima beta di OSV-Scanner V2. Se stai usando V1, consulta invece il README e la documentazione della V1.
Scansione di una directory sorgente
$ osv-scanner scan source -r /path/to/your/dir
Questo comando scansionerà ricorsivamente la directory specificata per individuare eventuali file di pacchetto supportati, come package.json, go.mod, pom.xml, ecc., e mostrerà tutte le vulnerabilità rilevate.
OSV-Scanner ha la possibilità di utilizzare l'analisi delle chiamate per determinare se una funzione vulnerabile è effettivamente usata nel progetto, riducendo i falsi positivi e fornendo avvisi utilizzabili.
OSV-Scanner può anche rilevare il codice C/C++ vendored per la scansione delle vulnerabilità. Vedi qui per i dettagli.
Lockfile supportati
OSV-Scanner supporta 11+ ecosistemi linguistici e 19+ tipi di lockfile. Per verificare se il tuo ecosistema è coperto, consulta la nostra documentazione dettagliata.
Scansione dei contenitori
OSV-Scanner supporta anche una scansione completa e sensibile ai layer per le immagini dei contenitori, per rilevare vulnerabilità nei seguenti pacchetti del sistema operativo e nelle dipendenze specifiche del linguaggio.
| Supporto distro | Supporto artefatti dei linguaggi |
|---|---|
| Alpine OS | Go |
| Debian | Java |
| Ubuntu | Node |
| Python |
Consulta la documentazione completa per i dettagli sul supporto.
Utilizzo:
$ osv-scanner scan image my-image-name:tag

Scansione delle licenze
Controlla le licenze delle tue dipendenze utilizzando i dati di deps.dev. Per un riepilogo:
osv-scanner --licenses path/to/repository
Per verificare rispetto a un elenco di licenze consentite (formato SPDX):
osv-scanner --licenses="MIT,Apache-2.0" path/to/directory
Scansione offline
Scansiona il tuo progetto utilizzando un database OSV locale. Non è richiesta alcuna connessione di rete dopo il download iniziale del database. Il database può anche essere scaricato manualmente.
osv-scanner --offline --download-offline-databases ./path/to/your/dir
Remediation guidata (Sperimentale)
[!WARNING] La remediation guidata (il comando
fix) può essere rischiosa se eseguita su progetti non affidabili. Potrebbe indurre il gestore di pacchetti a eseguire script o a seguire registri esterni specificati nel progetto. Assicurati di fidarti del codice sorgente e degli artefatti prima di procedere.
OSV-Scanner fornisce la remediation guidata, una funzionalità che suggerisce aggiornamenti delle versioni dei pacchetti in base a criteri come la profondità delle dipendenze, la gravità minima, la strategia di correzione e il ritorno sull'investimento. Attualmente supportiamo la correzione delle vulnerabilità nei seguenti file:
| Ecosistema | Formato file (Tipo) | Strategie di remediation supportate |
|---|---|---|
| npm | package-lock.json (lockfile) | in-place |
| npm | package.json (manifest) | relock |
| Maven | pom.xml (manifest) | override |
È disponibile come comando CLI headless e anche come modalità interattiva.
Esempio (per npm)
$ osv-scanner fix \
--max-depth=3 \
--min-severity=5 \
--ignore-dev \
--strategy=in-place \
-L path/to/package-lock.json
Modalità interattiva (per npm)
$ osv-scanner fix \
-M path/to/package.json \
-L path/to/package-lock.json
Fonti dei dati e privacy
OSV-Scanner comunica con i seguenti servizi esterni durante il funzionamento:
OSV.dev API
La fonte primaria per le informazioni sulle vulnerabilità. OSV-Scanner interroga questa API per verificare la presenza di vulnerabilità note nei pacchetti e per identificare le dipendenze C/C++ vendored. I dati inviati includono nomi di pacchetti, versioni, ecosistemi e hash dei file. Usa la modalità --offline per disabilitare le richieste di rete e scansionare invece un database locale.
deps.dev API
Utilizzata per informazioni supplementari sui pacchetti:
- Risoluzione delle dipendenze: Risolve i grafi delle dipendenze per la scansione delle vulnerabilità e la remediation
- Scansione delle immagini dei contenitori: Interroga i metadati delle immagini dei contenitori per il rilevamento delle vulnerabilità
- Scansione delle licenze (flag
--licenses): Recupera le informazioni sulle licenze dei pacchetti - Deprecazione dei pacchetti: Verifica se i pacchetti sono deprecati
I dati inviati includono nomi di pacchetti, versioni ed ecosistemi. Nessun codice sorgente viene trasmesso.
Registri dei pacchetti
Quando si utilizza il registro nativo per la risoluzione delle dipendenze (invece di deps.dev), OSV-Scanner può interrogare:
| Registro | URL | Utilizzato per |
|---|---|---|
| Maven Central | repo.maven.apache.org/maven2 | Metadati dei pacchetti Maven e file POM |
| npm Registry | registry.npmjs.org | Metadati dei pacchetti npm |
| PyPI | pypi.org | Metadati dei pacchetti Python |
Contribuisci
Segnala problemi
Se hai quello che sembra un bug, utilizza il sistema di tracciamento dei problemi GitHub. Prima di aprire un problema, cerca tra i problemi esistenti per vedere se il tuo è già coperto.
Contribuire al codice di osv-scanner
Vedi CONTRIBUTING.md per la documentazione su come contribuire al codice.