Indice
- Introduzione: la sicurezza parte dalle dipendenze
- Cos’è OSV e perché è importante
- Come funziona OSV dietro le quinte
- Le caratteristiche chiave che fanno la differenza
- A cosa serve davvero OSV? Usi concreti
- Automazione: OSV nella vita reale
- Conclusione: OSV, l’alleato invisibile ma indispensabile
- Domande e risposte su OSV
Introduzione: la sicurezza parte dalle dipendenze
Nel panorama attuale dello sviluppo software, dove le applicazioni sono sempre più modulari e basate su componenti esterni, il controllo delle dipendenze open source è diventato un elemento cruciale per la cyber security. Anche una piccola libreria può nascondere falle in grado di compromettere un’intera infrastruttura.
Per affrontare questa sfida, Google ha sviluppato OSV (Open Source Vulnerabilities), un database open sourceprogettato per aiutare gli sviluppatori a individuare tempestivamente vulnerabilità all’interno dei pacchetti software che utilizzano.
Cos’è OSV e perché è importante
Il database OSV è una piattaforma centralizzata che raccoglie e distribuisce informazioni sulle vulnerabilità che affliggono librerie open source. A differenza dei classici archivi di CVE, OSV è progettato per essere facilmente consultabile e integrabile nei processi di sviluppo, grazie a un’API pubblica, un formato standardizzato (basato su JSON) e strumenti a riga di comando.
Il suo punto di forza? Parlare il linguaggio degli sviluppatori, indicando non solo il problema, ma quali versioni sono affette, quali sono sicure e dove trovare le patch
Come funziona OSV dietro le quinte
Il funzionamento di OSV si basa su un mix di analisi automatizzate e segnalazioni manuali. I manutentori dei pacchetti possono inviare direttamente informazioni sulle vulnerabilità, mentre sistemi automatici analizzano i commit nei repository (es. GitHub) per intercettare fix e patch sospette.
Ogni vulnerabilità viene schematizzata in un file JSON secondo lo standard OSV schema, che contiene:
- Un identificativo univoco (es.
PYSEC-2022-123
) - Le versioni vulnerabili e quelle corrette
- La descrizione tecnica del problema
- Collegamenti a CVE, advisory e commit di correzione
Esempio di struttura OSV (semplificata)
{
"id": "PYSEC-2022-123",
"package": {
"name": "flask",
"ecosystem": "PyPI"
},
"affected": [
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{ "introduced": "0" },
{ "fixed": "2.0.2" }
]
}
],
"versions": ["2.0.0", "2.0.1"]
}
],
"summary": "Problema nella gestione delle sessioni",
"references": [
{ "type": "CVE", "url": "https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-0001" },
{ "type": "FIX", "url": "https://github.com/pallets/flask/commit/abc123" }
]
}
Le caratteristiche chiave che fanno la differenza
Il successo del database OSV è dovuto a una serie di funzionalità pensate per la praticità:
- Integrazione automatica con GitHub, GitLab e altri repository: OSV monitora costantemente le modifiche per intercettare vulnerabilità.
- Formato dati aperto, leggibile e compatibile con altri strumenti di sicurezza.
- Supporto per più ecosistemi, tra cui Python (PyPI), JavaScript (npm), Go, Rust, Debian e Linux.
- API pubblica, utile per query in tempo reale e automazione.
- Approccio developer-first, che permette di capire immediatamente quali versioni sono a rischio.
A cosa serve davvero OSV? Usi concreti
L’utilità concreta di OSV emerge soprattutto nei flussi di sviluppo quotidiani. Immagina di lavorare a un progetto Node.js con decine di dipendenze: come sapere se una di queste è vulnerabile?
Con OSV puoi:
- Verificare se una libreria che stai utilizzando è vulnerabile
- Automatizzare controlli nei processi CI/CD
- Ricevere avvisi quando vengono pubblicate nuove vulnerabilità
Esempio: analisi di una libreria npm
curl -X POST https://api.osv.dev/v1/query \
-H "Content-Type: application/json" \
-d '{
"package": {
"name": "express",
"ecosystem": "npm"
},
"version": "4.17.1"
}'
Risultato: un JSON con eventuali vulnerabilità, patch e link alle fonti ufficiali.
Automazione: OSV nella vita reale
1. Scansione locale con osv-scanner
Installa lo scanner ufficiale:
curl -L https://github.com/google/osv-scanner/releases/latest/download/osv-scanner-linux-amd64 -o osv-scanner
chmod +x osv-scanner
Esegui una scansione di un progetto Python:
./osv-scanner --lockfile=requirements.txt
Il tool restituirà un report con tutte le vulnerabilità rilevate, indicando le versioni sicure consigliate.
2. Controllo automatico notturno (Python + API)
import requests, json
def check_vulnerability(pkg, ecosystem, version):
res = requests.post(
"https://api.osv.dev/v1/query",
headers={"Content-Type": "application/json"},
data=json.dumps({
"package": {"name": pkg, "ecosystem": ecosystem},
"version": version
})
)
vulns = res.json().get("vulns", [])
if vulns:
print(f"{pkg}@{version} è vulnerabile:")
for v in vulns:
print(f"- {v['id']}: {v.get('summary', '')}")
else:
print(f"{pkg}@{version} è sicuro.")
check_vulnerability("express", "npm", "4.17.1")
3. Integrazione in CI/CD (GitHub Actions)
jobs:
scan-osv:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: OSV Scanner
run: |
curl -L https://github.com/google/osv-scanner/releases/latest/download/osv-scanner-linux-amd64 -o osv-scanner
chmod +x osv-scanner
./osv-scanner --lockfile=requirements.txt
Questa configurazione permette di bloccare automaticamente una build se viene rilevata una dipendenza vulnerabile.
Conclusione: OSV, l’alleato invisibile ma indispensabile
Il database OSV si integra perfettamente in qualsiasi progetto moderno, rendendo la sicurezza del software open source un processo continuo, automatizzato e trasparente. Non è solo uno strumento utile: è una risorsa fondamentale per proteggere il software prima ancora che venga distribuito.
Se non lo hai ancora integrato nel tuo flusso di lavoro, è il momento di farlo.
Domande e risposte su OSV
- OSV è gratuito?
Sì, è completamente open source e accessibile a tutti. - Quali ecosistemi supporta?
Python, JavaScript, Go, Rust, Debian, Linux Kernel e altri. - Posso usarlo in CI/CD?
Sì, è pensato per essere integrato nei flussi di sviluppo. - È aggiornato in tempo reale?
L’API fornisce dati sempre aggiornati sulle vulnerabilità. - Devo registrarmi per usare OSV?
No, l’API è pubblica e libera. - Esiste un’interfaccia grafica?
Sì, puoi consultare https://osv.dev per ricerche manuali. - Posso contribuire con nuovi dati?
Sì, tramite GitHub puoi proporre nuove vulnerabilità. - È più utile di CVE?
Non lo sostituisce, ma lo completa, offrendo dati strutturati. - Esistono scanner compatibili?
Sì:osv-scanner
,Trivy
,Snyk
,Grype
e altri. - Funziona solo con librerie famose?
No, include anche progetti meno noti purché open source.
Hai già provato OSV? Raccontaci come lo usi o lascia una domanda nel form qui sotto!
Donato Paolino
Ciao, sono Donato Paolino. Benvenuto nel mio Blog. Sono laureato in Giurisprudenza e mi occupo di consulenza in Digital Marketing.
Le mie passioni sono la musica e la scrittura.
In questo mio blog voglio semplicemente scrivere pensieri, esperienze personali e consigli che possano essere utili per i miei lettori.
Se vuoi contattarmi scrivimi a mail@donatopaolino.com o aggiungimi sui social.