O 123% więcej zgłoszonych CVE dziennie w 2026 niż przed rokiem.

Zależności

pip-audit

pip-audit skanuje zależności Pythona w poszukiwaniu pakietów ze znanymi podatnościami. Pochodzi od Python Packaging Authority i działa na środowiskach, plikach requirements i plikach projektu. Python nie ma odpowiednika npm audit wbudowanego w pip, więc to standardowy sposób, aby taką kontrolę uzyskać.

Zaktualizowano

Jak uruchomić 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

Domyślnie wyszukuje pakiety przez JSON API PyPI, które korzysta z Python Packaging Advisory Database, a zamiast niego może używać OSV. Pełną listę opcji zawiera strona projektu.

Uwaga na to, co poddaje się audytowi

To zaskakuje wiele osób. Audyt pliku requirements rozwiązuje jego zależności, a projekt ostrzega, że pip-audit -r INPUT jest funkcjonalnie równoważne pip install -r INPUT. Instalacja pakietu może uruchamiać kod, więc złośliwy pakiet mógłby się uruchomić podczas audytu. Zasada samego projektu jest prosta: jeśli nie wykonaliby Państwo na czymś pip install, nie należy wykonywać na tym pip audit.

To oznacza też, że ta kontrola nie ochroni Państwa przed pakietem, który nie ma jeszcze biuletynu, takim jak nowy typosquat lub pakiet ze slopsquattingu.

Uruchamianie pip-audit w CI

Istnieje oficjalna GitHub Action, pypa/gh-action-pip-audit, ale polecenie można też uruchomić samodzielnie. Kończy się kodem niezerowym, gdy znajdzie podatność, więc nowy biuletyn może spowodować niepowodzenie buildu bez zmiany w kodzie.

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

Należy audytować ten sam zestaw zależności, który jest dostarczany. Requirements z dokładnymi wersjami i hashami dają stabilny wynik. Miejsce tej kontroli wśród innych opisuje strona gdzie uruchamiać skany SCA.

Czego pip-audit nie obejmuje

  • Państwa kodu. Analizuje drzewa zależności, a nie kod źródłowy. W tym celu zob. SAST vs SCA.
  • Bibliotek natywnych. Pakiety wheel Pythona często zawierają biblioteki C, a projekt podaje, że nie wykrywa podatności przechodnich w bibliotekach współdzielonych spoza Pythona.
  • Wszystkiego innego w buildzie. Państwa obraz bazowy, pakiety systemowe i akcje CI są poza jego polem widzenia.
  • Nowych złośliwych pakietów. Dopasowuje znane biuletyny.
  • Buildu, który został dostarczony. Rozwiązywanie zależności w Pythonie zależy od środowiska, więc audyt na innej maszynie może widzieć inne wersje niż wydanie. Bez lockfile kolejność rozwiązywania również może się różnić.

pip-audit a inne skanery Pythona

Narzędzie Dobre do Uwaga
pip-audit Zależności Pythona, bezpłatnie Tylko Python
Trivy, Grype Pakiety Pythona wewnątrz obrazu kontenera Obejmują też pakiety systemu operacyjnego
Komercyjne narzędzia SCA Polityki i workflow w wielu językach i zespołach Zob. najlepsze narzędzia SCA

pip-audit i CRACI

pip-audit to rozsądna kontrola przy pull requestach. CRACI działa z drugiej strony: jako Państwa runner GitHub Actions rejestruje każdy pakiet pobrany przez zadanie z PyPI i z każdego innego źródła, na każdym poziomie drzewa, w SBOM buildu, który wytworzył wydanie. Następnie dalej sprawdza ten SBOM w miarę publikowania nowych podatności, dzięki czemu wiedzą Państwo, czy dotyczą one zeszłorocznego wydania. Zob. SBOM-y z czasu buildu i generowanie SBOM w trakcie buildu.

pip-audit: najczęściej zadawane pytania

Czym jest pip-audit?

To narzędzie od Python Packaging Authority, które skanuje środowiska Pythona, pliki requirements i projekty w poszukiwaniu pakietów ze znanymi podatnościami.

Czy istnieje npm audit dla Pythona?

Najbliższym odpowiednikiem jest pip-audit, ale to osobne narzędzie, a nie polecenie pip, więc trzeba je zainstalować samodzielnie.

Jak naprawić podatności znalezione przez pip-audit?

Uruchomić pip-audit --fix, aby zaktualizować podatne pakiety, lub najpierw --fix --dry-run, aby zobaczyć, co się zmieni. Następnie uruchomić testy i zaktualizować przypięte requirements.

Czy uruchamianie pip-audit na niezaufanym kodzie jest bezpieczne?

Nie. Audyt pliku requirements jest funkcjonalnie równoważny jego instalacji, a instalacja może uruchamiać kod. Jeśli nie zainstalowaliby Państwo pakietu, nie należy go audytować.

Czy pip-audit potrafi wygenerować SBOM?

Tak. Może zapisać CycloneDX w formacie JSON lub XML. SBOM opisuje rozwiązane przez niego zależności Pythona, a nie resztę Państwa buildu.

Z jakiej bazy podatności korzysta pip-audit?

Domyślnie z JSON API PyPI, które korzysta z Python Packaging Advisory Database. Może też używać OSV.

Co pobrał Państwa build w Pythonie

Proszę uruchomić jeden workflow GitHub Actions na CRACI i otrzymać SBOM każdego pakietu, który zadanie faktycznie pobrało.

Umów demo