La avalancha de paquetes maliciosos en PyPI podría ser una señal de nuevos ataques por venir
Durante el fin de semana, un atacante cargó miles de paquetes de Python maliciosos en el repositorio de software público PyPI (Python Package Index). Cuando se ejecutan en un sistema Windows, estos paquetes descargan e instalan un programa troyano alojado en Dropbox.
La inundación de repositorios de paquetes públicos con paquetes maliciosos no es del todo nueva. El año pasado, los investigadores descubrieron un grupo de 186 paquetes desde la misma cuenta en el repositorio JavaScript npm diseñado para instalar software de criptominería en sistemas Linux. Sin embargo, según investigadores en Twitter, este nuevo incidente en PyPI fue mucho más grande e involucró a más de 5,000 paquetes, ya que el atacante siguió lanzando nuevos mientras que los mantenedores de PyPI encontraron y eliminaron los ya lanzados. Así que esto podría ser una señal de futuros ataques.
Según la empresa de gestión de la cadena de suministro de software Sonatype, la vio el ataque, esto parece ser más un ataque de rociar y rezar destinado a envenenar los resultados de búsqueda de varios términos en PyPI que un ataque dirigido a los usuarios de paquetes legítimos existentes. Sin embargo, también es plausible que los atacantes estén inundando PyPI con una gran cantidad de paquetes para enterrar algunos «potentes typosquats» en el ruido, le dice a CSO el investigador de Sonatype Ax Sharma. typosquatting es una técnica de ataque común en repositorios públicos en los que los atacantes lanzan paquetes con nombres muy similares a los paquetes legítimos, generalmente con un error tipográfico común o una ligera variación en el nombre que es probable que los desarrolladores se enamoren.
Los nombres de los miles de paquetes cargados hasta ahora parecen generarse aleatoriamente al mezclar términos populares como nombres de empresas como PayPal o Nvidia, pero también prefijos comunes como py- para Python o lib para biblioteca. «La confusión surge en los casos en los que un desarrollador puede ‘conocer’ el nombre de una biblioteca popular, por ejemplo, porque ha leído documentos anteriormente o indicado la reputación de una biblioteca en la industria, pero luego se presentan dos versiones del paquete cuando navega por PyPI. «, explica Sharma. «Por ejemplo, un ‘mydesiredtool’ (real) frente a un ‘py-mydesiredtool’ (tiposquat malicioso), este último se anuncia implícitamente como la versión específica de Python».
Otra técnica de ataque para la que tal inundación podría ser una tapadera es confusión de dependencia. Implica que los atacantes registren paquetes maliciosos en repositorios públicos usando los nombres de los paquetes que descubren de otras fuentes que las organizaciones usan internamente. Estos paquetes desarrollados internamente generalmente se alojan en repositorios internos y se consultan al crear aplicaciones, pero no se publican en repositorios públicos como PyPI, ya que no están destinados al uso público.
Las herramientas de instalación y gestión de paquetes, pip en el caso de Python, tienen su propia lógica interna de selección de paquetes cuando se enfrentan a dos paquetes con el mismo nombre de dos repositorios definidos de manera diferente, a menudo favoreciendo al que tiene el número de versión más alto, que podría ser el malicioso publicado. por atacantes en PyPI. Es difícil saber si alguno de los miles de paquetes cargados en los últimos días durante esta campaña lleva el nombre de los paquetes internos que usa una empresa.
Incluso si esta avalancha de paquetes no se usa como una distracción para un ataque más sutil y dirigido, el aspecto de envenenamiento de búsqueda por sí solo es peligroso. Un desarrollador que busque un paquete que realice una tarea específica podría encontrarse con uno de estos paquetes maliciosos.
Afortunadamente, en este caso, los atacantes no fueron muy inteligentes y liberaron los paquetes desde la misma dirección de correo electrónico, usando la misma descripción de paquete para todos. Esto ayudó a los mantenedores de PyPI a identificarlos y eliminarlos rápidamente. «Usar descripciones diferentes generadas aleatoriamente o descripciones para cada paquete malicioso robado de algunos paquetes legítimos diferentes haría de esta una campaña mucho más convincente para la víctima y una tarea mucho más difícil para los defensores», dice Sharma. «La combinación de técnicas como el uso de diferentes cuentas de autor (maliciosas), direcciones de correo electrónico y direcciones IP para publicar estos paquetes hace que estas campañas sean aún más difíciles de monitorear».
La carga útil maliciosa y los indicadores de compromiso
El archivo setup.py en los paquetes PyPI maliciosos utilizados en este ataque contenía una carga útil de ofuscación codificada en base64 que implicaba ejecutar un comando de PowerShell en sistemas Windows. El comando está diseñado para llegar a una URL de Dropbox y descargar un ejecutable llamado Esquele.exe, guardarlo localmente como WindowsCache.exe y luego ejecutarlo. Mientras Dropbox eliminó la URL que sirvió el archivo, los investigadores de Sonatype restauraron la carga útil de VirusTotal alguien lo subió.
Según Sonatype, es un programa troyano de Windows con capacidad para robar información. Fue también observado con el nombre update.exe y el atacante que lanzó el ataque utiliza el apodo de EsqueleSquad e incluso incluyó su sitio web en los paquetes.
Defensa contra inundaciones de paquetes maliciosos
Una defensa contra una avalancha de envíos de la misma fuente es hacer cumplir la limitación de la tasa: un límite en el número de envíos durante un período de tiempo. Sin embargo, la limitación de velocidad no es tan eficiente si, como dijo Sharma, los futuros atacantes deciden usar múltiples cuentas de autor, diferentes direcciones IP, etc. La limpieza después de un ataque relacionado con diferentes nombres de paquetes, diferentes descripciones y diferentes metadatos en general requiere mucho más tiempo y PyPI está a cargo de voluntarios.
Según Sharma, una mejor solución es introducir algo como el verificado espacios de nombres que utiliza el repositorio Maven Central para Java. Por ejemplo, el espacio de nombres para el servidor Tomcat en Central es org.apache.tomcat — este es el inverso del nombre de dominio real tomcat.apache.org, y si alguien quiere publicar un paquete bajo este espacio de nombres, debe probar el control de este nombre de dominio a nivel de DNS, que solo la Apache Software Foundation ( ASF) puede hacer. Además, realizar la verificación de correo electrónico para cuentas nuevas sería un paso importante, y otros métodos dificultarían la creación automática de una gran cantidad de cuentas.
Derechos de autor © 2023 IDG Communications, Inc.
Hemos recibido este contenido de ciberseguridad de: CSO Online
Encontrarás la noticia original en el siguiente enlace: https://www.csoonline.com/article/3688956/malicious-package-flood-on-pypi-might-be-sign-of-new-attacks-to-come.html#tk.rss_news