{"id":27817,"date":"2024-11-22T18:45:13","date_gmt":"2024-11-23T00:45:13","guid":{"rendered":"https:\/\/latam.kaspersky.com\/blog\/?p=27817"},"modified":"2024-11-22T18:45:13","modified_gmt":"2024-11-23T00:45:13","slug":"jarkastealer-in-pypi-packages","status":"publish","type":"post","link":"https:\/\/latam.kaspersky.com\/blog\/jarkastealer-in-pypi-packages\/27817\/","title":{"rendered":"JarkaStealer en el repositorio PyPI"},"content":{"rendered":"<p>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\u00fan la descripci\u00f3n de los paquetes, se trataba de librer\u00edas que permit\u00edan trabajar con los conocidos LLM (large language models). Sin embargo, la realidad era que imitaban la funcionalidad utilizando la versi\u00f3n demo de Chat GPT y su principal objetivo era instalar el malware JarkaStealer.<\/p>\n<p>Los paquetes estuvieron disponibles para descargar durante m\u00e1s de un a\u00f1o. A juzgar por las estad\u00edsticas del repositorio, durante este tiempo fueron descargados m\u00e1s de 1700 veces por usuarios de m\u00e1s de 30 pa\u00edses.<\/p>\n<h2>Paquetes maliciosos y para qu\u00e9 se utilizaban<\/h2>\n<p>Los paquetes maliciosos fueron subidos al repositorio por un \u00fanico autor. De hecho, solo se diferenciaban entre s\u00ed por el nombre y la descripci\u00f3n. El primero se llamaba \u201cgptplus\u201d y supuestamente permit\u00eda acceder a la API GPT-4 Turbo de OpenAI. El segundo se llam\u00f3 \u201cclaudeai-eng\u201d y, seg\u00fan su descripci\u00f3n, aseguraba tambi\u00e9n un acceso a la API Claude AI de Anthropic PBC.<\/p>\n<p><a href=\"https:\/\/media.kasperskydaily.com\/wp-content\/uploads\/sites\/87\/2024\/11\/22184414\/JarkaStealer-in-pypi-packages-01.jpg\"><img decoding=\"async\" class=\"alignnone size-full wp-image-27820\" src=\"https:\/\/media.kasperskydaily.com\/wp-content\/uploads\/sites\/87\/2024\/11\/22184414\/JarkaStealer-in-pypi-packages-01.jpg\" alt=\"\" width=\"831\" height=\"363\"><\/a><\/p>\n<p>Las descripciones de ambos paquetes inclu\u00edan ejemplos de uso que explicaban c\u00f3mo crear chats y enviar mensajes a modelos ling\u00fc\u00edsticos. La realidad era que estos paquetes conten\u00edan un mecanismo de interacci\u00f3n con el proxy de ChatGPT con el objetivo de convencer a la v\u00edctima de que el paquete funcionaba. Mientras tanto, el archivo <em>__init__.py <\/em>que tambi\u00e9n 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\u00e1quina de la v\u00edctima, descargaba e instalaba el entorno de ejecuci\u00f3n de Java (JRE) desde Dropbox. El propio archivo jar conten\u00eda el malware JarkaStealer que se usaba para comprometer el entorno de desarrollo, as\u00ed como para la exfiltraci\u00f3n no detectada de datos robados.<\/p>\n<h2>\u00bfQu\u00e9 es el malware JarkaStealer y por qu\u00e9 es peligroso?<\/h2>\n<p>JarkaStealer es un malware, presuntamente escrito por autores de origen ruso, que se utiliza principalmente para la recopilaci\u00f3n de datos confidenciales y enviarlos a los atacantes. Esto es lo que es capaz de hacer:<\/p>\n<ul>\n<li>Robo de datos de varios navegadores<\/li>\n<li>Capturas de pantalla<\/li>\n<li>Recopilaci\u00f3n de informaci\u00f3n del sistema<\/li>\n<li>Robo de tokens de sesi\u00f3n de aplicaciones varias (incluyendo Telegram, Discord, Steam e incluso en Minecraft)<\/li>\n<li>Interrumpir procesos del navegador para recuperar datos guardados<\/li>\n<\/ul>\n<p>A continuaci\u00f3n, la informaci\u00f3n recopilada se archiva, se env\u00eda al servidor del atacante y despu\u00e9s se elimina del dispositivo de la v\u00edctima.<\/p>\n<p>Los autores del malware lo distribuyen a trav\u00e9s de Telegram utilizando el modelo de malware como servicio (MaaS). Sin embargo, tambi\u00e9n encontramos el c\u00f3digo fuente de JarkaStealer en GitHub, lo que indica que es muy probable que en esta parte no participasen los autores originales del malware.<\/p>\n<h2>C\u00f3mo mantenerse seguro<\/h2>\n<p>Informamos r\u00e1pidamente a los administradores de PyPI sobre la implantaci\u00f3n 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\u00edas 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\u00f3digo abierto.<\/p>\n<p>Para aquellas personas que descargaron y utilizaron alguno de los paquetes maliciosos, la principal recomendaci\u00f3n ser\u00eda 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\u00f1as y tokens de la sesi\u00f3n que se utilizaron en el dispositivo de la v\u00edctima podr\u00edan haber sido robados por JarkaStealer, por lo que ser\u00eda recomendable cambiar a otro inmediatamente.<\/p>\n<p>Tambi\u00e9n recomendamos a los desarrolladores que presten especial atenci\u00f3n cuando trabajen con paquetes de c\u00f3digo abierto y que los inspeccionen a fondo antes de integrarlos con sus proyectos. Esto incluye un an\u00e1lisis 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\u00f3n de tecnolog\u00edas de IA.<\/p>\n<p>En este caso, la fecha de creaci\u00f3n del perfil del autor en PyPI podr\u00eda haber sido una se\u00f1al de alarma ya que, si observas con atenci\u00f3n la captura de pantalla anterior, se puede ver que ambos paquetes se publicaron el mismo d\u00eda, mientras que la cuenta que los public\u00f3 se registr\u00f3 apenas un par de d\u00edas antes.<\/p>\n<p>Para minimizar los riesgos de trabajar con paquetes de software de c\u00f3digo abierto de terceros y evitar un ataque a la cadena de suministro, recomendamos incluir en los procesos de DevSecOps a <a href=\"https:\/\/www.kaspersky.com\/open-source-feed?icid=es-LA_kdailyplacehold_acq_ona_smm__onl_b2b_blo_wpplaceholder________ead321b88669206a\" target=\"_blank\" rel=\"noopener nofollow\">Kaspersky Open Source Software Threats Data Feed<\/a>, que est\u00e1 dise\u00f1ado especialmente para monitorizar los componentes de c\u00f3digo abierto con el fin de detectar las amenazas que podr\u00edan esconderse en su interior.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Se encontraron paquetes maliciosos para la integraci\u00f3n de IA que conten\u00edan malware infostealer en el repositorio de Python Package Index.<\/p>\n","protected":false},"author":312,"featured_media":27818,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[2795,3539,3540],"tags":[3377,3839,1261,2018,668],"class_list":{"0":"post-27817","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-business","8":"category-enterprise","9":"category-smb","10":"tag-cadena-de-suministro","11":"tag-codigo-abierto","12":"tag-great","13":"tag-ia","14":"tag-ladrones"},"hreflang":[{"hreflang":"es-mx","url":"https:\/\/latam.kaspersky.com\/blog\/jarkastealer-in-pypi-packages\/27817\/"},{"hreflang":"en-in","url":"https:\/\/www.kaspersky.co.in\/blog\/jarkastealer-in-pypi-packages\/28313\/"},{"hreflang":"en-ae","url":"https:\/\/me-en.kaspersky.com\/blog\/jarkastealer-in-pypi-packages\/23566\/"},{"hreflang":"en-gb","url":"https:\/\/www.kaspersky.co.uk\/blog\/jarkastealer-in-pypi-packages\/28444\/"},{"hreflang":"es","url":"https:\/\/www.kaspersky.es\/blog\/jarkastealer-in-pypi-packages\/30561\/"},{"hreflang":"it","url":"https:\/\/www.kaspersky.it\/blog\/jarkastealer-in-pypi-packages\/29313\/"},{"hreflang":"ru","url":"https:\/\/www.kaspersky.ru\/blog\/jarkastealer-in-pypi-packages\/38624\/"},{"hreflang":"x-default","url":"https:\/\/www.kaspersky.com\/blog\/jarkastealer-in-pypi-packages\/52640\/"},{"hreflang":"fr","url":"https:\/\/www.kaspersky.fr\/blog\/jarkastealer-in-pypi-packages\/22388\/"},{"hreflang":"pt-br","url":"https:\/\/www.kaspersky.com.br\/blog\/jarkastealer-in-pypi-packages\/23136\/"},{"hreflang":"ru-kz","url":"https:\/\/blog.kaspersky.kz\/jarkastealer-in-pypi-packages\/28566\/"},{"hreflang":"en-au","url":"https:\/\/www.kaspersky.com.au\/blog\/jarkastealer-in-pypi-packages\/34398\/"},{"hreflang":"en-za","url":"https:\/\/www.kaspersky.co.za\/blog\/jarkastealer-in-pypi-packages\/34023\/"}],"acf":[],"banners":"","maintag":{"url":"https:\/\/latam.kaspersky.com\/blog\/tag\/ladrones\/","name":"ladrones"},"_links":{"self":[{"href":"https:\/\/latam.kaspersky.com\/blog\/wp-json\/wp\/v2\/posts\/27817","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/latam.kaspersky.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/latam.kaspersky.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/latam.kaspersky.com\/blog\/wp-json\/wp\/v2\/users\/312"}],"replies":[{"embeddable":true,"href":"https:\/\/latam.kaspersky.com\/blog\/wp-json\/wp\/v2\/comments?post=27817"}],"version-history":[{"count":3,"href":"https:\/\/latam.kaspersky.com\/blog\/wp-json\/wp\/v2\/posts\/27817\/revisions"}],"predecessor-version":[{"id":27822,"href":"https:\/\/latam.kaspersky.com\/blog\/wp-json\/wp\/v2\/posts\/27817\/revisions\/27822"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/latam.kaspersky.com\/blog\/wp-json\/wp\/v2\/media\/27818"}],"wp:attachment":[{"href":"https:\/\/latam.kaspersky.com\/blog\/wp-json\/wp\/v2\/media?parent=27817"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/latam.kaspersky.com\/blog\/wp-json\/wp\/v2\/categories?post=27817"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/latam.kaspersky.com\/blog\/wp-json\/wp\/v2\/tags?post=27817"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}