Mais 123% CVE comunicadas por dia em 2026 do que no ano passado.

Dependências

pip-audit

O pip-audit analisa dependências Python à procura de pacotes com vulnerabilidades conhecidas. Vem da Python Packaging Authority e funciona com ambientes, ficheiros requirements e ficheiros de projeto. O Python não tem um equivalente do npm audit integrado no pip, pelo que esta é a forma habitual de o obter.

Atualizado a

Como executar o 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

Por predefinição, procura os pacotes através da API JSON do PyPI, que se baseia na Python Packaging Advisory Database, e pode usar a OSV em alternativa. Consulte a página do projeto para ver a lista completa de opções.

Tenha cuidado com o que audita

Isto surpreende muita gente. Auditar um ficheiro requirements resolve as suas dependências, e o projeto avisa que pip-audit -r INPUT é funcionalmente equivalente a pip install -r INPUT. A instalação de pacotes pode executar código, pelo que um pacote malicioso pode ser executado durante a auditoria. A regra do próprio projeto é simples: se não faria pip install, não faça pip audit.

Isto significa também que a verificação não o pode proteger de um pacote ainda sem aviso de segurança, como um novo typosquat ou um pacote de slopsquatting.

Executar o pip-audit na CI

Existe uma GitHub Action oficial, pypa/gh-action-pip-audit, ou pode executar o comando diretamente. Termina com um código diferente de zero quando encontra uma vulnerabilidade, pelo que um novo aviso de segurança pode fazer falhar um build sem qualquer alteração de código.

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

Audite o mesmo conjunto de dependências que distribui. Requirements com versões exatas e hashes dão-lhe um resultado estável. Para saber como isto se enquadra com outras verificações, consulte onde executar análises SCA.

O que o pip-audit não cobre

  • O seu código. Analisa árvores de dependências, não código-fonte. Para isso, consulte SAST vs SCA.
  • Bibliotecas nativas. As wheels Python incluem muitas vezes bibliotecas C, e o projeto declara que não deteta vulnerabilidades transitivas em bibliotecas partilhadas que não sejam Python.
  • Tudo o resto no build. A sua imagem base, os pacotes de sistema e as actions de CI estão fora do alcance da ferramenta.
  • Novos pacotes maliciosos. Faz a correspondência com avisos de segurança conhecidos.
  • O build que foi distribuído. A resolução em Python varia com o ambiente, pelo que uma auditoria noutra máquina pode ver versões diferentes das da versão lançada. Sem um lockfile, a ordem de resolução também pode variar.

pip-audit vs outros scanners de Python

Ferramenta Indicada para Nota
pip-audit Dependências Python, gratuitamente Apenas Python
Trivy, Grype Pacotes Python dentro de uma imagem de contentor Cobrem também os pacotes do sistema operativo
Ferramentas comerciais de SCA Políticas e fluxos de trabalho em muitas linguagens e equipas Consulte as melhores ferramentas de SCA

pip-audit e CRACI

O pip-audit é uma verificação sensata nos pull requests. O CRACI atua do outro lado: como seu runner de GitHub Actions, regista cada pacote que um job obteve do PyPI e de qualquer outra fonte, a qualquer profundidade da árvore, numa SBOM do build que produziu a versão. Depois, continua a verificar essa SBOM à medida que são publicadas novas vulnerabilidades, para que saiba se a versão do ano passado é afetada. Consulte SBOM geradas durante o build e geração de SBOM durante o build.

pip-audit: perguntas frequentes

O que é o pip-audit?

Uma ferramenta da Python Packaging Authority que analisa ambientes Python, ficheiros requirements e projetos à procura de pacotes com vulnerabilidades conhecidas.

Existe um npm audit para Python?

O pip-audit é o equivalente mais próximo, mas é uma ferramenta à parte e não um comando do pip, pelo que tem de o instalar.

Como corrigir as vulnerabilidades encontradas pelo pip-audit?

Execute pip-audit --fix para atualizar os pacotes vulneráveis, ou primeiro --fix --dry-run para ver o que mudaria. Depois, execute os seus testes e atualize os seus requirements fixados.

É seguro executar o pip-audit em código não fiável?

Não. Auditar um ficheiro requirements é funcionalmente equivalente a instalá-lo, e a instalação pode executar código. Se não instalaria um pacote, não o audite.

O pip-audit consegue gerar uma SBOM?

Sim. Pode escrever CycloneDX em JSON ou XML. A SBOM descreve as dependências Python que resolveu, não o resto do seu build.

Que base de dados de vulnerabilidades usa o pip-audit?

Por predefinição, a API JSON do PyPI, que se baseia na Python Packaging Advisory Database. Também pode usar a OSV.

Veja o que o seu build Python trouxe

Execute um workflow de GitHub Actions no CRACI e obtenha uma SBOM de cada pacote que o job efetivamente obteve.

Marcar demo