Nuestros expertos del Global Research and Analysis Team (GReAT) han descubierto dos paquetes maliciosos de Python Package Index (PyPI), un popular repositorio de software de terceros para Python. Según la descripción de los paquetes, se trataba de librerías que permitían trabajar con los conocidos LLM (large language models). Sin embargo, la realidad era que imitaban la funcionalidad utilizando la versión demo de Chat GPT y su principal objetivo era instalar el malware JarkaStealer.
Estos paquetes estuvieron disponibles para su descarga durante más de un año. Las estadísticas del repositorio indican que durante ese periodo se realizaron más de 1.7000 descargas del mismo por usuarios de más de 30 países.
Paquetes maliciosos y para qué se utilizaban
Los paquetes maliciosos fueron subidos al repositorio por un único autor. De hecho, solo se diferenciaban entre sí por el nombre y la descripción. El primero se llamaba “gptplus” y supuestamente permitía acceder a la API GPT-4 Turbo de OpenAI. El segundo se llamó “claudeai-eng” y, según su descripción, aseguraba también un acceso a la API Claude AI de Anthropic PBC.
Las descripciones de ambos paquetes incluían ejemplos de uso que explicaban cómo crear chats y enviar mensajes a modelos lingüísticos. La realidad era que estos paquetes contenían un mecanismo de interacción con el proxy de ChatGPT con el objetivo de convencer a la víctima de que el paquete funcionaba. Mientras tanto, el archivo __init__.py que también estaba dentro de los paquetes, descodificaba los datos de su interior y descargaba el archivo JavaUpdater.jar del repositorio de GitHub. Si Java no se encontraba en la máquina de la víctima, descargaba e instalaba el entorno de ejecución de Java (JRE) desde Dropbox. El propio archivo jar contenía el malware JarkaStealer que se usaba para comprometer el entorno de desarrollo, así como para la exfiltración no detectada de datos robados.
¿Qué es el malware JarkaStealer y por qué es peligroso?
JarkaStealer es un malware, presuntamente escrito por autores de origen ruso, que se utiliza principalmente para la recopilación de datos confidenciales y enviarlos a los atacantes. Esto es lo que es capaz de hacer:
- Robo de datos de varios navegadores
- Capturas de pantalla
- Recopilación de información del sistema
- Robo de tokens de sesión de aplicaciones varias (incluyendo Telegram, Discord, Steam e incluso en Minecraft)
- Interrumpir procesos del navegador para recuperar datos guardados
A continuación, la información recopilada se archiva, se envía al servidor del atacante y después se elimina del dispositivo de la víctima.
Los autores del malware lo distribuyen a través de Telegram utilizando el modelo de malware como servicio (MaaS). Sin embargo, también encontramos el código fuente de JarkaStealer en GitHub, lo que indica que es muy probable que en esta parte no participasen los autores originales del malware.
Cómo mantenerse seguro
Informamos rápidamente a los administradores de PyPI sobre la implantación de malware malicioso en los paquetes de gptplus y claudeai-eng. Por el momento ya han sido eliminados del repositorio. Sin embargo, no hay garantías de que esta trampa, o una similar, no se repita en otras plataformas. Seguimos vigilando la actividad relacionada con el malware JarkaStealer y buscando otras posibles amenazas en repositorios de software de código abierto.
Para aquellas personas que descargaron y utilizaron alguno de los paquetes maliciosos, la principal recomendación sería eliminarlo de manera inmediata. El malware no tiene funcionalidad de persistencia, por lo que se activa solo cuando se utiliza el paquete. Sin embargo, todas las contraseñas y tokens de la sesión que se utilizaron en el dispositivo de la víctima podrían haber sido robados por JarkaStealer, por lo que sería recomendable cambiar a otro inmediatamente.
También recomendamos a los desarrolladores que presten especial atención cuando trabajen con paquetes de código abierto y que los inspeccionen a fondo antes de integrarlos con sus proyectos. Esto incluye un análisis detallado de las dependencias y la respectiva cadena de suministro de los productos de software. Especialmente cuando se trata de un tema tan publicitado como la integración de tecnologías de IA.
En este caso, la fecha de creación del perfil del autor en PyPI podría haber sido una señal de alarma ya que, si observas con atención la captura de pantalla anterior, se puede ver que ambos paquetes se publicaron el mismo día, mientras que la cuenta que los publicó se registró apenas un par de días antes.
Para minimizar los riesgos de trabajar con paquetes de software de código abierto de terceros y evitar un ataque a la cadena de suministro, recomendamos incluir en los procesos de DevSecOps a Kaspersky Open Source Software Threats Data Feed, que está diseñado especialmente para monitorizar los componentes de código abierto con el fin de detectar las amenazas que podrían esconderse en su interior.