{"id":22388,"date":"2024-11-22T16:57:46","date_gmt":"2024-11-22T14:57:46","guid":{"rendered":"https:\/\/www.kaspersky.fr\/blog\/?p=22388"},"modified":"2024-11-22T16:57:46","modified_gmt":"2024-11-22T14:57:46","slug":"jarkastealer-in-pypi-packages","status":"publish","type":"post","link":"https:\/\/www.kaspersky.fr\/blog\/jarkastealer-in-pypi-packages\/22388\/","title":{"rendered":"JarkaStealer dans un d\u00e9p\u00f4t PyPI"},"content":{"rendered":"<p>Notre \u00e9quipe de chercheurs de la Global Research and Analysis Team (GReAT) a d\u00e9couvert deux paquets malveillants dans le Python Package Index (PyPI), un c\u00e9l\u00e8bre <a href=\"https:\/\/fr.wikipedia.org\/wiki\/D%C3%A9p%C3%B4t_(informatique)\" target=\"_blank\" rel=\"noopener nofollow\">d\u00e9p\u00f4t<\/a>\u00a0tiers officiel du\u00a0<a href=\"https:\/\/fr.wikipedia.org\/wiki\/Langage_de_programmation\" target=\"_blank\" rel=\"noopener nofollow\">langage de programmation<\/a>\u00a0<a href=\"https:\/\/fr.wikipedia.org\/wiki\/Python_(langage)\" target=\"_blank\" rel=\"noopener nofollow\">Python<\/a>. Selon les descriptions des paquets, il s\u2019agit de biblioth\u00e8ques qui permettaient de travailler avec des LLM populaires (grands mod\u00e8les de langage). En r\u00e9alit\u00e9, elles imitaient la fonctionnalit\u00e9 \u00e9nonc\u00e9e en utilisant une version de d\u00e9monstration de ChatGPT et cherchaient avant tout \u00e0 installer la programme malveillant JarkaStealer.<\/p>\n<p>Ces paquets ont pu \u00eatre t\u00e9l\u00e9charg\u00e9s pendant plus d\u2019un an. \u00c0 en juger par les statistiques du d\u00e9p\u00f4t, au cours de cette p\u00e9riode, ils ont \u00e9t\u00e9 t\u00e9l\u00e9charg\u00e9s plus de 1700 fois par des utilisateurs de plus de 30 pays.<\/p>\n<h2>Paquets malveillants et leur utilisation<\/h2>\n<p>Un seul auteur a t\u00e9l\u00e9charg\u00e9 ces paquets malveillants sur le d\u00e9p\u00f4t qui ne se diff\u00e9rentiaient que par leur nom et leur description. Le premier s\u2019appelait \u00ab\u00a0gptplus\u00a0\u00bb et donnait soi-disant acc\u00e8s \u00e0 l\u2019API GPT-4 Turbo d\u2019OpenAI. Le second s\u2019intitulait \u00ab\u00a0claudeai-eng\u00a0\u00bb et, selon sa description, il permettait d\u2019acc\u00e9der \u00e0 l\u2019API Claude AI d\u2019Anthropic PBC.<br>\n<a href=\"https:\/\/media.kasperskydaily.com\/wp-content\/uploads\/sites\/93\/2024\/11\/22165130\/JarkaStealer-in-pypi-packages-01.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-22389\" src=\"https:\/\/media.kasperskydaily.com\/wp-content\/uploads\/sites\/93\/2024\/11\/22165130\/JarkaStealer-in-pypi-packages-01.jpg\" alt=\"\" width=\"831\" height=\"363\"><\/a>Les descriptions de ces deux paquets incluaient des exemples d\u2019utilisation qui expliquaient comment cr\u00e9er des conversations et envoyer des messages aux mod\u00e8les de langage. Mais en r\u00e9alit\u00e9, le code de ces paquets contenait un m\u00e9canisme d\u2019interaction avec le proxy de d\u00e9monstration de ChatGPT afin de convaincre la victime que le paquet fonctionnait. Pendant ce temps, le fichier <em>__init__.py <\/em>du paquet d\u00e9codait les donn\u00e9es qui se trouvaient \u00e0 l\u2019int\u00e9rieur et t\u00e9l\u00e9chargeait le fichier <em>JavaUpdater.jar <\/em>du d\u00e9p\u00f4t GitHub. Si la victime n\u2019avait pas install\u00e9 Java sur son dispositif, le paquet t\u00e9l\u00e9chargeait et installait Java Runtime Environment (JRE) depuis Dropbox. Le fichier <em>jar<\/em> contenait le programme malveillant JarkaStealer, qui \u00e9tait ensuite utilis\u00e9 pour compromettre l\u2019environnement de d\u00e9veloppement et pour exfiltrer les donn\u00e9es vol\u00e9es sans \u00eatre d\u00e9tect\u00e9.<\/p>\n<h2>Qu\u2019est-ce que le programme malveillant JarkaStealer et pourquoi est-il dangereux ?<\/h2>\n<p>JarkaStealer est un programme malveillant, vraisemblablement \u00e9crit par des auteurs russophones, qui \u00e9tait principalement utilis\u00e9 pour recueillir des donn\u00e9es confidentielles et les envoyer aux cybercriminels. Voici tout ce dont il \u00e9tait capable\u00a0:<\/p>\n<ul>\n<li>Voler les donn\u00e9es de plusieurs navigateurs<\/li>\n<li>Prendre des captures d\u2019\u00e9cran<\/li>\n<li>Recueillir des informations sur le syst\u00e8me<\/li>\n<li>Voler les jetons de session de diverses applications (dont Telegram, Discord, Steam ou encore un client de triche Minecraft)<\/li>\n<li>Interrompre les processus de navigation pour r\u00e9cup\u00e9rer les donn\u00e9es sauvegard\u00e9es.<\/li>\n<\/ul>\n<p>Les informations recueillies \u00e9taient ensuite archiv\u00e9es, envoy\u00e9es au serveur des cybercriminels puis supprim\u00e9es du dispositif de la victime.<\/p>\n<p>Les auteurs de ce programme malveillant l\u2019ont distribu\u00e9 via Telegram gr\u00e2ce au mod\u00e8le de \u00ab\u00a0malware en tant que service\u00a0\u00bb (MaaS). Cependant, nous avons aussi trouv\u00e9 le code source de JarkaStealer sur GitHub, ce qui signifie que les auteurs originaux du programme malveillant n\u2019\u00e9taient peut-\u00eatre pas impliqu\u00e9s dans cette campagne.<\/p>\n<h2>Comment vous prot\u00e9ger<\/h2>\n<p>Nous avons rapidement inform\u00e9 les administrateurs de PyPI des implants de ce programme malveillant dans les paquets gptplus et claudeai-eng, et ils ont d\u2019ores et d\u00e9j\u00e0 \u00e9t\u00e9 retir\u00e9s du d\u00e9p\u00f4t. Pourtant, rien ne garantit que cette technique, ou toute autre similaire, ne soit pas utilis\u00e9e sur une autre plateforme. Nous ne cessons de surveiller les activit\u00e9s li\u00e9es au programme malveillant JarkaStealer et de rechercher d\u2019autres menaces dans les d\u00e9p\u00f4ts de logiciels libres.<\/p>\n<p>Quant aux utilisateurs qui ont t\u00e9l\u00e9charg\u00e9 et utilis\u00e9 l\u2019un des paquets malveillants, nous leur conseillons de le supprimer imm\u00e9diatement. Le programme malveillant ne dispose pas d\u2019une fonction de persistance et il ne s\u2019ex\u00e9cute que lorsque le paquet est utilis\u00e9. En revanche, JarkaStealer a pu voler tous les mots de passe et jetons de session utilis\u00e9s sur le dispositif de la victime, et doivent donc \u00eatre imm\u00e9diatement modifi\u00e9s ou r\u00e9\u00e9dit\u00e9s.<\/p>\n<p>Nous conseillons aux d\u00e9veloppeurs d\u2019\u00eatre particuli\u00e8rement prudents lorsqu\u2019ils travaillent avec des paquets de logiciels libres et de les inspecter minutieusement avant de les int\u00e9grer dans leurs projets. Ce processus inclut une analyse d\u00e9taill\u00e9e des d\u00e9pendances et de la cha\u00eene d\u2019approvisionnement respective des produits logiciels, surtout lorsqu\u2019il s\u2019agit d\u2019un sujet aussi br\u00fblant que l\u2019int\u00e9gration des technologies de l\u2019IA.<\/p>\n<p>Dans ce cas, la date de cr\u00e9ation du profil de l\u2019auteur sur PyPI aurait d\u00fb \u00e9veiller les soup\u00e7ons. Si vous analysez de plus pr\u00e8s la capture d\u2019\u00e9cran ci-dessus, vous verrez que les deux paquets ont \u00e9t\u00e9 publi\u00e9s le m\u00eame jour, alors que le compte qui les a publi\u00e9s n\u2019a \u00e9t\u00e9 cr\u00e9\u00e9 que quelques jours plus t\u00f4t.<\/p>\n<p>Afin de minimiser les risques lorsque vous travaillez avec des paquets logiciels libres de tiers et d\u2019\u00e9viter une attaque de la cha\u00eene d\u2019approvisionnement, nous vous conseillons d\u2019inclure les processus DevSecOps de <a href=\"https:\/\/www.kaspersky.com\/open-source-feed?icid=fr_kdailyplacehold_acq_ona_smm__onl_b2b_blo_wpplaceholder________dd0f74eb94b1411c\" target=\"_blank\" rel=\"noopener nofollow\">Kaspersky Open Source Software Threats Data Feed<\/a>. Ce programme a sp\u00e9cialement \u00e9t\u00e9 con\u00e7u pour surveiller les composants libres que vous utilisez afin de d\u00e9tecter les menaces qu\u2019ils pourraient contenir.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Des paquets malveillants pour l\u2019int\u00e9gration de l\u2019IA avec un logiciel malveillant de type infostealer a \u00e9t\u00e9 d\u00e9tect\u00e9 dans le d\u00e9p\u00f4t de Python Package Index.<\/p>\n","protected":false},"author":312,"featured_media":22390,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[2112,3150,3151],"tags":[3197,750,3383,4509,4369,4508,4368],"class_list":{"0":"post-22388","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-chaine-dapprovisionnement","11":"tag-great","12":"tag-ia","13":"tag-libre","14":"tag-open-source","15":"tag-stealer","16":"tag-voleurs"},"hreflang":[{"hreflang":"fr","url":"https:\/\/www.kaspersky.fr\/blog\/jarkastealer-in-pypi-packages\/22388\/"},{"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":"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:\/\/www.kaspersky.fr\/blog\/tag\/voleurs\/","name":"voleurs"},"_links":{"self":[{"href":"https:\/\/www.kaspersky.fr\/blog\/wp-json\/wp\/v2\/posts\/22388","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.kaspersky.fr\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.kaspersky.fr\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.kaspersky.fr\/blog\/wp-json\/wp\/v2\/users\/312"}],"replies":[{"embeddable":true,"href":"https:\/\/www.kaspersky.fr\/blog\/wp-json\/wp\/v2\/comments?post=22388"}],"version-history":[{"count":2,"href":"https:\/\/www.kaspersky.fr\/blog\/wp-json\/wp\/v2\/posts\/22388\/revisions"}],"predecessor-version":[{"id":22392,"href":"https:\/\/www.kaspersky.fr\/blog\/wp-json\/wp\/v2\/posts\/22388\/revisions\/22392"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.kaspersky.fr\/blog\/wp-json\/wp\/v2\/media\/22390"}],"wp:attachment":[{"href":"https:\/\/www.kaspersky.fr\/blog\/wp-json\/wp\/v2\/media?parent=22388"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.kaspersky.fr\/blog\/wp-json\/wp\/v2\/categories?post=22388"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.kaspersky.fr\/blog\/wp-json\/wp\/v2\/tags?post=22388"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}