V roce 2026 o 131% více nahlášených CVE denně než loni.

Závislosti

pip-audit

pip-audit prochází závislosti Pythonu a hledá balíčky se známými zranitelnostmi. Pochází od Python Packaging Authority a pracuje s prostředími, soubory requirements i soubory projektu. Python nemá v pipu vestavěný ekvivalent npm audit, takže jde o standardní způsob, jak takovou kontrolu získat.

Aktualizováno

Jak spustit 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

Ve výchozím nastavení vyhledává balíčky přes JSON API PyPI, které čerpá z Python Packaging Advisory Database, a místo něj může používat OSV. Úplný seznam voleb najdete na stránce projektu.

Dejte si pozor, co auditujete

Tohle překvapí mnoho lidí. Audit souboru requirements vyřeší jeho závislosti a projekt upozorňuje, že pip-audit -r INPUT je funkčně ekvivalentní s pip install -r INPUT. Instalace balíčku může spustit kód, takže škodlivý balíček se může spustit už během auditu. Vlastní pravidlo projektu je jednoduché: co byste neinstalovali přes pip install, to nekontrolujte přes pip audit.

Znamená to také, že kontrola vás neochrání před balíčkem, ke kterému zatím neexistuje bezpečnostní upozornění, například před novým balíčkem typu typosquat nebo slopsquatting.

pip-audit v CI

Existuje oficiální GitHub Action pypa/gh-action-pip-audit, nebo můžete příkaz spustit sami. Když najde zranitelnost, skončí nenulovým návratovým kódem, takže nové bezpečnostní upozornění může shodit build, i když se kód nezměnil.

- run: pip install -r requirements.txt pip-audit
- run: pip-audit

Auditujte stejnou sadu závislostí, kterou dodáváte. Requirements s přesnými verzemi a hashi dávají stabilní výsledek. Jak to zapadá do ostatních kontrol, popisuje stránka kde spouštět skeny SCA.

Co pip-audit nepokrývá

  • Váš kód. Analyzuje stromy závislostí, ne zdrojový kód. K tomu viz SAST vs SCA.
  • Nativní knihovny. Wheely Pythonu často obsahují knihovny v C a projekt uvádí, že nedetekuje tranzitivní zranitelnosti ve sdílených knihovnách, které nejsou v Pythonu.
  • Vše ostatní v buildu. Základní image, systémové balíčky a akce CI jsou mimo jeho dohled.
  • Nové škodlivé balíčky. Porovnává se známými bezpečnostními upozorněními.
  • Build, který byl dodán. Řešení závislostí v Pythonu se liší podle prostředí, takže audit na jiném stroji může vidět jiné verze než vydání. Bez lockfilu se může lišit i pořadí řešení.

pip-audit a jiné skenery pro Python

Nástroj Hodí se pro Poznámka
pip-audit Závislosti Pythonu, zdarma Jen Python
Trivy, Grype Balíčky Pythonu uvnitř image kontejneru Pokrývají i balíčky operačního systému
Komerční nástroje SCA Politiky a workflow napříč mnoha jazyky a týmy Viz nejlepší nástroje SCA

pip-audit a CRACI

pip-audit je rozumná kontrola u pull requestů. CRACI pracuje z druhé strany: jako váš runner GitHub Actions zaznamená každý balíček, který job stáhl z PyPI i z každého jiného zdroje, v jakékoli hloubce stromu, do SBOM buildu, ze kterého vzniklo vydání. Tuto SBOM pak dál kontroluje, jakmile se zveřejní nové zranitelnosti, takže víte, zda se týkají i loňského vydání. Viz SBOM z doby buildu a generování SBOM během buildu.

pip-audit: časté dotazy

Co je pip-audit?

Nástroj od Python Packaging Authority, který v prostředích Pythonu, souborech requirements a projektech hledá balíčky se známými zranitelnostmi.

Existuje npm audit pro Python?

Nejbližším ekvivalentem je pip-audit, ale jde o samostatný nástroj, ne o příkaz pipu, takže ho musíte nainstalovat sami.

Jak opravit zranitelnosti, které pip-audit najde?

Spusťte pip-audit --fix, který zranitelné balíčky aktualizuje, nebo nejprve --fix --dry-run, abyste viděli, co by se změnilo. Pak spusťte testy a aktualizujte své připnuté requirements.

Je bezpečné spouštět pip-audit na nedůvěryhodném kódu?

Ne. Audit souboru requirements je funkčně ekvivalentní s jeho instalací a instalace může spustit kód. Pokud byste balíček neinstalovali, neauditujte ho.

Umí pip-audit vytvořit SBOM?

Ano. Umí zapsat CycloneDX v JSON nebo XML. SBOM popisuje závislosti Pythonu, které vyřešil, ne zbytek vašeho buildu.

Jakou databázi zranitelností pip-audit používá?

Ve výchozím nastavení JSON API PyPI, které čerpá z Python Packaging Advisory Database. Umí používat i OSV.

Zjistěte, co si váš build v Pythonu stáhl

Spusťte jeden workflow GitHub Actions na CRACI a získejte SBOM každého balíčku, který job skutečně stáhl.

Rezervujte si demo