Contenido

Seguridad al instalar paquetes de Python

Qué hay que tener en cuenta al instalar paquetes con pip

Siempre hay que pensar en la seguridad. Especialmente cuando escribes código. Y el doble cuando usas el código de otras personas. Ahorra mucho tiempo y esfuerzo. Pero también puede llevar a problemas, especialmente si no usas al menos el sentido común.

Módulos

Al programar, puedes guardar las clases, objetos y funciones más utilizadas en módulos. Este es el nombre oficial de los archivos con la extensión .py. Convencionalmente, un módulo puede distinguirse de un programa ordinario de Python por el hecho de que el programa está diseñado para ejecutarse, mientras que el módulo está diseñado para almacenar construcciones de uso frecuente e importarlas en otros programas.

Paquetes

Un Paquete en Python es un directorio que contiene otros directorios y módulos, así como archivos especiales. Los paquetes se utilizan para formar un espacio de nombres, que permite utilizar diferentes módulos, unidos por regla general por un tema común.

Repositorio

El repositorio más conocido para estos paquetes es el PyPI o Python Package Index. Puedes encontrar e instalar paquetes sobre casi cualquier tema en PyPI. En 2022, había más de 370.000 paquetes diferentes contenidos allí.

Me preguntaba qué medidas de seguridad toman otros desarrolladores para asegurarse de que no están descargando nada malicioso de PyPI. Después de todo, cualquiera puede subir su paquete allí, y hasta ahora no hay controles de seguridad o medidas preventivas tomadas por el propio PyPi.

Consejos

Algunos consejos útiles sobre este tema:

  1. Si puedes entenderlo, echa un vistazo al código fuente de un paquete antes de instalarlo.
  2. Instala sólo software de desarrolladores con buena reputación. 3. En la página del paquete, mira al menos las estadísticas de GitHub: el número de estrellas y forks. Cuantos más haya, más gente utiliza el paquete y menos probabilidades hay de obtener código maligno.
  3. Lee Python Security doc sobre los paquetes y PyPi.
  4. Presta atención al paquete Safety. Comprueba tus paquetes instalados en busca de vulnerabilidades conocidas.
  5. Usa la lista Insecure Python Packages para identificar vulnerabilidades en los paquetes instalados.

Buenas noticias

A finales de diciembre de 2019, la Python Software Foundation anunció que han recibido una subvención de Facebook y que comenzarán a trabajar en la adición de “características de seguridad avanzadas” al Índice de paquetes de Python.

Entre las características que planean añadir estarán la firma verificable de artefactos criptográficos y la detección automática de descargas maliciosas.

¡Que tu código y tus módulos estén siempre seguros! :)