123% de CVE signalées en plus par jour en 2026 par rapport à l'an dernier.

Dépendances

pip-audit

pip-audit analyse les dépendances Python à la recherche de paquets présentant des vulnérabilités connues. Il provient de la Python Packaging Authority et fonctionne sur des environnements, des fichiers requirements et des fichiers de projet. Python ne dispose d'aucun équivalent de npm audit intégré à pip : c'est donc la méthode standard pour en avoir un.

Mis à jour le

Comment exécuter 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

Par défaut, il recherche les paquets via l'API JSON de PyPI, qui s'appuie sur la Python Packaging Advisory Database, et il peut utiliser OSV à la place. Consultez la page du projet pour la liste complète des options.

Faites attention à ce que vous auditez

Ce point surprend beaucoup de monde. Auditer un fichier requirements résout ses dépendances, et le projet avertit que pip-audit -r INPUT équivaut fonctionnellement à pip install -r INPUT. L'installation d'un paquet peut exécuter du code : un paquet malveillant pourrait donc s'exécuter pendant l'audit. La règle du projet lui-même est simple : ce que vous ne soumettriez pas à pip install, ne le soumettez pas à pip audit.

Cela signifie aussi que ce contrôle ne peut pas vous protéger d'un paquet qui n'a pas encore d'avis de sécurité, comme un nouveau typosquat ou un paquet de slopsquatting.

Exécuter pip-audit en CI

Il existe une GitHub Action officielle, pypa/gh-action-pip-audit, ou vous pouvez lancer la commande vous-même. Elle se termine avec un code non nul lorsqu'elle trouve une vulnérabilité : un nouvel avis de sécurité peut donc faire échouer un build sans aucun changement de code.

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

Auditez le même ensemble de dépendances que celui que vous livrez. Des requirements avec des versions exactes et des hashes donnent un résultat stable. Pour voir comment cela s'articule avec les autres contrôles, consultez où exécuter les scans SCA.

Ce que pip-audit ne couvre pas

  • Votre code. Il analyse les arbres de dépendances, pas le code source. Pour cela, voir SAST vs SCA.
  • Les bibliothèques natives. Les wheels Python embarquent souvent des bibliothèques C, et le projet indique qu'il ne détecte pas les vulnérabilités transitives dans les bibliothèques partagées non Python.
  • Tout le reste du build. Votre image de base, les paquets système et les actions CI sont hors de son champ de vision.
  • Les nouveaux paquets malveillants. Il se fonde sur les avis de sécurité connus.
  • Le build qui a été livré. La résolution Python varie selon l'environnement : un audit sur une autre machine peut donc voir des versions différentes de celles de la release. Sans lockfile, l'ordre de résolution peut lui aussi varier.

pip-audit vs autres scanners Python

Outil Idéal pour Remarque
pip-audit Les dépendances Python, gratuitement Python uniquement
Trivy, Grype Les paquets Python dans une image de conteneur Couvrent aussi les paquets du système d'exploitation
Outils SCA commerciaux La politique et le workflow à l'échelle de nombreux langages et équipes Voir les meilleurs outils SCA

pip-audit et CRACI

pip-audit est un contrôle judicieux sur les pull requests. CRACI travaille de l'autre côté : en tant que runner GitHub Actions, il enregistre chaque paquet qu'un job a récupéré depuis PyPI et toute autre source, à tous les niveaux de l'arbre, dans une SBOM du build qui a produit la release. Il continue ensuite de vérifier cette SBOM à mesure que de nouvelles vulnérabilités sont publiées : vous savez donc si la release de l'an dernier est touchée. Voir les SBOM générées au build et la génération de SBOM au build.

pip-audit : questions fréquentes

Qu'est-ce que pip-audit ?

Un outil de la Python Packaging Authority qui analyse les environnements Python, les fichiers requirements et les projets à la recherche de paquets présentant des vulnérabilités connues.

Existe-t-il un npm audit pour Python ?

pip-audit est l'équivalent le plus proche, mais c'est un outil distinct et non une commande pip : vous devez donc l'installer vous-même.

Comment corriger les vulnérabilités trouvées par pip-audit ?

Lancez pip-audit --fix pour mettre à niveau les paquets vulnérables, ou d'abord --fix --dry-run pour voir ce qui changerait. Lancez ensuite vos tests et mettez à jour vos requirements épinglés.

Peut-on exécuter pip-audit sans risque sur du code non fiable ?

Non. Auditer un fichier requirements équivaut fonctionnellement à l'installer, et l'installation peut exécuter du code. N'auditez pas un paquet que vous n'installeriez pas.

pip-audit peut-il générer une SBOM ?

Oui. Il peut écrire du CycloneDX en JSON ou en XML. La SBOM décrit les dépendances Python qu'il a résolues, pas le reste de votre build.

Quelle base de vulnérabilités pip-audit utilise-t-il ?

Par défaut, l'API JSON de PyPI, qui s'appuie sur la Python Packaging Advisory Database. Il peut aussi utiliser OSV.

Voyez ce que votre build Python a récupéré

Exécutez un workflow GitHub Actions sur CRACI et obtenez une SBOM de chaque paquet que le job a réellement récupéré.

Réserver une démo