Les attaquants liés à la Corée du Nord cachent des logiciels malveillants alignés sur OTTERCOOKIE dans des fichiers de drapeau de pays SVG distribués via de faux tests de codage de développeur. Le code malveillant s'exécute lorsqu'une cible démarre le projet de commerce électronique fourni, et non lorsqu'une personne visualise simplement une image.
La campagne, identifiée comme REF9403, utilise l'ingénierie sociale plutôt qu'une vulnérabilité logicielle. Les attaquants se font passer pour des recruteurs ou des propriétaires de projet, proposent aux développeurs des opportunités d'emploi et les convainquent de télécharger et d'exécuter une évaluation de codage fonctionnel.
Elastic Security Labs a découvert REF9403après qu’un attaquant a publié une opportunité de développement dans l’espace de travail Slack de la communauté de l’entreprise. Elastic relie l'opération à Contagious Interview, une campagne de longue date attribuée à des acteurs alignés sur la Corée du Nord.
Comment le faux test de codage atteint les développeurs
Le 26 mai 2026, un utilisateur de Slack nommé « Maxwell » a posté sur une chaîne d'emploi et a affirmé avoir besoin d'aide pour moderniser une plateforme de commerce électronique. Les développeurs intéressés ont été redirigés vers des messages privés et invités à effectuer une évaluation de codage.
Le projet fourni semblait légitime. Il utilisait des technologies de développement Web familières et restait fonctionnel après l'installation, donnant au référentiel l'apparence d'un véritable test technique.
Cette approche exploite la confiance que les développeurs accordent aux workflows de recrutement. Un candidat s'attend à cloner des référentiels, installer des dépendances, inspecter le code et démarrer des serveurs locaux lors d'une évaluation, donnant ainsi aux attaquants une raison plausible de demander des actions potentiellement dangereuses.
Le projet contenait des images SVG montrant les drapeaux des pays. Des fichiers tels queAE.svgetAF.svgrendus normalement, mais leur source contenait des blocs de commentaires de style HTML contenant des fragments de logiciels malveillants codés en Base64.
SVG est un format d'image basé sur XML qui peut contenir du texte, des métadonnées et des commentaires. Dans ce cas, les attaquants n’ont pas dissimulé le code en modifiant les pixels de l’image. Ils ont placé du texte codé directement dans les commentaires qu’une visionneuse d’images ignorerait.
Un fichier JavaScript nomméserverValidation.jsa collecté les fichiers SVG, les a triés par ordre alphabétique, a extrait les commentaires et a joint les fragments. Il a ensuite décodé et exécuté la charge utile JavaScript reconstruite.
| Étape d'attaque | Activité observée |
|---|---|
| Leurre de recrutement | Fausse opportunité de développeur publiée via Slack |
| Contact privé | Les cibles intéressées sont passées aux messages directs |
| Livraison du projet | Évaluation fonctionnelle du codage du commerce électronique fournie |
| Stockage de la charge utile | Fragments Base64 placés dans les commentaires à l'intérieur des fichiers de drapeaux SVG |
| Reconstruction | serverValidation.jslit et joint les fragments |
| Exécution | JavaScript récupéré s'exécute à chaque démarrage du serveur de projet |
| Vol de données | Identifiants, portefeuilles, fichiers et données du presse-papiers collectés |
| Accès à distance | Le canal Socket.IO permet l'exécution de commandes interactives |
La charge utile s'exécute au démarrage du serveur
Le projetserver/index.jsLe fichier appelle la routine de validation malveillante après avoir configuré son middleware initial. Les deuxnpm run devetnpm startlancez ce fichier serveur.
De ce fait, le malware s'exécute à chaque démarrage du serveur de développement local. Les contrôles du gestionnaire de packages qui se concentrent uniquement sur les scripts d'installation ne peuvent pas arrêter ce chemin d'exécution.
Cela signifie également qu'un aperçu SVG à lui seul n'infecte pas le système. L'attaque observée nécessite que la cible exécute le projet et active le JavaScript côté serveur qui reconstruit la charge utile cachée.
Pourquoi les chercheurs l'appellent OTTERCOOKIE-Aligned
Elastic a trouvé des similitudes entre le JavaScript récupéré et OTTERCOOKIE, notamment les chaînes correspondantes, la structure du code, le comportement et les points de terminaison de l'API. Cependant, l’échantillon comprenait des modifications et des fonctionnalités combinées auparavant réparties entre les familles de logiciels malveillants associées.
LeAnalyse des entretiens contagieux Microsoftdécrit OTTERCOOKIE comme une porte dérobée JavaScript modulaire capable d'exécuter des commandes, de rechercher des clés de crypto-monnaie, de charger des modules supplémentaires et d'exfiltrer des données.
Elastic a déclaré que les frontières entre OTTERCOOKIE et BEAVERTAIL sont devenues moins claires. La charge utile REF9403 fonctionne comme une boîte à outils tout-en-un sans l’étape Python vue dans certaines infections antérieures de Contagious Interview.
Quatre modules de logiciels malveillants exécutés sur l'appareil
Le JavaScript reconstruit lance quatre composants principaux. Ensemble, ils assurent le vol d'informations d'identification, la collecte de fichiers, la surveillance du presse-papiers et l'accès à distance.
Le premier composant cible les informations d’identification du navigateur, les bases de données de remplissage automatique et les extensions de portefeuille de crypto-monnaie sur Windows, macOS et Linux. Il change le titre de son processus ennpm-cachepour apparaître comme un processus Node.js ordinaire.
Les autres composants recherchent dans le système de fichiers, créent un canal de commande Socket.IO et collectent le contenu du presse-papiers. Sous Windows, le logiciel malveillant peut également tenter de télécharger des fichiers exécutables supplémentaires à partir d'une infrastructure contrôlée par un attaquant.
| Module | Capacité principale | Plateformes prises en charge |
|---|---|---|
| Voleur de navigateur et de portefeuille | Collecte les données enregistrées du navigateur et les bases de données d'extension de portefeuille de crypto-monnaie | Windows, macOS et Linux |
| Voleur de fichiers | Recherche des documents, du code source, des informations d'identification et des fichiers de configuration | Windows, macOS et Linux |
| Socket.IO RAT | Fournit l'enregistrement du système et l'exécution de commandes shell interactives | Windows, macOS et Linux |
| Voleur de presse-papiers | Surveille et télécharge le contenu changeant du presse-papiers | Windows et macOS |
| Compte-gouttes de charge utile | Tentatives de téléchargement et d'exécution de fichiers supplémentaires | Fenêtres |
Identifiants de navigateur et portefeuilles de crypto-monnaie ciblés
Le module d'informations d'identification recherche les profils appartenant à des navigateurs tels que Chrome, Edge, Brave, Opera et LT Browser. Les chemins exacts du navigateur varient selon le système d'exploitation.
Il cible les bases de données pouvant contenir des connexions enregistrées, des informations de remplissage automatique et des données d'extension. Les exemples contiennent également une liste codée en dur de 25 extensions de navigateur de portefeuille de crypto-monnaie, notamment MetaMask, Phantom, Rabby, Trust Wallet, TronLink, OKX Wallet et des alternatives liées à Coinbase.
Sur macOS, le module tente également de collecter la base de données du trousseau de connexion de l'utilisateur. Les sessions de navigateur volées ou les données d'extension de portefeuille peuvent rester utiles même après qu'une victime ait modifié le mot de passe d'un compte.
File Stealer recherche dans les répertoires des développeurs
Le composant de vol de fichiers recherche les fichiers d'environnement, les clés privées, les historiques de shell, les documents, le code source, les fichiers de configuration et les images. Sous Windows, il énumère les lecteurs montés avant de les analyser.
Sous macOS et Linux, la recherche se concentre sur le répertoire personnel de l’utilisateur. Chemins contenant.aws,.azure,.config,.ssh,.bash_historyou.zsh_historyfont l'objet d'une attention particulière.
Ce ciblage crée un risque organisationnel sérieux. Les machines des développeurs contiennent souvent des informations d'identification cloud, des jetons de référentiel, des clés SSH et un accès aux systèmes CI/CD qui pourraient prendre en charge un compromis plus large.
- Fichiers d'environnement contenant des secrets d'application
- Identifiants AWS et Azure
- Clés privées SSH et configuration
- Historiques des commandes Shell
- Fichiers de code source et documents de projet
- Bases de données de connexion au navigateur
- Données d'extension de portefeuille de crypto-monnaie
- Données du trousseau de connexion macOS
La porte dérobée Socket.IO offre aux attaquants un shell interactif
Le module d'accès à distance se connecte àcontroller.rightwidth[.]devvia Socket.IO sur HTTPS. Il enregistre le système infecté et envoie des informations d'identification de l'hôte au contrôleur.
Un opérateur peut soumettre une commande shell via le canal. Le malware l'exécute avec Node.jschild_process.exec()et renvoie la sortie, fournissant un accès interactif à la machine compromise.
Le module vérifie les signes de VMware, VirtualBox, QEMU et d'autres environnements virtualisés. Un résultat positif ajoute une étiquette de machine virtuelle aux informations d'enregistrement, mais le logiciel malveillant continue de s'exécuter.
La surveillance du presse-papiers s'exécute toutes les demi-secondes
Sous Windows et macOS, le composant Presse-papiers recherche du nouveau contenu toutes les 500 millisecondes. Tout changement peut être envoyé à l’infrastructure de l’attaquant.
Les systèmes Windows exécutent des commandes PowerShell cachées et répétées à l'aide deGet-Clipboard. Sur macOS, le malware utilise lepbpastecommande. L'implémentation Linux dans l'échantillon analysé n'a pas collecté le contenu du presse-papiers.
Cette fonctionnalité pourrait exposer des mots de passe, des jetons API, des adresses de portefeuille, des phrases de récupération ou des messages privés qu'un développeur copie au cours de son travail ordinaire.
Le composant Windows tente des téléchargements supplémentaires
Le compte-gouttes Windows uniquement tente de télécharger trois fichiers déguisés en.txtextensions. Il les renomme commehostService.exe,printSvc.exeetdhcpSvc.exeavant l'exécution.
Elastic n'a pas pu récupérer ces fichiers car le serveur n'était pas disponible lors de l'analyse. Leur fonctionnalité exacte reste donc non confirmée et ne doit pas être déduite de leurs noms de fichiers.
L’échec de la récupération ne garantit pas la sécurité d’un système infecté. Les modules de vol d'informations d'identification, de collecte de fichiers, de surveillance du presse-papiers et d'accès à distance peuvent déjà exposer des informations sensibles sans ces charges utiles supplémentaires.
Une interview contagieuse cible les développeurs depuis des années
Contagious Interview est opérationnel depuis au moins décembre 2022. Les attaquants se font généralement passer pour des recruteurs d'entreprises de cryptomonnaie, de technologie ou d'intelligence artificielle et guident les victimes tout au long d'un processus d'embauche convaincant.
Recherche sur les entrevues contagieuses de l’unité 42Des faux recruteurs liés à la Corée du Nord ont déjà été documentés et transmettaient les logiciels malveillants BEAVERTAIL et InvisibleFerret aux demandeurs d'emploi dans le secteur technologique.

