Herramienta para auditar los paquetes de Phython

Publicado el 11 diciembre 2021 por Daniel Rodríguez @analyticslane

A principios de este mes se ha publicado en PyPi una nueva herramienta ( pip-audit) para auditar los paquetes de Python en búsqueda de vulnerabilidades conocidas. Un proyecto que se ha desarrollado por Trail of Bits con el apoyo de Google. Una buena noticia después de que se hubiese publicado recientemente la existencia de varios paquetes con código maliciosos en PyPI [ junio 2021, agosto 2021, noviembre 2021].

Para identificar las vulnerabilidades la herramienta pip-audit accede a la base de datos de PyPI y el servicio OSV. Lo que le permite estar al día de todas las vulnerabilidades conocidas. Pudiendo auditar tanto entornos locales como archivos de requisitos.

Instalación de pip-audit y uso básico.

El proceso para instalar pip-audit en nuestros sistemas es habitual con los paquetes de PyPI. Solamente es necesario disponer de una versión de Phython 3.6 o posterior y ejecutar el siguiente comando

pip install pip-audit

Una vez hecho esto se podrá auditar los paquetes instalados en el sistema mediante el comando

pip-audit

Resultados de la autoría

Una vez finalizado el proceso de auditoría, el cual se puede demorar dependiendo de los paquetes instalados en la instalación de Python, este devolverá el número de vulnerabilidades encontradas y los paquetes en los que se ha encontrado. Puede ser mucho mayor el número de debilidades que el de paquetes debido a que grandes paquetes pueden contener varias. Además de lo anterior, también devuelve una lista con el nombre de los paquetes, la versión instalada, el identificador de la vulnerabilidad y, en el caso de que se hubiese solucionado el problema, la versión o versiones posteriores en las que ya no existe esta.

Actualización de los paquetes

Una vez identificados los paquetes con vulnerabilidades, salvo que existan incompatibilidades entre nuestro código u otros paquetes con las nuevas versiones, lo aconsejable será actualizar estos para evitar problemas. Para ello será necesario ejecutar pip install seguido del nombre del paquete con la opción --upgrade. Por ejemplo, para actualizar notebook será necesario escribir en la terminal

pip install notebook --upgrade

Lo que actualizará el paquete a la última versión disponible en PyPI. Aunque, si se desea instalar una versión en concreto del paquete también se puede hacer indicando esta de forma explícita

pip install 'notebook==6.1.5' --force-reinstall