Riippuvuudet
pip-audit
pip-audit skannaa Python-riippuvuuksista paketit, joissa on tunnettuja haavoittuvuuksia. Se on Python Packaging Authorityn työkalu, ja se toimii ympäristöille, requirements-tiedostoille ja projektitiedostoille. Pipiin ei ole sisäänrakennettu npm auditin vastinetta, joten tämä on vakiintunut tapa saada sellainen.
Päivitetty
Näin ajat pip-auditin
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
Oletuksena se hakee paketit PyPI:n JSON-API:n kautta, joka perustuu Python Packaging Advisory Databaseen, ja se voi käyttää myös OSV:tä. Kaikki asetukset löydät projektin sivulta.
Mieti tarkkaan, mitä auditoit
Tämä yllättää monet. Requirements-tiedoston auditointi ratkaisee sen riippuvuudet, ja projekti varoittaa, että
pip-audit -r INPUT vastaa toiminnaltaan komentoa pip install -r INPUT. Paketin asennus
voi ajaa koodia, joten haitallinen paketti voi käynnistyä auditoinnin aikana. Projektin oma sääntö on yksinkertainen: jos et
ajaisi sille pip install, älä aja sille pip audit.
Tämä tarkoittaa myös, ettei tarkistus suojaa paketilta, jolle ei vielä ole tietoturvatiedotetta, kuten uudelta typosquat- tai slopsquatting-paketilta.
pip-auditin ajaminen CI:ssä
Tarjolla on virallinen GitHub Action, pypa/gh-action-pip-audit, tai voit ajaa komennon itse. Se
päättyy nollasta poikkeavaan paluukoodiin, kun se löytää haavoittuvuuden, joten uusi tietoturvatiedote voi kaataa buildin ilman koodimuutosta.
- run: pip install -r requirements.txt pip-audit
- run: pip-audit
Auditoi sama riippuvuusjoukko, jonka toimitat. Tarkat versiot ja tiivisteet sisältävät requirements-tiedostot antavat vakaan tuloksen. Miten tämä sopii yhteen muiden tarkistusten kanssa, kerrotaan sivulla missä SCA-skannaukset kannattaa ajaa.
Mitä pip-audit ei kata
- Oma koodisi. Se analysoi riippuvuuspuita, ei lähdekoodia. Siihen katso SAST vs. SCA.
- Natiivikirjastot. Pythonin wheel-paketit sisältävät usein C-kirjastoja, ja projektin mukaan se ei tunnista transitiivisia haavoittuvuuksia muissa kuin Pythonin jaetuissa kirjastoissa.
- Kaikki muu buildissa. Peruskuva, järjestelmäpaketit ja CI-actionit jäävät sen näkökentän ulkopuolelle.
- Uudet haitalliset paketit. Se vertaa tunnettuihin tietoturvatiedotteisiin.
- Toimitettu buildi. Pythonin riippuvuuksien ratkaisu vaihtelee ympäristön mukaan, joten toisella koneella tehty auditointi voi nähdä eri versiot kuin julkaisu. Ilman lukitustiedostoa (lockfile) myös ratkaisujärjestys voi vaihdella.
pip-audit vs. muut Python-skannerit
| Työkalu | Sopii | Huomio |
|---|---|---|
| pip-audit | Python-riippuvuuksiin, maksutta | Vain Python |
| Trivy, Grype | Konttikuvan Python-paketteihin | Kattavat myös käyttöjärjestelmän paketit |
| Kaupalliset SCA-työkalut | Käytäntöihin ja työnkulkuihin monessa kielessä ja tiimissä | Katso parhaat SCA-työkalut |
pip-audit ja CRACI
pip-audit on järkevä tarkistus pull requesteissa. CRACI toimii toiselta puolelta: GitHub Actions -runnerinasi se tallentaa jokaisen paketin, jonka jobi haki PyPI:stä ja kaikista muista lähteistä, puun joka tasolla, julkaisun tuottaneen buildin SBOM:iin. Sen jälkeen se tarkistaa SBOM:ia jatkuvasti uusien haavoittuvuuksien julkaisun myötä, joten tiedät, koskeeko haavoittuvuus viime vuoden julkaisua. Katso buildin aikana tallennetut SBOM:t ja SBOM-generointi buildin aikana.
pip-audit: usein kysytyt kysymykset
Mikä pip-audit on?
Python Packaging Authorityn työkalu, joka skannaa Python-ympäristöt, requirements-tiedostot ja projektit paketeista, joissa on tunnettuja haavoittuvuuksia.
Onko Pythonille olemassa npm auditin kaltaista työkalua?
pip-audit on lähin vastine, mutta se on erillinen työkalu eikä pipin komento, joten asennat sen itse.
Miten pip-auditin löytämät haavoittuvuudet korjataan?
Aja pip-audit --fix päivittääksesi haavoittuvat paketit, tai ensin --fix --dry-run nähdäksesi, mitä muuttuisi. Aja sitten testisi ja päivitä lukitut requirements-versiosi.
Onko pip-auditia turvallista ajaa epäluotettavaan koodiin?
Ei. Requirements-tiedoston auditointi vastaa toiminnaltaan sen asentamista, ja asennus voi ajaa koodia. Jos et asentaisi pakettia, älä auditoi sitä.
Voiko pip-audit generoida SBOM:n?
Kyllä. Se voi kirjoittaa CycloneDX:ää JSON- tai XML-muodossa. SBOM kuvaa sen ratkaisemat Python-riippuvuudet, ei muuta buildiasi.
Mitä haavoittuvuustietokantaa pip-audit käyttää?
Oletuksena PyPI:n JSON-API:a, joka perustuu Python Packaging Advisory Databaseen. Se voi käyttää myös OSV:tä.
Näe, mitä Python-buildisi haki
Aja yksi GitHub Actions -työnkulku CRACI:lla ja saat SBOM:n jokaisesta paketista, jonka jobi todella haki.
Varaa demo