{"id":23136,"date":"2024-11-22T17:09:25","date_gmt":"2024-11-22T20:09:25","guid":{"rendered":"https:\/\/www.kaspersky.com.br\/blog\/?p=23136"},"modified":"2024-11-22T17:09:25","modified_gmt":"2024-11-22T20:09:25","slug":"jarkastealer-in-pypi-packages","status":"publish","type":"post","link":"https:\/\/www.kaspersky.com.br\/blog\/jarkastealer-in-pypi-packages\/23136\/","title":{"rendered":"JarkaStealer no reposit\u00f3rio PyPI"},"content":{"rendered":"<p>Nossos especialistas da Global Research and Analysis Team (GReAT, em tradu\u00e7\u00e3o livre Equipe Global de Pesquisa e An\u00e1lise) descobriram dois pacotes maliciosos no Python Package Index (PyPI) \u2013 um popular reposit\u00f3rio de software de terceiros para a linguagem Python. De acordo com as descri\u00e7\u00f5es dos pacotes, eram bibliotecas que permitiam trabalhar com LLMs (<em>large language models<\/em> ou grandes modelos de linguagem) populares. No entanto, na verdade, eles imitaram a funcionalidade declarada usando a vers\u00e3o demo do ChatGPT, e seu objetivo principal era instalar o malware JarkaStealer.<\/p>\n<p>Os pacotes ficaram dispon\u00edveis para download por mais de um ano. A julgar pelas estat\u00edsticas do reposit\u00f3rio, durante esse per\u00edodo foram baixados mais de 1.700 vezes por usu\u00e1rios de mais de 30 pa\u00edses.<\/p>\n<h2>Os pacotes maliciosos e para que eram usados<\/h2>\n<p>Os pacotes maliciosos foram carregados no reposit\u00f3rio por um autor \u00fanico. Eles se diferenciavam apenas no nome e na descri\u00e7\u00e3o. O primeiro se chamava \u201cgptplus\u201d e supostamente permitia acesso \u00e0 API GPT-4 Turbo da OpenAI; o segundo era intitulado como \u201cclaudeai-eng\u201d, conforme descri\u00e7\u00e3o, tamb\u00e9m prometia acesso \u00e0 API Claude AI da Anthropic PBC.<\/p>\n<p><a href=\"https:\/\/media.kasperskydaily.com\/wp-content\/uploads\/sites\/94\/2024\/11\/22170636\/JarkaStealer-in-pypi-packages-01.jpg\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-23138\" src=\"https:\/\/media.kasperskydaily.com\/wp-content\/uploads\/sites\/94\/2024\/11\/22170636\/JarkaStealer-in-pypi-packages-01.jpg\" alt=\"\" width=\"831\" height=\"363\"><\/a><\/p>\n<p>As descri\u00e7\u00f5es de ambos os pacotes inclu\u00edam exemplos de uso que explicavam como criar chats e enviar mensagens para modelos lingu\u00edsticos. Mas, na realidade, o c\u00f3digo desses pacotes continha um mecanismo de intera\u00e7\u00e3o com o proxy demo ChatGPT para enganar a v\u00edtima, emulando um suposto funcionamento. Enquanto isso, o arquivo __init__.py \u2013 que tamb\u00e9m estava nos pacotes \u2013 decodificava os dados contidos neles, operando o download do arquivo JavaUpdater.jar do reposit\u00f3rio GitHub. Se o Java n\u00e3o fosse encontrado na m\u00e1quina da v\u00edtima, conseguia operar a instala\u00e7\u00e3o do Java Runtime Environment (JRE) do Dropbox. O pr\u00f3prio arquivo jar continha o malware JarkaStealer, que foi usado para comprometer o ambiente de desenvolvimento e para exfiltra\u00e7\u00e3o n\u00e3o detectada de dados roubados.<\/p>\n<h2>O que \u00e9 o malware JarkaStealer e por que \u00e9 perigoso?<\/h2>\n<p>JarkaStealer \u00e9 um malware, presumivelmente desenvolvido por autores russos, que tem como utiliza\u00e7\u00e3o principal coletar dados confidenciais e envi\u00e1-los aos cibercriminosos. Entre as coisas que ele pode fazer est\u00e3o:<\/p>\n<ul>\n<li>Roubar dados de v\u00e1rios navegadores<\/li>\n<li>Capturar imagens de telas<\/li>\n<li>Coletar informa\u00e7\u00f5es de sistema;<\/li>\n<li>Roubar tokens de sess\u00f5es de v\u00e1rios aplicativos (incluindo Telegram, Discord, Steam e at\u00e9 do Minecraft);<\/li>\n<li>Interromper processos do navegador para recuperar dados armazenados.<\/li>\n<\/ul>\n<p>Na sequ\u00eancia, as informa\u00e7\u00f5es coletadas s\u00e3o arquivadas e enviadas ao servidor do invasor, para posteriormente, serem exclu\u00eddas da m\u00e1quina da v\u00edtima.<\/p>\n<p>Os autores do malware operam sua distribui\u00e7\u00e3o pelo Telegram, usando o modelo malware como servi\u00e7o (MaaS). No entanto, tamb\u00e9m encontramos o c\u00f3digo-fonte do JarkaStealer no GitHub, indicando que esta parte da a\u00e7\u00e3o n\u00e3o tenha a participa\u00e7\u00e3o dos criadores originais do malware.<\/p>\n<h2>Como se manter protegido<\/h2>\n<p>Informamos prontamente os administradores do PyPI sobre essas adi\u00e7\u00f5es maliciosas nos pacotes gptplus e claudeai-eng. Neste momento, eles j\u00e1 foram removidos do reposit\u00f3rio. No entanto, n\u00e3o h\u00e1 garantia de que este truque (ou semelhante) n\u00e3o ser\u00e1 usado em alguma outra plataforma. Seguimos no monitoramento de atividades relacionadas ao malware JarkaStealer e procurando outras amea\u00e7as em reposit\u00f3rios de software de c\u00f3digo aberto.<\/p>\n<p>Para aquelas pessoas que fizeram o download e a utiliza\u00e7\u00e3o de um dos pacotes comprometidos pelo malware, a principal recomenda\u00e7\u00e3o \u00e9 exclu\u00ed-lo imediatamente. O JarkaStealer n\u00e3o possui funcionalidade de persist\u00eancia, por isso sua ativa\u00e7\u00e3o \u00e9 associada \u00e0 opera\u00e7\u00e3o do pacote. No entanto, todas as senhas e os tokens de sess\u00e3o usados \u200b\u200bnos dispositivos da v\u00edtima podem ter sido roubados. Por isso, recomenda-se alter\u00e1-los ou reemiti-los imediatamente.<\/p>\n<p>Tamb\u00e9m \u00e9 oportuno indicar que os desenvolvedores prestem aten\u00e7\u00e3o especial quando trabalharem com pacotes de c\u00f3digo aberto e os inspecionem minuciosamente antes de integr\u00e1-los em seus projetos. Isto inclui uma an\u00e1lise detalhada das depend\u00eancias e da respectiva cadeia de suprimento de produtos de software \u2013 especialmente quando se trata de um tema t\u00e3o em alta como a integra\u00e7\u00e3o de tecnologias de IA.<\/p>\n<p>Neste caso, a data de cria\u00e7\u00e3o do perfil do autor no PyPI poderia ter sido um sinal de alerta. Ao observar atentamente a captura de tela acima, \u00e9 poss\u00edvel identificar que os dois pacotes foram publicados no mesmo dia, enquanto a conta que os publicou foi registrada apenas alguns dias antes.<\/p>\n<p>Para minimizar os riscos de trabalhar com pacotes de software de c\u00f3digo aberto de terceiros e evitar um ataque \u00e0 cadeia de suprimentos, recomendamos incluir nos processos de DevSecOps o <a href=\"https:\/\/www.kaspersky.com\/open-source-feed?icid=br_kdailyplacehold_acq_ona_smm__onl_b2b_blo_wpplaceholder________8c9c26f46d093c2c\" target=\"_blank\" rel=\"noopener nofollow\">Kaspersky Open Source Software Threats Data Feed<\/a>, que foi projetado especificamente para monitorar componentes de c\u00f3digo aberto usados, a fim de detectar amea\u00e7as ocultas em pacotes.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Pacotes maliciosos para integra\u00e7\u00e3o de IA contendo o malware infostealer foram encontrados no reposit\u00f3rio Python Package Index.<\/p>\n","protected":false},"author":312,"featured_media":23137,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1119,1655,1656],"tags":[1935,2114,415,1342,3172],"class_list":{"0":"post-23136","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-cadeia-de-suprimentos","11":"tag-codigo-aberto","12":"tag-great","13":"tag-ia","14":"tag-ladroes"},"hreflang":[{"hreflang":"pt-br","url":"https:\/\/www.kaspersky.com.br\/blog\/jarkastealer-in-pypi-packages\/23136\/"},{"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-mx","url":"https:\/\/latam.kaspersky.com\/blog\/jarkastealer-in-pypi-packages\/27817\/"},{"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":"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:\/\/www.kaspersky.com.br\/blog\/tag\/ladroes\/","name":"ladr\u00f5es"},"_links":{"self":[{"href":"https:\/\/www.kaspersky.com.br\/blog\/wp-json\/wp\/v2\/posts\/23136","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.kaspersky.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.kaspersky.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.kaspersky.com.br\/blog\/wp-json\/wp\/v2\/users\/312"}],"replies":[{"embeddable":true,"href":"https:\/\/www.kaspersky.com.br\/blog\/wp-json\/wp\/v2\/comments?post=23136"}],"version-history":[{"count":2,"href":"https:\/\/www.kaspersky.com.br\/blog\/wp-json\/wp\/v2\/posts\/23136\/revisions"}],"predecessor-version":[{"id":23140,"href":"https:\/\/www.kaspersky.com.br\/blog\/wp-json\/wp\/v2\/posts\/23136\/revisions\/23140"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.kaspersky.com.br\/blog\/wp-json\/wp\/v2\/media\/23137"}],"wp:attachment":[{"href":"https:\/\/www.kaspersky.com.br\/blog\/wp-json\/wp\/v2\/media?parent=23136"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.kaspersky.com.br\/blog\/wp-json\/wp\/v2\/categories?post=23136"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.kaspersky.com.br\/blog\/wp-json\/wp\/v2\/tags?post=23136"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}