Afhængigheder
pip-audit
pip-audit scanner Python-afhængigheder for pakker med kendte sårbarheder. Det kommer fra Python Packaging Authority og virker på miljøer, requirements-filer og projektfiler. Python har ingen ækvivalent til npm audit indbygget i pip, så dette er standardmåden at få en på.
Opdateret
Sådan kører du 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
Som standard slår det pakker op gennem PyPI's JSON API, som bygger på Python Packaging Advisory Database, og det kan bruge OSV i stedet. Se projektsiden for den fulde liste over muligheder.
Vær forsigtig med, hvad du auditerer
Det overrasker mange. Når du auditerer en requirements-fil, bliver dens afhængigheder resolvet, og projektet advarer om,
at pip-audit -r INPUT funktionelt svarer til pip install -r INPUT. Pakkeinstallation kan køre
kode, så en ondsindet pakke kan køre under auditen. Projektets egen regel er enkel: Hvis du ikke ville køre
pip install på den, så kør heller ikke pip audit på den.
Det betyder også, at tjekket ikke kan beskytte dig mod en pakke uden advisory endnu, for eksempel en ny typosquat eller slopsquatting-pakke.
Kør pip-audit i CI
Der findes en officiel GitHub Action, pypa/gh-action-pip-audit, eller du kan selv køre kommandoen. Den
afslutter med en exitkode, der ikke er nul, når den finder en sårbarhed, så en ny advisory kan få et build til at fejle
uden nogen kodeændring.
- run: pip install -r requirements.txt pip-audit
- run: pip-audit
Auditér det samme sæt afhængigheder, som du leverer. Requirements med præcise versioner og hashes giver dig et stabilt resultat. Se hvor du skal køre SCA-scanninger for, hvordan det passer sammen med andre tjek.
Hvad pip-audit ikke dækker
- Din kode. Det analyserer afhængighedstræer, ikke kildekode. Se i stedet SAST vs. SCA.
- Native biblioteker. Python-wheels indeholder ofte C-biblioteker, og projektet oplyser, at det ikke finder transitive sårbarheder i delte biblioteker, der ikke er Python.
- Alt andet i buildet. Dit base-image, systempakker og CI-actions ligger uden for dets synsfelt.
- Nye ondsindede pakker. Det matcher kendte advisories.
- Det build, der blev leveret. Python-resolution varierer med miljøet, så en audit på en anden maskine kan se andre versioner end releasen. Uden en lockfile kan resolutionsrækkefølgen også variere.
pip-audit vs. andre Python-scannere
| Værktøj | God til | Bemærk |
|---|---|---|
| pip-audit | Python-afhængigheder, gratis | Kun Python |
| Trivy, Grype | Python-pakker i et container-image | Dækker også styresystempakker |
| Kommercielle SCA-værktøjer | Policy og workflow på tværs af mange sprog og teams | Se de bedste SCA-værktøjer |
pip-audit og CRACI
pip-audit er et fornuftigt tjek på pull requests. CRACI arbejder fra den anden side: Som din GitHub Actions-runner registrerer det hver pakke, et job hentede fra PyPI og alle andre kilder, i alle lag af træet, i en SBOM af det build, der producerede releasen. Derefter bliver det ved med at tjekke den SBOM, efterhånden som nye sårbarheder offentliggøres, så du ved, om sidste års release er ramt. Se build-time SBOM'er og SBOM-generering under buildet.
pip-audit: ofte stillede spørgsmål
Hvad er pip-audit?
Et værktøj fra Python Packaging Authority, der scanner Python-miljøer, requirements-filer og projekter for pakker med kendte sårbarheder.
Findes der en npm audit til Python?
pip-audit er det nærmeste alternativ, men det er et separat værktøj og ikke en pip-kommando, så du skal selv installere det.
Hvordan retter du sårbarheder fundet af pip-audit?
Kør pip-audit --fix for at opgradere sårbare pakker, eller --fix --dry-run først for at se, hvad der ville ændre sig. Kør derefter dine tests, og opdater dine fastlåste requirements.
Er det sikkert at køre pip-audit på kode, du ikke stoler på?
Nej. At auditere en requirements-fil svarer funktionelt til at installere den, og installation kan køre kode. Hvis du ikke ville installere en pakke, så lad være med at auditere den.
Kan pip-audit generere en SBOM?
Ja. Det kan skrive CycloneDX i JSON eller XML. SBOM'en beskriver de Python-afhængigheder, det har resolvet, ikke resten af dit build.
Hvilken sårbarhedsdatabase bruger pip-audit?
Som standard PyPI's JSON API, som bygger på Python Packaging Advisory Database. Det kan også bruge OSV.
Se, hvad dit Python-build trak ind
Kør et GitHub Actions-workflow på CRACI, og få en SBOM af hver pakke, jobbet faktisk hentede.
Book en demo