Abhängigkeiten
pip-audit
pip-audit durchsucht Python-Abhängigkeiten nach Paketen mit bekannten Schwachstellen. Es stammt von der Python Packaging Authority und funktioniert mit Umgebungen, Requirements-Dateien und Projektdateien. In pip ist kein Gegenstück zu npm audit eingebaut, deshalb ist dies der Standardweg zu einer solchen Prüfung.
Aktualisiert am
So führen Sie pip-audit aus
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
Standardmäßig schlägt es Pakete über die JSON-API von PyPI nach, die auf der Python Packaging Advisory Database beruht, und es kann stattdessen OSV nutzen. Die vollständige Liste der Optionen finden Sie auf der Projektseite.
Achten Sie darauf, was Sie prüfen
Das überrascht viele. Beim Prüfen einer Requirements-Datei werden ihre Abhängigkeiten aufgelöst, und das Projekt warnt, dass
pip-audit -r INPUT funktional gleichwertig mit pip install -r INPUT ist. Die Installation von Paketen
kann Code ausführen, ein bösartiges Paket könnte also während der Prüfung laufen. Die eigene Regel des Projekts ist einfach: Was Sie nicht mit
pip install installieren würden, sollten Sie auch nicht mit pip audit prüfen.
Das bedeutet auch, dass die Prüfung Sie nicht vor einem Paket schützen kann, zu dem es noch kein Advisory gibt, etwa einem neuen Typosquat oder einem Slopsquatting-Paket.
pip-audit im CI ausführen
Es gibt eine offizielle GitHub Action, pypa/gh-action-pip-audit, oder Sie führen den Befehl selbst aus. Er
beendet sich mit einem Exit-Code ungleich null, wenn er eine Schwachstelle findet, ein neues Advisory kann also einen Build ohne Codeänderung fehlschlagen lassen.
- run: pip install -r requirements.txt pip-audit
- run: pip-audit
Prüfen Sie dieselben Abhängigkeiten, die Sie ausliefern. Requirements mit exakten Versionen und Hashes liefern ein stabiles Ergebnis. Wie sich das mit anderen Prüfungen ergänzt, lesen Sie unter wo SCA-Scans laufen sollten.
Was pip-audit nicht abdeckt
- Ihren Code. Es analysiert Abhängigkeitsbäume, nicht Quellcode. Dazu siehe SAST vs. SCA.
- Native Bibliotheken. Python-Wheels bündeln oft C-Bibliotheken, und laut Projekt erkennt es keine transitiven Schwachstellen in Shared Libraries, die nicht in Python geschrieben sind.
- Alles andere im Build. Ihr Basis-Image, Systempakete und CI-Actions liegen außerhalb seines Blickfelds.
- Neue bösartige Pakete. Es gleicht bekannte Advisories ab.
- Den Build, der ausgeliefert wurde. Die Python-Auflösung hängt von der Umgebung ab, eine Prüfung auf einem anderen Rechner sieht also womöglich andere Versionen als das Release. Ohne Lockfile kann auch die Reihenfolge der Auflösung variieren.
pip-audit und andere Python-Scanner im Vergleich
| Tool | Geeignet für | Hinweis |
|---|---|---|
| pip-audit | Python-Abhängigkeiten, kostenlos | Nur Python |
| Trivy, Grype | Python-Pakete in einem Container-Image | Decken auch Betriebssystempakete ab |
| Kommerzielle SCA-Tools | Policy und Workflows über viele Sprachen und Teams hinweg | Siehe die besten SCA-Tools |
pip-audit und CRACI
pip-audit ist eine sinnvolle Prüfung bei Pull Requests. CRACI arbeitet von der anderen Seite her: Als Ihr GitHub-Actions-Runner zeichnet es jedes Paket, das ein Job von PyPI und aus jeder anderen Quelle geladen hat, auf jeder Ebene des Baums in einer SBOM des Builds auf, der das Release erzeugt hat. Diese SBOM prüft es laufend weiter, sobald neue Schwachstellen veröffentlicht werden, sodass Sie wissen, ob das Release vom letzten Jahr betroffen ist. Siehe Build-Time-SBOMs und SBOM-Generierung im Build.
pip-audit: häufig gestellte Fragen
Was ist pip-audit?
Ein Tool der Python Packaging Authority, das Python-Umgebungen, Requirements-Dateien und Projekte nach Paketen mit bekannten Schwachstellen durchsucht.
Gibt es ein npm audit für Python?
pip-audit kommt dem am nächsten, ist aber ein eigenes Tool und kein pip-Befehl. Sie installieren es also selbst.
Wie beheben Sie Schwachstellen, die pip-audit gefunden hat?
Führen Sie pip-audit --fix aus, um verwundbare Pakete zu aktualisieren, oder zuerst --fix --dry-run, um zu sehen, was sich ändern würde. Führen Sie dann Ihre Tests aus und aktualisieren Sie Ihre gepinnten Requirements.
Ist es sicher, pip-audit auf nicht vertrauenswürdigem Code auszuführen?
Nein. Das Prüfen einer Requirements-Datei ist funktional gleichwertig mit ihrer Installation, und die Installation kann Code ausführen. Was Sie nicht installieren würden, sollten Sie auch nicht prüfen.
Kann pip-audit eine SBOM erzeugen?
Ja. Es kann CycloneDX in JSON oder XML schreiben. Die SBOM beschreibt die Python-Abhängigkeiten, die es aufgelöst hat, nicht den Rest Ihres Builds.
Welche Schwachstellendatenbank nutzt pip-audit?
Standardmäßig die JSON-API von PyPI, die auf der Python Packaging Advisory Database beruht. Es kann auch OSV nutzen.
Sehen Sie, was Ihr Python-Build geladen hat
Lassen Sie einen GitHub-Actions-Workflow auf CRACI laufen und erhalten Sie eine SBOM jedes Pakets, das der Job tatsächlich geladen hat.
Demo buchen