Les chercheurs ont découvert plusieurs packages npm nommés d’après les bibliothèques NodeJS qui emballent même un exécutable Windows qui ressemble à NodeJS mais déposent à la place un sinistre cheval de Troie.

Ces colis, compte tenu de leur furtivité et d’un taux de détection très faible, étaient présents sur npm depuis plus de deux mois avant leur détection par les chercheurs.

Pas le nœud que vous recherchez
Les chercheurs de la société de sécurité logicielle ReversingLabs ont analysé trois packages npm qui se cachaient dans le registre npmjs.com depuis plus de deux mois.

Ces packages, téléchargés un peu plus de 1 200 fois au total, s’appellent :

« Publié pour la première fois il y a plus de deux mois, nodejs-encrypt-agent semble à première vue être un package légitime », déclarent les chercheurs de ReversingLabs dans leur rapport.

« Cependant, des divergences ont soulevé des signaux d’alarme auprès de nos chercheurs. Malgré cela, notre première pensée était toujours que ce paquet ne pouvait pas être malveillant. S’il l’était, il aurait sûrement été remarqué et supprimé par les administrateurs de npm. »

Bien que nodejs-encrypt-agent n’ait pas déclenché d’alarmes au départ et même reflété la fonctionnalité de packages légitimes comme agent-base, il y avait plus que cela, ont découvert les chercheurs.

« Il y avait cependant une petite différence, mais très significative : le package nodejs-encrypt-agent contenait un fichier exécutable portable (PE) qui, une fois analysé par ReversingLabs, s’est avéré malveillant », écrivent les chercheurs.

Le fichier PE auquel il est fait référence est un exécutable Windows « lib.exe », d’une taille d’environ 100 Mo, qui peut ne pas sembler suspect tout de suite.

Le fichier ressemble étroitement à la véritable application NodeJS en ce qui concerne ses en-têtes et métadonnées PE, son code et ses fonctionnalités. En effet, a observé Breachtrace, les variantes des exécutables ‘lib.exe’ présents dans certaines versions de nodejs-encrypt-agent avaient un taux de détection très faible :

Il en va de même également pour le lib.exe spécifiquement analysé par ReversingLabs. L’analyse de VirusTotal révèle comment l’exécutable imite Node.js et contient des métadonnées identiques de l’application légitime.

Le chercheur de ReversingLabs, Igor Kramarić, qui a analysé le paquet malveillant, a repéré qu’un ou plusieurs fichiers JavaScript dans nodejs-encrypt-agent contenaient des fonctionnalités légitimes, mais avaient également du code qui exécutait discrètement le « lib.exe » fourni :

« Comme nous l’avons observé ci-dessus : il ne faisait aucun doute que le PE découvert dans le package npm était malveillant », déclare Lucija Valentić de ReversingLabs.

L’exécutable malveillant en question exécutait ce qu’on appelle l’infostealer TurkoRAT, un « grabber » personnalisable et un voleur d’informations d’identification difficile à détecter.

« La liste des comportements malveillants ou suspects observés était longue, avec des fonctionnalités conçues pour voler des informations sensibles des systèmes infectés, notamment les identifiants de connexion des utilisateurs et les portefeuilles cryptographiques, ainsi que pour tromper ou vaincre les environnements de bac à sable et les débogueurs utilisés pour analyser les fichiers malveillants. »

Comme nodejs-encrypt-agent, les versions de nodejs-cookie-proxy-agent ont également supprimé ce cheval de Troie, mais ont introduit une étape supplémentaire entre les deux pour échapper à la détection.

Au lieu de regrouper directement ‘lib.exe’ à l’intérieur, nodejs-cookie-proxy-agent a répertorié axios-proxy comme dépendance et c’est ce dernier qui contenait l’exécutable malveillant qui serait extrait chaque fois que l’ancien package serait installé par un utilisateur.

« Cette fois, les attaquants l’ont déguisé en une dépendance, axios-proxy, qui a été importée dans chaque fichier trouvé dans les versions 1.1.0, 1.2.0, 1.2.1 et 1.2.2 de nodejs-cookie-proxy-agent », révèle le des chercheurs.

Tous les packages malveillants ont été supprimés du registre npm peu de temps après leur détection par ReversingLabs. Mais, le fait que ceux-ci soient restés sur npm pendant plus de deux mois met en évidence le risque permanent que les packages open source non vérifiés peuvent représenter pour la sécurité de la chaîne d’approvisionnement logicielle, avertissent les chercheurs.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *