Ce qui se passe
Aikido a repéré un malware écrit en Go distribué par deux fournisseurs Terraform et deux modules Go. C'est, selon Aikido, la première fois que le registre public de HashiCorp sert à diffuser une charge malveillante.
| Type | Nom | Téléchargements |
|---|---|---|
| Fournisseur Terraform | kreuzwenker/docker |
1 449 |
| Fournisseur Terraform | gocommunity-io/dockerd |
222 |
| Module Go | gocommunity.io/orderedbtree |
— |
| Module Go | gogets.dev/btreex |
— |
Remarque de cette fiche : kreuzwenker n'est qu'à une lettre de
kreuzwerker/docker, le fournisseur communautaire qu'utilisent la plupart des
configurations Terraform qui pilotent Docker. Une faute de frappe dans un bloc
required_providers suffit.
Pourquoi un fournisseur est une cible de choix
Un fournisseur Terraform est un binaire : terraform init le télécharge, puis
Terraform l'exécute à chaque plan et apply, avec l'environnement de la
machine. Sur un poste d'ingénieur ou dans une CI d'infrastructure, cet
environnement contient les identifiants cloud de production. Aikido le résume
ainsi : c'est un chemin plus direct vers ces identifiants que npm ou PyPI.
Ce que fait l'implant
C'est un portage en Go du malware déjà vu sur npm, avec la même infrastructure.
- Il relève le matériel, le système et le nom d'hôte, puis envoie le tout dans un canal Slack contrôlé par l'attaquant.
- Il génère une paire de clés éphémère, combinée à deux clés publiques de l'opérateur pour chiffrer ses échanges.
- Il reçoit ses ordres par deux canaux : le jeton de bot Slack, et un contrat sur le réseau de test Arbitrum Sepolia, interrogé toutes les 3 secondes. Les commandes s'exécutent en Go ou en JavaScript.
- La charge finale est chiffrée par cryptographie asymétrique : personne ne sait encore ce qu'elle fait.
La campagne derrière
Les chercheurs rattachent ces paquets à Graphalgo, documentée par ReversingLabs en février et attribuée à la Corée du Nord : de fausses entreprises Web3 contactent des développeurs sur LinkedIn, Facebook ou des forums, puis leur confient un exercice de code dont une dépendance est piégée.
La même semaine, le malware est apparu dans des paquets npm, dont la liste
publiée n'est que partielle : indexed-btree, mathsbase, mathmain,
math-universe, modern-events, quick-events, crypto-hasher,
events-router, sort-btree, graphcore-js, graphlib-js. Les trois clones
de mathjs faisaient l'objet de notre fiche du 22 septembre.
Ce n'est pas non plus le premier usage de Terraform par ces groupes : SentinelOne a décrit la semaine dernière des fichiers de verrouillage Terraform détournés vers des registres contrôlés par l'attaquant. Pour Karlo Zanki (Socket), il est trop tôt pour parler de nouvelle tactique, mais deux campagnes en si peu de temps rendent la coïncidence peu probable.
Dans le même article
Le chargeur GHAPPIER a été publié le 9 septembre via un paquet npm
légitime compromis, @dforge-core/dforge-mcp en version 0.2.21, resté en
ligne 35 minutes et 38 secondes avant la version saine 0.2.22. CloudSEK
l'a retrouvé dans 65 dépôts de 22 comptes. Une variante lit l'adresse de son
serveur, 193.247.144.38, dans un portefeuille de l'attaquant.
Ce qu'il faut faire
# Fournisseurs piégés, déclarés ou verrouillés
grep -rnE 'kreuzwenker/docker|gocommunity-io/dockerd' --include='*.tf' --include='.terraform.lock.hcl' .
# Modules Go piégés
grep -rnE 'gocommunity\.io/orderedbtree|gogets\.dev/btreex' --include='go.mod' --include='go.sum' .
# Paquets npm de la même campagne (liste partielle)
grep -nwE 'indexed-btree|mathsbase|mathmain|math-universe|modern-events|quick-events|crypto-hasher|events-router|sort-btree|graphcore-js|graphlib-js|dforge-mcp' package-lock.json pnpm-lock.yaml yarn.lock 2>/dev/nullRelisez l'espace de noms de chaque source dans required_providers, et
versionnez .terraform.lock.hcl, qui fige les empreintes des fournisseurs.
Un exercice de recrutement se lance dans une machine jetable, sans aucun
identifiant.
Source : Attackers Use Malicious Terraform Providers to Deliver Go Malware via HashiCorp Registry, The Hacker News, 23 septembre 2026, d'après Aikido, Socket, SafeDep, JFrog et CloudSEK.