La campagne REF9403 change de packaging, mais l'objectif d'ingénierie sociale reste cohérent. L'attaquant a besoin que la cible fasse confiance à l'affectation et exécute du code dans un environnement contenant des informations d'identification précieuses.
Indicateurs associés au REF9403
Les équipes de sécurité doivent combiner des indicateurs de fichiers, de réseau et de comportement. Les noms d'archives peuvent être facilement modifiés, tandis que des projets légitimes peuvent par hasard utiliser des noms génériques tels queecommerce-main.zip.
| Taper | Indicateur | Objectif déclaré |
|---|---|---|
| Déposer | serverValidation.js | Reconstruit la charge utile à partir des commentaires SVG |
| Déposer | AE.svgetAF.svg | Exemples de fichiers de drapeaux contenant des fragments codés |
| Titre du processus | npm-cache | Déguisement du processus malveillant |
| Domaine | rightwidth[.]dev | Infrastructure de presse-papiers et de commande |
| Domaine | ldb.rightwidth[.]dev | Collecte de données du navigateur et du portefeuille |
| Domaine | upload.rightwidth[.]dev | Téléchargements de fichiers volés |
| Domaine | controller.rightwidth[.]dev | Contrôleur d'accès à distance Socket.IO |
| Domaine | file.rightwidth[.]dev | Téléchargements de charges utiles Windows |
| IPv4 | 195.26.248[.]212 | Infrastructure de commandement signalée |
| IPv4 | 188.40.64[.]61 | Infrastructure de commandement signalée |
Comment les développeurs peuvent vérifier les évaluations de codage
Les développeurs doivent traiter chaque test de codage non sollicité comme du code non fiable. Une interface soignée, des dépendances valides et des fonctionnalités fonctionnelles ne garantissent pas que le référentiel est sûr.
Avant l'exécution, les examinateurs doivent inspecterpackage.json, les fichiers de démarrage du serveur, les configurations de tâches et les scripts qui lisent les répertoires d'actifs. Les commentaires longs codés dans des fichiers SVG, HTML ou autres fichiers statiques justifient également une enquête.
LeConseils d’atténuation de Microsoftrecommande d'utiliser des machines virtuelles isolées et non persistantes pour les tests de codage et d'éviter les postes de travail principaux ayant accès aux systèmes de production, aux référentiels ou aux comptes cloud.
- Vérifiez le recruteur et l’entreprise via un canal indépendant.
- Vérifiez l'âge et l'historique du référentiel et du compte de l'expéditeur.
- Passez en revue tous les fichiers de configuration de démarrage et de tâche.
- Rechercher
eval(), construction de fonctions dynamiques et exécution de shell. - Inspectez les commentaires dans SVG, HTML et autres ressources statiques.
- Utilisez une machine virtuelle jetable sans informations d'identification personnelles ou d'entreprise.
- Restreignez l’accès au réseau sortant lors du test de projets inconnus.
- Ne désactivez pas les outils de sécurité à la demande d’un recruteur.
Que faire après avoir exécuté un référentiel suspect
Toute personne ayant exécuté un projet de correspondance doit déconnecter l'appareil du réseau et contacter l'équipe de sécurité compétente. Le référentiel, l'historique du terminal, les informations sur les processus et les journaux réseau doivent être conservés avant le nettoyage.
Les informations d’identification doivent provenir d’un appareil de confiance distinct. Les équipes doivent révoquer les sessions de navigateur, les jetons de référentiel, les informations d'identification npm, les clés cloud et autres secrets disponibles pour le compte concerné.

