L'opérateur de GhostAction a étendu sa campagne de compromission de dépôts avec un kit d'hameçonnage et un voleur d'identifiants persistant déguisé en police de caractères web, selon le compte rendu de The Hacker News sur les résultats d'OpenSourceMalware.
Les chercheurs ont identifié le composant de deuxième étape dans 94 dépôts appartenant à 66 propriétaires. Ces chiffres décrivent des dépôts et des propriétaires, et non des victimes confirmées ni des identifiants volés. Sur les 94 dépôts, 15 avaient été supprimés, renommés ou rendus privés, ce qui en laisse 79 accessibles au décompte.
Cette nouvelle approche fait suite à l'usage antérieur, par GhostAction, de workflows GitHub Actions malveillants pour rechercher des secrets dans les projets. OpenSourceMalware indique que GitHub a commencé à empêcher l'exécution de ce workflow le 9 octobre 2026. Les chercheurs n'affirment pas que ce blocage est à l'origine du changement suivant, mais estiment que l'opérateur a déplacé l'exécution vers des zones situées au-delà des contrôles de ces workflows.
Le hameçonnage capture les identifiants et autorise un flux d'appareil OAuth
L'infrastructure d'hameçonnage repose sur my-github[.]com, enregistré le 9 octobre 2026 et pointant vers 193.32.204[.]199. Cette même adresse IP aurait servi de point d'exfiltration pour le workflow de première étape de GhostAction.
Le 9 octobre, un courriel envoyé depuis noreply@my-github[.]com a atteint un mainteneur de projet open source. Il se faisait passer pour une notification de sécurité GitHub, affirmait qu'une connexion avait été détectée depuis Moscou, en Russie, et invitait le destinataire à cliquer sur un lien présenté comme un moyen de sécuriser le compte.
OpenSourceMalware décrit le kit d'hameçonnage comme un proxy inverse capable d'intercepter à la fois le mot de passe du compte et le code d'authentification à deux facteurs de la victime. Il injecte également du JavaScript dans la session relayée afin d'autoriser un flux d'appareil OAuth GitHub avec trois périmètres (scopes) :
repo, qui donne accès aux dépôts ;workflow, qui permet de modifier les fichiers de workflows GitHub Actions ;read:org, qui expose les informations d'appartenance à l'organisation.
Le kit automatise la saisie et l'autorisation du code d'appareil, plutôt que de demander à la victime de saisir le code ou d'approuver sciemment l'application. Le jeton d'accès obtenu est envoyé à my-github[.]com sur le port TCP 8443.
Un tel jeton donne à l'opérateur un identifiant d'API réutilisable, dont les permissions correspondent au comportement observé de GhostAction : énumération des dépôts et dépôt de fichiers malveillants dans .github/workflows/.
Un domaine associé, my-gitlab[.]com, a été enregistré 17 jours avant my-github[.]com. Le chercheur Paul McCarty a indiqué qu'aucun lien direct d'infrastructure ne le reliait à GhostAction. Les deux domaines diffèrent par leurs bureaux d'enregistrement, leurs données d'enregistrement, leurs paires de serveurs de noms Cloudflare, leurs adresses IP, leurs systèmes autonomes et leur configuration DNS, et aucun certificat ni élément de compte commun n'a été retrouvé.
La seconde étape s'exécute lorsque les développeurs ouvrent un dépôt
Six jours après le blocage signalé du workflow, les chercheurs ont observé une seconde étape qui ajoute trois composants aux dépôts compromis.
Le premier est un fichier Visual Studio Code tasks.json configuré avec runOn: folderOpen. Cela provoque l'exécution automatique de la charge utile lorsque le projet est ouvert dans Visual Studio Code.
Le deuxième est public/fonts/fa-solid-400.woff2. Malgré l'extension .woff2 et le chemin qui évoque une police de caractères, OpenSourceMalware l'identifie comme un voleur d'identifiants ciblant :
- les clés AWS ;
- les jetons PyPI et npm ;
- les identifiants Git ;
- les identifiants de clusters Kubernetes ;
- les clés privées SSH ;
- les identifiants Anthropic Claude et Google Gemini.
Après la collecte des données, la charge utile installe une tâche cron qui exécute du code fourni par l'attaquant toutes les cinq minutes. Les données volées sont transmises au même serveur en HTTP non chiffré, sur le port 8080.
Le nom de ce fichier de police est également apparu dans la campagne PolinRider en janvier 2026. Ce recoupement ne suffit pas, à lui seul, à établir que GhostAction soit exploité par le même acteur ou par la Corée du Nord.
Le troisième composant est un autre workflow GitHub Actions destiné à fournir une voie d'exécution de secours si le voleur local ne s'exécute pas. Il conserve la logique principale du workflow d'origine, ajoute davantage de formats d'identifiants et, si sa requête HTTP POST échoue, peut déposer les résultats dans un gist GitHub secret.
Les noms de fichiers de workflows observés comprennent :
lint.ymlci-check.ymlbuild-check.ymlrepo-health.ymlaudit.ymlcode-review.ymltest-suite.ymlcache-cleanup.yml
OpenSourceMalware a également relevé des vagues de workflows de première étape les 10 et 12 octobre 2026, mais indique que ces vagues n'ont extrait aucun secret.
De nombreux dépôts exposés étaient inactifs
Parmi les 79 dépôts restés accessibles, 65 n'avaient reçu aucun commit depuis plus d'un an. L'un d'eux n'avait pas été modifié depuis plus de neuf ans.
L'inactivité ne neutralise pas les fichiers malveillants. Des développeurs ou des utilisateurs en aval qui clonent un projet touché et l'ouvrent dans Visual Studio Code pourraient encore déclencher la tâche folderOpen. Le nombre de dépôts disponibles ne dit pas non plus combien de personnes ont ouvert ces projets, ni combien d'identifiants ont été collectés avec succès.
Jenn Gile, cofondatrice d'OpenSourceMalware, a indiqué que l'opérateur reste non identifié. Elle estime que l'implémentation « suggère une expérience limitée ». Elle cite un filtre de variables d'environnement qui ne capture pas la plupart des clés d'API, une recherche dans le répertoire personnel susceptible d'expirer et de jeter ses résultats, ainsi que l'utilisation d'une seule adresse IP pour l'hameçonnage, l'exfiltration et le balayage d'internet.
Mesures de réponse pour les mainteneurs et les utilisateurs des dépôts
OpenSourceMalware recommande aux mainteneurs concernés de révoquer les accès et les jetons GitHub depuis un appareil sain, de changer leurs mots de passe et de vérifier leurs dépôts afin de repérer les fichiers non autorisés et les modifications de workflows.
Les identifiants accessibles aux workflows touchés doivent être renouvelés, y compris les secrets de dépôt et tous les identifiants cloud, de registre de paquets, SSH, Kubernetes ou de fournisseurs d'IA exposés à l'environnement du projet. Les mainteneurs doivent également prévenir les personnes ayant cloné les dépôts touchés afin qu'elles inspectent leurs systèmes et renouvellent leurs identifiants si nécessaire.
Les vérifications des dépôts doivent porter sur .github/workflows/, la configuration des tâches Visual Studio Code, le chemin public/fonts/fa-solid-400.woff2 et les noms de fichiers de workflows observés. Comme le voleur installe une tâche cron, la suppression des seuls fichiers malveillants du dépôt pourrait ne pas éliminer la persistance sur un système où la charge utile a déjà été exécutée.




