Dipendenze
pip-audit
pip-audit scansiona le dipendenze Python alla ricerca di pacchetti con vulnerabilità note. È realizzato dalla Python Packaging Authority e funziona su ambienti, file requirements e file di progetto. Python non ha un equivalente di npm audit integrato in pip, quindi questo è il modo standard per averne uno.
Aggiornato il
Come eseguire pip-audit
pip install pip-audit
pip-audit # the current environment
pip-audit -r requirements.txt # a requirements file
pip-audit . # a local project
pip-audit --fix --dry-run # show what would be upgraded
pip-audit --fix # upgrade vulnerable packages
pip-audit -s osv # use OSV instead of PyPI
pip-audit -f cyclonedx-json # write a CycloneDX SBOM
Per impostazione predefinita cerca i pacchetti tramite l'API JSON di PyPI, che attinge al Python Packaging Advisory Database, e in alternativa può usare OSV. Per l'elenco completo delle opzioni, veda la pagina del progetto.
Faccia attenzione a ciò che sottopone ad audit
Questo sorprende molte persone. L'audit di un file requirements ne risolve le dipendenze, e il progetto avverte che
pip-audit -r INPUT è funzionalmente equivalente a pip install -r INPUT. L'installazione di un
pacchetto può eseguire codice, quindi un pacchetto malevolo potrebbe essere eseguito durante l'audit. La regola del
progetto è semplice: se non lo installerebbe con pip install, non lo controlli con pip audit.
Questo significa anche che il controllo non può proteggerLa da un pacchetto ancora senza advisory, come un nuovo pacchetto di typosquatting o di slopsquatting.
Eseguire pip-audit in CI
Esiste una GitHub Action ufficiale, pypa/gh-action-pip-audit, oppure può eseguire il comando da sé. Termina con
un codice diverso da zero quando trova una vulnerabilità, quindi un nuovo advisory può far fallire una build senza alcuna
modifica al codice.
- run: pip install -r requirements.txt pip-audit
- run: pip-audit
Sottoponga ad audit lo stesso insieme di dipendenze che distribuisce. I requirements con versioni esatte e hash Le danno un risultato stabile. Per capire come si inserisce tra gli altri controlli, veda dove eseguire le scansioni SCA.
Che cosa non copre pip-audit
- Il Suo codice. Analizza gli alberi delle dipendenze, non il codice sorgente. Per questo, veda SAST vs SCA.
- Le librerie native. Le wheel Python spesso includono librerie C, e il progetto dichiara di non rilevare vulnerabilità transitive nelle librerie condivise non Python.
- Tutto il resto della build. La Sua immagine base, i pacchetti di sistema e le action CI sono fuori dal suo campo visivo.
- I nuovi pacchetti malevoli. Si basa sugli advisory noti.
- La build distribuita. La risoluzione in Python varia con l'ambiente, quindi un audit su un'altra macchina può vedere versioni diverse da quelle della release. Senza un lockfile, può variare anche l'ordine di risoluzione.
pip-audit e altri scanner Python
| Strumento | Ideale per | Nota |
|---|---|---|
| pip-audit | Dipendenze Python, gratuitamente | Solo Python |
| Trivy, Grype | Pacchetti Python all'interno di un'immagine container | Coprono anche i pacchetti del sistema operativo |
| Strumenti SCA commerciali | Policy e workflow su molti linguaggi e team | Veda i migliori strumenti SCA |
pip-audit e CRACI
pip-audit è un controllo sensato sulle pull request. CRACI lavora dall'altro lato: come Suo runner GitHub Actions, registra ogni pacchetto che un job ha scaricato da PyPI e da qualsiasi altra fonte, a ogni profondità dell'albero, in una SBOM della build che ha prodotto la release. Poi continua a controllare quella SBOM man mano che vengono pubblicate nuove vulnerabilità, così Lei sa se la release dell'anno scorso è colpita. Veda le SBOM in fase di build e la generazione di SBOM in fase di build.
pip-audit: domande frequenti
Che cos'è pip-audit?
Uno strumento della Python Packaging Authority che scansiona ambienti Python, file requirements e progetti alla ricerca di pacchetti con vulnerabilità note.
Esiste un npm audit per Python?
pip-audit è l'equivalente più vicino, ma è uno strumento separato e non un comando di pip, quindi deve installarlo Lei.
Come si correggono le vulnerabilità trovate da pip-audit?
Esegua pip-audit --fix per aggiornare i pacchetti vulnerabili, oppure prima --fix --dry-run per vedere che cosa cambierebbe. Poi esegua i test e aggiorni i Suoi requirements con le versioni fissate.
È sicuro eseguire pip-audit su codice non attendibile?
No. L'audit di un file requirements è funzionalmente equivalente alla sua installazione, e l'installazione può eseguire codice. Se non installerebbe un pacchetto, non lo sottoponga ad audit.
pip-audit può generare una SBOM?
Sì. Può scrivere CycloneDX in JSON o XML. La SBOM descrive le dipendenze Python che ha risolto, non il resto della Sua build.
Quale database di vulnerabilità usa pip-audit?
Per impostazione predefinita l'API JSON di PyPI, che attinge al Python Packaging Advisory Database. Può anche usare OSV.
Veda che cosa ha scaricato la Sua build Python
Esegua un workflow GitHub Actions su CRACI e ottenga una SBOM di ogni pacchetto che il job ha effettivamente scaricato.
Prenota una demo