Indicateurs REF9403 d'Elasticpeut prendre en charge la recherche, mais les intervenants doivent également enquêter sur les preuves comportementales telles qu'une vaste énumération de fichiers, des accès répétés au presse-papiers, des processus Node.js suspects et des connexions Socket.IO inattendues.
- Isolez le périphérique de développement suspecté.
- Préservez le référentiel et enregistrez sa source et ses informations de validation.
- Collectez les processus en cours, l'historique du terminal et les journaux réseau.
- Recherchez les noms de fichiers, domaines, adresses IP et hachages d’archives connus.
- Révoquer les sessions actives d'un appareil propre.
- Faites pivoter les informations d'identification GitHub, GitLab, npm, SSH, cloud et CI/CD.
- Examinez les portefeuilles de crypto-monnaie et déplacez des fonds si une exposition est probable.
- Vérifiez les journaux de contrôle de source et d’audit cloud pour détecter tout accès non autorisé.
- Examinez les autres systèmes accessibles via les informations d’identification stockées sur l’appareil.
- Reconstruisez le point de terminaison lorsque les intervenants ne peuvent pas établir la portée complète.
Les points de terminaison des développeurs nécessitent une isolation plus forte
Les développeurs ont besoin d'outils capables d'exécuter du code, d'installer des packages et d'accéder à des services externes. Ces capacités font de leurs systèmes des cibles précieuses et peuvent affaiblir les contrôles conçus pour les appareils de bureau ordinaires.
Le plus tôtRésultats du ciblage des développeurs de l'unité 42a montré comment de fausses interviews pouvaient placer des logiciels malveillants multiplateformes sur les systèmes Windows et macOS. REF9403 étend ce modèle aux actifs que les développeurs peuvent considérer comme inoffensifs.
Les organisations doivent fournir des environnements dédiés aux évaluations des candidats, aux tests open source et aux référentiels inconnus. Des informations d’identification de courte durée, des coffres-forts secrets et des limites d’accès strictes peuvent réduire l’impact si un développeur exécute du code malveillant.
FAQ
Qu'est-ce que la campagne REF9403 ?
REF9403 est un nom de suivi d'Elastic Security Labs pour une campagne d'interviews contagieuses liée à la Corée du Nord qui distribue des évaluations de codage malveillant aux développeurs de logiciels.
L'affichage d'une image SVG infectée peut-il exécuter le logiciel malveillant OTTERCOOKIE ?
L’infection REF9403 observée ne démarre pas lorsque quelqu’un visualise simplement une image de drapeau. Le malware s'exécute lorsque la victime démarre le projet fourni et son JavaScript côté serveur reconstruit et exécute les fragments Base64 stockés dans les commentaires SVG.
Quelles informations le malware peut-il voler ?
Le malware peut collecter les informations d'identification du navigateur, les données de remplissage automatique, les bases de données d'extension de portefeuille de crypto-monnaie, les informations d'identification cloud, les fichiers SSH, les fichiers d'environnement, les documents, le code source, les historiques de shell et le contenu du presse-papiers.
Quels systèmes d'exploitation sont concernés ?
Les principaux modules d'informations d'identification, de vol de fichiers et d'accès à distance prennent en charge Windows, macOS et Linux. La collection du Presse-papiers fonctionne sur Windows et macOS dans l'échantillon analysé, tandis que les téléchargements exécutables supplémentaires ciblent Windows.
Que doit faire un développeur après avoir exécuté un test de codage suspect ?
Le développeur doit isoler l'appareil, conserver les preuves et informer l'équipe de sécurité. À partir d'un appareil propre distinct, les sessions et les informations d'identification exposées doivent être révoquées ou alternées, y compris les jetons de contrôle de source, les clés cloud, les clés SSH et les secrets du portefeuille de crypto-monnaie.
