Ce qui se passe
GhostAction, la campagne de chaîne d'approvisionnement qui poussait un faux workflow d'audit dans des dépôts GitHub pour en aspirer les secrets (fiche du 10 octobre), change de méthode. D'après OpenSourceMalware, GitHub empêche le workflow malveillant de s'exécuter depuis le 9 octobre, et les vagues des 10 et 12 octobre n'ont extrait aucun secret. Les attaquants ont alors ajouté deux choses : l'hameçonnage de mainteneurs, et un second étage qui n'a plus besoin de GitHub pour tourner.
Premier volet : le faux écran de connexion
Le domaine my-github[.]com, enregistré le 9 octobre 2026, pointe vers
193.32.204.199, la même adresse que le point d'exfiltration des secrets de la
campagne. Il a servi à envoyer à un mainteneur un faux message d'alerte GitHub
(expéditeur noreply@my-github[.]com, connexion suspecte depuis Moscou).
La page fait office de proxy inverse : elle capte le mot de passe et le code à deux
facteurs, puis un script injecté déclenche seul le « device flow » OAuth de GitHub
avec les droits repo, workflow et read:org. Il récupère les
formulaires de /login/device, remplit le code et coche l'autorisation dans la
session déjà ouverte : la victime ne tape rien et n'approuve rien consciemment. Le
jeton obtenu permet de lister les dépôts et d'y écrire des fichiers sous
.github/workflows/.
Second volet : trois fichiers qui survivent au nettoyage
Le dispositif s'inspire de campagnes nord-coréennes. Il pousse trois fichiers dans le dépôt :
- un
tasks.jsonde VS Code avec le déclencheurrunOn: folderOpen, qui lance la charge à l'ouverture du dossier ; public/fonts/fa-solid-400.woff2, qui n'est pas une police mais un voleur de secrets visant clés AWS, jetons PyPI et npm, identifiants Git, accès Kubernetes, clés SSH privées et clés d'API Anthropic et Google ;- un second workflow, au cas où le voleur ne tourne pas, nommé
lint.yml,ci-check.yml,build-check.yml,repo-health.yml,audit.yml,code-review.yml,test-suite.ymloucache-cleanup.yml.
Le voleur installe aussi une tâche cron toutes les cinq minutes qui exécute du code fourni par l'attaquant, et envoie ses prises en HTTP clair sur le port 8080. OpenSourceMalware compte 94 dépôts touchés, appartenant à 66 propriétaires ; 15 ont disparu, été renommés ou passés en privé, et 65 des 79 restants n'avaient pas reçu de commit depuis plus d'un an.
La limite
Le blocage de GitHub n'a pas prouvé qu'il avait provoqué ce changement : la société
d'analyse dit seulement que l'opérateur est passé « à un endroit que les contrôles de
GitHub n'atteignent pas ». Le domaine my-gitlab[.]com, enregistré dix-sept
jours plus tôt, suit le même modèle de nom mais n'est relié ni par l'infrastructure ni
par un artefact à GhostAction. L'opérateur est inconnu ; Jenn Gile (OpenSourceMalware)
juge son travail peu expérimenté : le filtre des variables d'environnement rate la
plupart des clés, et une seule adresse sert à tout, ce qui permet de retrouver les
infections en la cherchant.
Que faire
Chercher
193.32.204.199etmy-github[.]comdans vos journaux réseau et vos mails.Dans vos dépôts, vérifier
.vscode/tasks.json,public/fonts/et.github/workflows/:Terminal git ls-files | grep -E 'fa-solid-400\.woff2$|\.vscode/tasks\.json$' git log --all --oneline -S'193.32.204.199'Si un dépôt est touché : révoquer l'accès GitHub et les jetons depuis une machine saine, changer les mots de passe, faire tourner chaque secret que les workflows atteignent, et prévenir ceux qui ont cloné le dépôt.
Ne pas faire confiance à une alerte de connexion reçue par e-mail : ouvrir GitHub soi-même, et relire la liste des applications OAuth autorisées.
Source : The Hacker News, 19 octobre 2026, d'après l'analyse d'OpenSourceMalware. Source en anglais.