
Un package npm nommé « rand-user-agent » a été compromis dans une attaque de la chaîne d’approvisionnement pour injecter du code obscurci qui active un cheval de Troie d’accès à distance (RAT) sur le système de l’utilisateur.
Le package ‘rand-user-agent’ est un outil qui génère des chaînes d’agent utilisateur aléatoires, ce qui est utile pour le grattage Web, les tests automatisés et la recherche sur la sécurité.
Bien que le package soit obsolète, il reste assez populaire, avec une moyenne de 45 000 téléchargements hebdomadaires.
Cependant, selon les chercheurs de l’Aïkido, les acteurs de la menace ont profité de son statut semi-abandonné mais populaire pour injecter du code malveillant dans des versions ultérieures non autorisées susceptibles d’avoir été téléchargées par un nombre important de projets en aval.
Aikido a détecté la compromission le 5 mai 2025, lorsque son système d’analyse de logiciels malveillants a signalé une nouvelle version de rand-user-agent, numéro 1.0.110.
Après un examen plus approfondi, les chercheurs ont découvert un code obscurci caché dans le « dist/index ».le fichier de js qui n’était visible que si l’utilisateur faisait défiler horizontalement dans la vue source sur le site npm.

L’enquête a montré que la dernière version légitime de ‘rand-user-agent’ était la 2.0.82, publiée il y a 7 mois.
Les versions 2.0.83, 2.0.84 et aussi 1.0.110, qui ont été publiées par la suite, étaient toutes malveillantes et n’avaient pas de versions correspondantes sur le référentiel GitHub du projet.
Le code malveillant intégré dans les versions les plus récentes crée un répertoire caché sous le dossier personnel de l’utilisateur (~/.node_modules) et étend le ‘ module.chemins ‘ afin que ce chemin personnalisé puisse être utilisé pour charger les dépendances, à savoir ‘axios’ et ‘socket.io-client.’
Ensuite, il ouvre une connexion socket persistante à la commande et au contrôle de l’attaquant (C2) à http://85.239.62 [.]36: 3306, et envoie des informations d’identification de la machine, y compris le nom d’hôte, le nom d’utilisateur, le type de système d’exploitation et un UUID généré.
Une fois que le RAT est actif, il écoute l’une des commandes ci-dessous:
- cd < path > – Change le répertoire de travail courant
- ss_dir-Réinitialise le répertoire de travail au chemin du script
- ss_fcd: < path> – Change de force vers le répertoire donné
- ss_upf: f, d-Télécharge un seul fichier f vers la destination d
- ss_upd: d, dest-Télécharge tous les fichiers du répertoire d vers dest
- ss_stop-Interrompt tout téléchargement de fichier en cours
- (tout autre) – L’exécute en tant que commande shell en utilisant child_process.exec()
Au moment de la rédaction de cet article, les versions malveillantes ont été supprimées du référentiel du package sur npm, de sorte que la dernière version disponible est sûre et que les utilisateurs doivent y revenir.
Cependant, si vous avez effectué une mise à niveau vers les versions 2.0.83, 2.0.84 ou 1.0.110, il est important d’effectuer une analyse complète du système à la recherche de signes de compromission. Notez que la rétrogradation à la version légitime ne supprime pas le RAT de votre système.
De plus, envisagez d’utiliser des versions fourchues mais toujours prises en charge et mieux surveillées de l’outil ‘rand-user-agent’.
Breachtrace a contacté le développeur pour savoir comment son package avait été compromis, mais aucune réponse n’était immédiatement disponible.