Afhankelijkheden
pip-audit
pip-audit scant Python-afhankelijkheden op pakketten met bekende kwetsbaarheden. Het komt van de Python Packaging Authority en werkt op omgevingen, requirements-bestanden en projectbestanden. Python heeft geen in pip ingebouwde tegenhanger van npm audit, dus dit is de standaardmanier om er een te krijgen.
Bijgewerkt op
Hoe u pip-audit draait
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
Standaard zoekt het pakketten op via de JSON API van PyPI, die put uit de Python Packaging Advisory Database, en het kan in plaats daarvan OSV gebruiken. Zie de projectpagina voor de volledige lijst met opties.
Wees voorzichtig met wat u audit
Dit verrast veel mensen. Bij het auditen van een requirements-bestand worden de afhankelijkheden ervan geresolved, en het project
waarschuwt dat pip-audit -r INPUT functioneel gelijk is aan pip install -r INPUT. Het
installeren van pakketten kan code uitvoeren, dus een kwaadaardig pakket kan tijdens de audit draaien. De eigen regel
van het project is eenvoudig: als u iets niet met pip install zou installeren, gebruik er dan ook geen
pip audit op.
Dit betekent ook dat de controle u niet kan beschermen tegen een pakket dat nog geen advisory heeft, zoals een nieuwe typosquat of een nieuw slopsquatting-pakket.
pip-audit draaien in CI
Er is een officiële GitHub Action, pypa/gh-action-pip-audit, of u draait het commando zelf. Het eindigt met
een andere exitcode dan nul zodra het een kwetsbaarheid vindt, dus een nieuwe advisory kan een build laten mislukken
zonder codewijziging.
- run: pip install -r requirements.txt pip-audit
- run: pip-audit
Audit dezelfde set afhankelijkheden die u levert. Requirements met exacte versies en hashes geven u een stabiel resultaat. Zie voor hoe dit samengaat met andere controles waar u SCA-scans laat draaien.
Wat pip-audit niet dekt
- Uw code. Het analyseert afhankelijkheidsbomen, geen broncode. Zie daarvoor SAST vs SCA.
- Native bibliotheken. Python-wheels bundelen vaak C-bibliotheken, en het project stelt dat het geen transitieve kwetsbaarheden in niet-Python shared libraries detecteert.
- Al het andere in de build. Uw base image, systeempakketten en CI-actions vallen buiten zijn zicht.
- Nieuwe kwaadaardige pakketten. Het matcht op bekende advisories.
- De build die is geleverd. Python-resolutie varieert per omgeving, dus een audit op een andere machine kan andere versies zien dan de release. Zonder lockfile kan ook de volgorde van resolutie variëren.
pip-audit vs andere Python-scanners
| Tool | Geschikt voor | Opmerking |
|---|---|---|
| pip-audit | Python-afhankelijkheden, gratis | Alleen Python |
| Trivy, Grype | Python-pakketten in een containerimage | Dekken ook pakketten van het besturingssysteem |
| Commerciële SCA-tools | Beleid en workflow over veel talen en teams | Zie de beste SCA-tools |
pip-audit en CRACI
pip-audit is een verstandige controle op pull requests. CRACI werkt vanaf de andere kant: als uw GitHub Actions-runner legt het elk pakket dat een job heeft opgehaald van PyPI en elke andere bron, op elk niveau van de boom, vast in een SBOM van de build die de release heeft geproduceerd. Daarna blijft het die SBOM controleren zodra nieuwe kwetsbaarheden worden gepubliceerd, zodat u weet of de release van vorig jaar wordt getroffen. Zie build-time SBOM's en SBOM-generatie tijdens de build.
pip-audit: veelgestelde vragen
Wat is pip-audit?
Een tool van de Python Packaging Authority die Python-omgevingen, requirements-bestanden en projecten scant op pakketten met bekende kwetsbaarheden.
Bestaat er een npm audit voor Python?
pip-audit komt het dichtst in de buurt, maar het is een aparte tool en geen pip-commando, dus u installeert het zelf.
Hoe repareert u kwetsbaarheden die pip-audit vindt?
Draai pip-audit --fix om kwetsbare pakketten te upgraden, of eerst --fix --dry-run om te zien wat er zou veranderen. Draai daarna uw tests en werk uw vastgepinde requirements bij.
Is het veilig om pip-audit op niet-vertrouwde code te draaien?
Nee. Een requirements-bestand auditen is functioneel gelijk aan het installeren ervan, en installeren kan code uitvoeren. Als u een pakket niet zou installeren, audit het dan ook niet.
Kan pip-audit een SBOM genereren?
Ja. Het kan CycloneDX schrijven in JSON of XML. De SBOM beschrijft de Python-afhankelijkheden die het heeft geresolved, niet de rest van uw build.
Welke kwetsbaarheidsdatabase gebruikt pip-audit?
Standaard de JSON API van PyPI, die put uit de Python Packaging Advisory Database. Het kan ook OSV gebruiken.
Zie wat uw Python-build binnenhaalde
Laat één GitHub Actions-workflow op CRACI draaien en krijg een SBOM van elk pakket dat de job daadwerkelijk heeft opgehaald.
Demo boeken