In questa pagina
- Cosa controlla un tool SCA?
- Quali tool SCA open source sono mantenuti nel 2026?
- Cosa ha trovato ogni tool nello stesso repository?
- Trivy vs Grype vs OSV-Scanner: quale usare?
- Un tool SCA ti dice se una vulnerabilità è raggiungibile?
- OWASP Dependency-Check vale ancora la pena?
- Cosa si perdono i tool SCA?
- Tra una scansione e l'altra: monitorare le nuove CVE con OpenCVE
- Come si esegue la SCA in CI tenendo una sola lista?
- Domande frequenti
- Qual è il miglior tool SCA open source nel 2026?
- Trivy fa anche SCA?
- Che differenza c'è tra Trivy e Grype?
- Dependency-Check di OWASP funziona senza chiave API NVD?
- Che differenza c'è tra SCA e SAST?
- Bastano npm audit e pip-audit?
- Cos'è la reachability nella SCA?
- Un tool SCA mi avvisa quando esce una nuova CVE?

I tool SCA open source che conviene usare nel 2026 sono OSV-Scanner, Trivy e Grype, con npm audit e pip-audit come controlli rapidi dentro un solo ecosistema. Coprono lo strato delle dipendenze di uno stack AppSec open source, accanto ai tool SAST open source che abbiamo verificato su GitHub. Il 5 novembre 2026 ne abbiamo eseguiti cinque sullo stesso repository, con dipendenze npm, Python, Maven e Go volutamente vecchie. Insieme hanno segnalato 109 vulnerabilità distinte: OSV-Scanner le ha trovate tutte e 109, Trivy 105 e Grype 104.
Le differenze nascono dalle dipendenze che non compaiono nei manifest. Solo OSV-Scanner ha risolto i pacchetti che requests si porta dietro, e Grype ha saltato le librerie Maven che arrivano con log4j-core. OWASP Dependency-Check, il primo tool citato dal primo risultato di Google e dalla risposta AI di Bing per questa ricerca, si è fermato all'aggiornamento del suo database perché non aveva una chiave API NVD.
Cosa controlla un tool SCA?
Un tool SCA, da software composition analysis, elenca i pacchetti open source usati dal tuo progetto, compresi quelli che le tue dipendenze si tirano dietro, e confronta ogni versione esatta con i database di advisory, come quello di GitHub e OSV. Segnala le vulnerabilità note, la versione corretta quando esiste e, con alcuni tool, la licenza di ogni pacchetto.
L'elenco è più lungo di quanto lasci pensare il manifest. Il 5 novembre 2026 il repository del nostro sito dichiarava 39 pacchetti nel suo package.json, 17 dipendenze e 22 dipendenze di sviluppo, e il suo pnpm-lock.yaml ne elencava 965. Quello che viene installato è il lockfile, quindi uno scanner che legge solo il manifest si perde gli altri 926.
La SCA non legge il codice scritto dal tuo team. Quello è il lavoro della SAST, e le due rispondono a domande diverse: la SAST si chiede se il tuo codice ha una falla, la SCA se un pacchetto che distribuisci ne ha una pubblicata. Nessuna delle due vede un pacchetto malevolo che non ha ancora un advisory, ed è da lì che passa lo slopsquatting, l'attacco sui nomi di pacchetti inventati dai modelli AI.
Quali tool SCA open source sono mantenuti nel 2026?
Trivy, Grype, OSV-Scanner, Dependency-Check, Dependency-Track e pip-audit hanno tutti pubblicato una release nel 2026 e nessuno è archiviato, secondo GitHub al 5 novembre 2026. Tutti e sei sono sotto licenza Apache-2.0. Cambiano per quello che leggono, per l'origine dei dati e per quello che fanno dopo la scansione, e Dependency-Track è una piattaforma che conserva i risultati, non uno scanner da lanciare in CI.
| Tool | Chi lo mantiene | Ultima release | Cosa legge | Output | Da sapere |
|---|---|---|---|---|---|
| Trivy | Aqua Security | v0.76.1, 21 ott 2026 | Lockfile e manifest di molti ecosistemi, immagini container, IaC | JSON, SARIF, CycloneDX, SPDX | Scansiona anche secret, configurazioni errate e licenze |
| Grype | Anchore | v0.121.1, 2 nov 2026 | Cartelle, SBOM, immagini container, tramite Syft | JSON, SARIF, CycloneDX | Dati EPSS e CISA KEV nel suo JSON |
| OSV-Scanner | v2.7.0, 12 ott 2026 | Lockfile e manifest, immagini container | JSON, SARIF, CycloneDX, SPDX, HTML | Analisi delle chiamate Go di default, dipendenze transitive Maven, controllo licenze | |
| Dependency-Check | OWASP | v13.0.0, 3 ago 2026 | JAR, assembly .NET, npm e altri analyzer | HTML, JSON, XML, SARIF | Associa i pacchetti tramite identificativi CPE; chiave API NVD fortemente consigliata |
| Dependency-Track | OWASP | 5.2.1, 25 ott 2026 | SBOM CycloneDX | Web app e API | Segue ogni SBOM nel tempo; richiede Docker e PostgreSQL |
| pip-audit | PyPA | v2.10.1, 10 giu 2026 | Ambienti Python e file requirements | JSON, CycloneDX, Markdown | Usa gli advisory di PyPI |
| npm audit | npm (integrato) | incluso in npm | package-lock.json | JSON | Chiede al registry gli advisory noti |
OSV-Scanner è il front end di Google verso OSV.dev, un database in un unico formato aperto che raccoglie il GitHub Advisory Database, i database di vulnerabilità di PyPI e di Go, RustSec e altri. Trivy scansiona repository, immagini container e codice di infrastruttura con un solo binario. Grype scansiona immagini container, filesystem e SBOM, e legge gli elenchi di pacchetti costruiti da Syft, l'altro tool di Anchore. Dependency-Check e Dependency-Track sono progetti Flagship dell'OWASP. pip-audit è mantenuto sotto la Python Packaging Authority.
Due tool spesso messi sotto la voce SCA aggiornano le dipendenze senza scansionarle nello stesso senso. Dependabot, la cui libreria centrale è sotto licenza MIT, apre pull request che aggiornano le dipendenze, e Renovate, sotto AGPL-3.0, fa lo stesso su un'ampia gamma di linguaggi e piattaforme. Tengono aggiornate le versioni, e nessuno dei due tiene traccia di quello che hai rilasciato.
Cosa ha trovato ogni tool nello stesso repository?
Nel nostro test del 5 novembre 2026, cinque tool SCA hanno scansionato lo stesso repository con dipendenze datate in quattro ecosistemi e, insieme, hanno segnalato 109 vulnerabilità distinte in 21 pacchetti. OSV-Scanner ne ha trovate 109, Trivy 105, Grype 104. npm audit ha trovato le stesse 43 vulnerabilità npm degli altri, e pip-audit le stesse 21 nei quattro pacchetti Python fissati.
Abbiamo costruito un piccolo repository che somiglia al backend di un e-commerce, con un servizio per ecosistema e versioni del 2020 e del 2021 bloccate di proposito:
- un'API Node.js con express 4.17.1, lodash 4.17.20 e axios 0.21.1, e un lockfile di 53 pacchetti risolto il giorno stesso;
- un worker Python il cui
requirements.txtfissa requests 2.25.0, urllib3 1.26.4, PyYAML 5.3.1 e Jinja2 2.11.2; - un servizio di fatturazione Java il cui
pom.xmldichiara log4j-core 2.14.1 e commons-text 1.9; - un gateway Go su una versione di novembre 2021 di
golang.org/x/nete sugolang.org/x/text0.3.7, il cui codice chiama il parser HTML del primo e una sola funzione di larghezza del secondo.
Ogni tool ha girato con le impostazioni di default. Abbiamo unito i risultati tra identificativi CVE, GHSA, Go e PyPA, usando gli alias di ogni tool e quelli di OSV, così che una vulnerabilità segnalata con due nomi conti una volta sola.
| Tool | Versione | Vulnerabilità distinte | Pacchetti | npm | Python | Maven | Go | Tempo |
|---|---|---|---|---|---|---|---|---|
| OSV-Scanner | 2.7.0 | 109 | 21 | 43 | 24 | 11 | 31 | 3,9 s |
| Trivy | 0.76.1 | 105 | 19 | 43 | 21 | 11 | 30 | 1,0 s |
| Grype | 0.121.0 | 104 | 17 | 43 | 21 | 9 | 31 | 2,1 s |
| npm audit | npm 11.3.0 | 43 | 9 | 43 | 1 s | |||
| pip-audit | 2.10.1 | 21 | 4 | 21 | 1 s |
I tempi di Trivy e di Grype sono quelli di una seconda esecuzione. Alla prima, ciascuno ha passato quasi tutto il tempo a scaricare un database di vulnerabilità, 132 MiB per Trivy, e ha impiegato 19,2 s e 101,7 s. OSV-Scanner interroga osv.dev online per default.
Tre differenze spiegano gli scarti:
- Un
requirements.txtsenza lockfile elenca quattro pacchetti, e niente sotto. OSV-Scanner ha risolto le dipendenze di requests stesso e ha trovato altri tre advisory in idna e certifi. Trivy, Grype e pip-audit hanno letto le quattro righe fissate e si sono fermati lì. - Sul lato Java, log4j-core ha bisogno di log4j-api, e commons-text di commons-lang3. Trivy e OSV-Scanner li hanno risolti entrambi e hanno trovato un advisory in ciascuno; Grype ha letto solo i due pacchetti dichiarati.
- In Go, Trivy non ha elencato CVE-2023-44487, la falla HTTP/2 Rapid Reset, su
golang.org/x/net, mentre Grype e OSV-Scanner sì.
Su npm i quattro tool concordano su tutte e 43, e 13 di queste stanno in sei pacchetti non dichiarati che express si porta dietro: qs, body-parser, path-to-regexp, cookie, send e serve-static. Log4Shell, CVE-2021-44228, è stata trovata da Trivy, Grype e OSV-Scanner, e il JSON di Grype riportava anche il suo punteggio EPSS di 0,99999 e la sua voce nel catalogo CISA Known Exploited Vulnerabilities. I livelli di gravità non sempre coincidono: per gli stessi risultati Trivy ne ha classificate quattro come critiche e Grype cinque.
Trivy vs Grype vs OSV-Scanner: quale usare?
Scegli OSV-Scanner se il tuo codice ha servizi Go o progetti Maven e Python senza lockfile, perché ha risolto quello che gli altri hanno mancato e la sua analisi delle chiamate Go riduce il rumore. Scegli Trivy se vuoi un solo binario per dipendenze, immagini container, IaC e licenze. Scegli Grype se produci già SBOM con Syft o vuoi i dati EPSS e KEV accanto a ogni risultato.
I tre concordano quando l'input è un lockfile, come mostrano i nostri risultati npm, quindi la scelta dipende da cos'altro scansioni e da cosa fai dell'output:
- Trivy va bene per un team che vuole un solo scanner in CI per più strati. Lo stesso comando scansiona un repository, un'immagine o una cartella Terraform, e
--scanners licenseaggiunge le licenze. Il suo database si scarica una volta e resta in cache, ed è per questo che la nostra seconda esecuzione è durata un secondo. - Grype va bene per un team che costruisce già SBOM. Scansioni lo SBOM una volta in fase di build e di nuovo più tardi senza ricostruire nulla, e ordini con i dati EPSS e KEV che porta nel suo JSON.
- OSV-Scanner va bene per un team che tiene alla precisione. Ha risolto le dipendenze transitive di Maven e, nel nostro test, quelle di Python, la sua analisi delle chiamate Go è attiva di default, e il suo comando
fixpropone aggiornamenti per i progetti npm e Maven.
npm audit e pip-audit restano utili come primo controllo dello sviluppatore prima di un commit, perché non richiedono nulla da installare, ma ognuno copre un solo ecosistema.
Un tool SCA ti dice se una vulnerabilità è raggiungibile?
Nel nostro test l'ha fatto solo OSV-Scanner, e solo per Go. La sua analisi delle chiamate, attiva di default, ha segnato 12 delle 31 vulnerabilità Go come chiamate dal nostro codice e 18 come non chiamate; una non è stata analizzabile. La sua tabella di default mostrava 13 vulnerabilità su 31 per il gateway Go, e niente del tutto per golang.org/x/text.
Le chiamate corrispondevano a quello che fa il nostro codice. Il gateway usa il parser HTML di x/net, quindi gli advisory sul parser e sul rendering risultavano chiamati, mentre gli advisory HTTP/2 dello stesso modulo, un percorso di codice che il gateway non tocca mai, no. I tre advisory di x/text riguardano funzioni che il gateway non chiama. OSV-Scanner si appoggia per questo a govulncheck, la libreria di Go stesso, e --all-vulns fa ricomparire i risultati nascosti. La sua analisi delle chiamate in Rust è segnata come sperimentale ed esegue gli script di build delle tue dipendenze.
Per npm, Python e Java nessun tool open source del nostro test è arrivato a tanto, e ogni risultato pesa allo stesso modo, che il tuo codice chiami o no la funzione vulnerabile. È il vuoto che la reachability colma, ed è lo stesso problema di smistamento che descriviamo in perché uno scanner segnala 1.200 vulnerabilità quando solo 12 sono reali. La SCA di CybeDefend lavora a quel livello: segna ogni pacchetto come usato, potenzialmente usato o non usato, così quelli che il tuo codice chiama davvero vengono prima. Come CybeDefend gestisce la SCA mostra lo smistamento.
OWASP Dependency-Check vale ancora la pena?
Dependency-Check 13.0.0 è mantenuto ed è un progetto Flagship dell'OWASP, ma nel nostro test si è fermato al primo aggiornamento del database con "Invalid API Key" e non ha prodotto nulla. Il suo README dice che gli utenti sono incoraggiati "highly" a procurarsi una chiave API NVD, e che senza gli aggiornamenti sono "extremely slow". Metti in conto una chiave e un database in cache prima di adottarlo.
Resta una scelta solida per le build Java e .NET, dove legge i JAR e gli assembly compilati, e i suoi plugin Maven e Gradle girano dentro la build. Due cose gli pesano nel 2026. Associa i pacchetti tramite identificativi CPE della NVD, ed è per questo che la chiave conta così tanto, e OSS Index di Sonatype, un'altra delle sue fonti, richiede credenziali da settembre 2025. Senza credenziali, dice il README, Dependency-Check "will automatically disable the OSS Index analyzer".
Cosa si perdono i tool SCA?
I tool SCA si perdono tre cose: i pacchetti malevoli che non hanno ancora un advisory, le vulnerabilità nel codice copiato senza un package manager, e tutto quello che nessun lockfile o manifest descrive. Inoltre segnalano solo problemi noti, quindi un pacchetto pubblicato ieri con una backdoor risulta pulito finché qualcuno non apre un advisory.
Gli agenti di codice aggiungono un quarto vuoto, che riguarda il momento. Claude Code, Cursor o Codex possono aggiungere una dipendenza a metà di un task, e la scansione in CI parte quando l'agente è già passato ad altro, a volte con la pull request già aperta. Un agente che può leggere i risultati del progetto mentre lavora può scegliere la versione corretta fin dall'inizio, ed è quello che descriviamo in dare agli agenti di codice l'accesso diretto a ogni risultato. VibeDefend passa all'agente, tramite MCP e mentre scrive, i risultati sulle dipendenze del progetto, che si tratti di Claude Code, Cursor, Codex, Devin Desktop o GitHub Copilot, così l'agente può passare alla versione corretta nella stessa sessione. Come funziona VibeDefend mostra il ciclo.
Tra una scansione e l'altra: monitorare le nuove CVE con OpenCVE
Una scansione SCA è una fotografia. Elenca le vulnerabilità note delle tue dipendenze nel giorno in cui gira, e una CVE pubblicata la mattina dopo su un pacchetto che distribuisci resta invisibile fino alla scansione successiva, a meno che una piattaforma come Dependency-Track non ricontrolli gli SBOM che vi hai salvato. Inoltre la SCA vede solo quello che costruisci, e nessun lockfile elenca l'appliance VPN o il server di database che il tuo team fa girare accanto al codice.
Questo monitoraggio è il mestiere di OpenCVE. Ti abboni ai vendor e ai prodotti che ti interessano, come Fortinet o WordPress, e OpenCVE ti avvisa via email, Slack o webhook non appena una CVE che li riguarda viene pubblicata o aggiornata. Nessun agente da installare, niente da scansionare. Attinge a MITRE, NVD, CISA KEV, Red Hat e Vulnrichment, tra le altre fonti, e mette fianco a fianco CVSS, EPSS e KEV di ogni CVE, così distingui una falla che gli attaccanti sfruttano già da una che ha solo un punteggio alto. Funziona come servizio cloud con un piano gratuito, oppure self-hosted con la sua edizione Community, il cui codice è su GitHub sotto Business Source License.
OpenCVE non è uno scanner SCA, perché non legge nessun lockfile e non scansiona nessun repository, ed è proprio per questo che i due si completano: il tuo tool SCA ti dice quali pacchetti usi, e OpenCVE ti avvisa il giorno in cui una nuova CVE colpisce uno dei prodotti che segui.
Come si esegue la SCA in CI tenendo una sola lista?
Esegui lo scanner a ogni pull request sui lockfile, genera SARIF per la piattaforma del codice e uno SBOM per lo storico, e fai fallire la build solo sulle vulnerabilità critiche o alte che hanno una correzione. Conserva lo SBOM di ogni release, perché un nuovo advisory riguarda spesso una versione che hai rilasciato mesi fa.
Una configurazione minima con i tool del nostro test:
# A ogni pull request: lockfile, SARIF per il code scanning
osv-scanner scan source -r --format sarif --output-file osv.sarif .
trivy fs --scanners vuln --severity CRITICAL,HIGH --ignore-unfixed --exit-code 1 .
# A ogni release: conserva lo SBOM e riscansionalo più tardi
trivy fs --format cyclonedx --output sbom.cdx.json .
grype sbom:sbom.cdx.json
Dependency-Track prende il file CycloneDX e continua a sorvegliare i componenti di ogni versione di ogni applicazione che contiene, il che risponde alla domanda che fa l'auditor: quale release conteneva la versione vulnerabile, e quando è stata corretta. Per un team che prepara SOC 2 o ISO 27001, questo storico conta più della scansione stessa.
Un secondo scanner aggiunge risultati e duplicati allo stesso tempo. Il nostro test ha prodotto 451 voci in cinque file JSON con cinque schemi diversi per 109 vulnerabilità distinte, lo stesso problema di unione che abbiamo incontrato con sei scanner di secret open source sullo stesso repository pieno di segreti finti. CybeDefend Open Source nasce per questo passaggio. Esegue gli scanner che scegli, qualsiasi tool che scriva SARIF, e mette quello che trovano in una sola coda deduplicata, gratis e sui tuoi server. Arriva a breve, e la lista d'attesa è aperta.
Domande frequenti
Qual è il miglior tool SCA open source nel 2026?
Nel nostro test del 5 novembre 2026, OSV-Scanner 2.7.0 ha trovato tutte le 109 vulnerabilità distinte di un repository con dipendenze npm, Python, Maven e Go datate, Trivy 0.76.1 ne ha trovate 105 e Grype 0.121.0 104. OSV-Scanner ha risolto più dipendenze transitive; Trivy copre più strati con un solo binario.
Trivy fa anche SCA?
Sì. Trivy cerca nei lockfile e nei manifest le vulnerabilità note dei pacchetti open source, che è proprio la software composition analysis, e scansiona anche immagini container, codice di infrastruttura, secret e licenze. È sotto Apache-2.0 ed è mantenuto da Aqua Security. Nel nostro test ha trovato 105 vulnerabilità su 109 e ha risolto le dipendenze transitive Maven.
Che differenza c'è tra Trivy e Grype?
Sono due scanner sotto Apache-2.0 che leggono repository, SBOM e immagini container. Trivy scansiona anche IaC, secret e licenze e nel nostro test ha risolto le dipendenze transitive Maven, trovando 105 vulnerabilità. Grype, che parte dagli elenchi di pacchetti di Syft, ne ha trovate 104, ha mancato i pacchetti transitivi Maven, e aggiunge al suo JSON i punteggi EPSS e le voci del catalogo CISA KEV.
Dependency-Check di OWASP funziona senza chiave API NVD?
Il suo README definisce la chiave fortemente consigliata e avverte che senza gli aggiornamenti sono estremamente lenti. Nel nostro test della versione 13.0.0, il 5 novembre 2026, il primo aggiornamento NVD si è fermato con "Invalid API Key" e nessuna scansione è partita. Richiedi una chiave alla NVD e tieni il database in cache tra un'esecuzione di CI e l'altra.
Che differenza c'è tra SCA e SAST?
La SAST legge il codice scritto dal tuo team e cerca pattern vulnerabili, come un'injection. La SCA legge manifest e lockfile e segnala le vulnerabilità pubblicate nei pacchetti open source che usi, compresi quelli che le tue dipendenze si tirano dietro. Un progetto ha bisogno di entrambe: il lockfile del nostro sito elenca 965 pacchetti per 39 dichiarati.
Bastano npm audit e pip-audit?
Sono un buon primo controllo, perché non richiedono nulla da installare e hanno trovato le stesse vulnerabilità npm e Python dei tool più grandi sui pacchetti che leggono. Ognuno copre un solo ecosistema, nessuno dei due scrive SARIF, e pip-audit lanciato su un file requirements senza lockfile controlla solo le righe che contiene.
Cos'è la reachability nella SCA?
La reachability ti dice se il tuo codice chiama la funzione vulnerabile di una dipendenza o si limita a importare il pacchetto. Nel nostro test l'analisi delle chiamate Go di OSV-Scanner ha segnato 18 delle 31 vulnerabilità Go come non chiamate e le ha tolte dalla sua tabella di default. Per npm, Python e Java nessuno dei tool open source che abbiamo eseguito faceva questa distinzione.
Un tool SCA mi avvisa quando esce una nuova CVE?
Non tra una scansione e l'altra. Uno scanner segnala ciò che è noto nel giorno in cui gira, quindi eseguilo in CI a ogni modifica e a intervalli regolari, per esempio ogni giorno, per intercettare gli advisory pubblicati nel frattempo. Per sapere il giorno stesso che una CVE colpisce un prodotto che usi, aggiungi un servizio di monitoraggio delle CVE come OpenCVE, che avvisa via email, Slack o webhook quando viene pubblicata o aggiornata una CVE che riguarda un vendor o un prodotto che segui.