Dependencias
pip-audit
pip-audit escanea las dependencias de Python en busca de paquetes con vulnerabilidades conocidas. Procede de la Python Packaging Authority y funciona con entornos, archivos de requisitos y archivos de proyecto. Python no tiene un equivalente de npm audit integrado en pip, así que esta es la forma habitual de conseguirlo.
Actualizado el
Cómo ejecutar 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
De forma predeterminada, consulta los paquetes a través de la API JSON de PyPI, que se nutre de la Python Packaging Advisory Database, y puede usar OSV en su lugar. Consulte la lista completa de opciones en la página del proyecto.
Cuidado con lo que audita
Esto sorprende a muchas personas. Auditar un archivo de requisitos resuelve sus dependencias, y el proyecto advierte de
que pip-audit -r INPUT equivale funcionalmente a pip install -r INPUT. La instalación de
paquetes puede ejecutar código, así que un paquete malicioso podría ejecutarse durante la auditoría. La regla del propio
proyecto es sencilla: si no haría pip install de algo, no haga pip audit de ello.
Esto también significa que la comprobación no puede protegerle de un paquete que aún no tiene aviso, como un paquete nuevo de typosquatting o de slopsquatting.
Ejecutar pip-audit en CI
Existe una GitHub Action oficial, pypa/gh-action-pip-audit, o puede ejecutar el comando usted mismo. Termina
con un código distinto de cero cuando encuentra una vulnerabilidad, así que un aviso nuevo puede hacer fallar un build
sin ningún cambio en el código.
- run: pip install -r requirements.txt pip-audit
- run: pip-audit
Audite el mismo conjunto de dependencias que distribuye. Los requisitos con versiones exactas y hashes le dan un resultado estable. Para ver cómo encaja con otras comprobaciones, consulte dónde ejecutar los escaneos SCA.
Qué no cubre pip-audit
- Su código. Analiza árboles de dependencias, no código fuente. Para eso, consulte SAST frente a SCA.
- Las bibliotecas nativas. Los wheels de Python suelen incluir bibliotecas de C, y el proyecto indica que no detecta vulnerabilidades transitivas en bibliotecas compartidas que no son de Python.
- Todo lo demás del build. Su imagen base, los paquetes del sistema y las actions de CI quedan fuera de su alcance.
- Los paquetes maliciosos nuevos. Coteja avisos conocidos.
- El build que se distribuyó. La resolución en Python varía según el entorno, así que una auditoría en otra máquina puede ver versiones distintas de las de la versión publicada. Sin un lockfile, el orden de resolución también puede variar.
pip-audit frente a otros escáneres de Python
| Herramienta | Indicada para | Nota |
|---|---|---|
| pip-audit | Dependencias de Python, gratis | Solo Python |
| Trivy, Grype | Paquetes de Python dentro de una imagen de contenedor | También cubren paquetes del sistema operativo |
| Herramientas comerciales de SCA | Políticas y flujos de trabajo en muchos lenguajes y equipos | Consulte las mejores herramientas de SCA |
pip-audit y CRACI
pip-audit es una comprobación sensata en los pull requests. CRACI trabaja desde el otro lado: como su runner de GitHub Actions, registra cada paquete que un job descargó de PyPI y de cualquier otra fuente, a cualquier profundidad del árbol, en una SBOM del build que produjo la versión. Después sigue comprobando esa SBOM a medida que se publican nuevas vulnerabilidades, de modo que sabe si la versión del año pasado está afectada. Consulte SBOM durante el build y generación de SBOM durante el build.
pip-audit: preguntas frecuentes
¿Qué es pip-audit?
Una herramienta de la Python Packaging Authority que escanea entornos de Python, archivos de requisitos y proyectos en busca de paquetes con vulnerabilidades conocidas.
¿Existe un npm audit para Python?
pip-audit es el equivalente más cercano, pero es una herramienta independiente y no un comando de pip, así que debe instalarla usted mismo.
¿Cómo se corrigen las vulnerabilidades que encuentra pip-audit?
Ejecute pip-audit --fix para actualizar los paquetes vulnerables, o primero --fix --dry-run para ver qué cambiaría. Después ejecute sus tests y actualice sus requisitos fijados.
¿Es seguro ejecutar pip-audit sobre código que no es de confianza?
No. Auditar un archivo de requisitos equivale funcionalmente a instalarlo, y la instalación puede ejecutar código. Si no instalaría un paquete, no lo audite.
¿Puede pip-audit generar una SBOM?
Sí. Puede escribir CycloneDX en JSON o XML. La SBOM describe las dependencias de Python que resolvió, no el resto de su build.
¿Qué base de datos de vulnerabilidades usa pip-audit?
De forma predeterminada, la API JSON de PyPI, que se nutre de la Python Packaging Advisory Database. También puede usar OSV.
Vea qué incorporó su build de Python
Ejecute un workflow de GitHub Actions en CRACI y obtenga una SBOM de cada paquete que el job descargó realmente.
Reservar una demo