Descubierto malware en el repositorio PyPI de Python

Národný Bezpečnostný Úrad (NBU), es el nombre de la Autoridad de Seguridad Nacional de Eslovaquia. Un departamento que tiene como misión la protección de la información clasificada, los servicios de cifrado y de firma electrónica. También la detección de ciberamenazas, como la que acaban de encontrar en PyPI (Python Package Indice), un importante repositorio de software comunitario para el lenguaje de programación Python.

Alrededor de una decena de paquetes maliciosos, se han camuflado dentro de un directorio donde los creadores de software pueden registrar sus proyectos (117 173 hasta la fecha), para que otros desarrolladores y usuarios descarguen las aplicaciones y módulos correspondientes.

Software que en Linux podemos instalar mediante el gestor de paquetes pip, independientemente de la distro que estemos usando. Facilidad de uso y disponibilidad de paquetes mas allá de los repositorios oficiales, han contribuido a la popularidad de pip (y por tanto PyPI) en los últimos años .

Puedo que haya sido eso último, lo que ha motivado la creación de un conjunto de módulos ficticios, que imitan en su nombre a los originales y que fueron subidos al repositorio de Python, a principios del pasado mes de junio:

  • acqusition suplanta a acquisition.
  • apidev-coop suplanta a apidev-coop_cms.
  • bzip suplanta a bz2file.
  • crypt suplanta a crypto.
  • django-server suplanta a django-server-guardian-api.
  • pwd suplanta a pwdhash.
  • setup-tools suplanta a setuptools.
  • telnet suplanta a telnetsrvlib.
  • urlib3 suplanta a urllib3.
  • urllib suplanta a urllib3.

Las buenas noticias es que no parecen especialmente dañinos y por lo que se ha visto hasta ahora, se limitan a enviar datos estadísticos a un servidor (nombre y versión del paquete, nombre del equipo y del usuario que autorizó la instalación).

El software estaba diseñado para Python 2.x. Fue su intento de uso en Python 3.x y el análisis de los errores que generaba, lo que ayudó a descubrir su presencia.

Son paquetes que ya han sido retirados de PyPI, pero obviamente no de aquellos equipos que ya los hayan instalado. Para saber si nos han dado gato por liebre y en un descuido hemos instalado el paquete incorrecto podemos ejecutar:

pip list –format=legacy | egrep '^(acqusition|apidev-coop|bzip|crypt|django-server|pwd|setup-tools|telnet|urlib3|urllib)'

En el caso de que aparezca algún resultado, deberemos proceder a eliminar el paquete infectado. Por ejemplo si hemos detectado a urlib3:

pip uninstall urlib3

También podemos obtener la lista de paquetes que tenemos instalados y compararla con la de paquetes fraudulentos:

pip freeze

Claramente el instalar aplicaciones fuera de los repositorios oficiales de nuestra distro conlleva riesgos de seguridad, pero cuando hablamos de trabajar con lenguajes de programación en ocasiones no queda más remedio (y de ahí la popularidad de los Cargo, Bundler, Maven, o el npm de JavaScript que recientemente tuvo problemas similares).

La gente del NBU en su informe, aparte de resaltar que los usuarios tienen que fijarse en el nombre del paquete que instalan, critican la ausencia de firmas criptográficas en pip durante el proceso de instalación.

Así como la falta de control de calidad en los paquetes que se suben al repositorio de PyPI.

Firmar el software está bien y es un primer paso, pero tampoco proporciona seguridad absoluta, a menos que se rodee de otras medidas adicionales. Quizás –y todo esto ya es mi opinión– un sistema que permitiera establecer la popularidad y reputación de los paquetes en PyPI, mediante el voto de los usuarios (al estilo del AUR de Arch Linux), también sería de ayuda.


Via: lamiradadelreplicante.com
Descubierto malware en el repositorio PyPI de Python Descubierto malware en el repositorio PyPI de Python Reviewed by Zion3R on 10:00 Rating: 5