🔍 Contexte
L’équipe de recherche de Socket a publié le 19 mai 2026 une analyse technique détaillée d’une attaque de chaîne d’approvisionnement ciblant l’écosystème Go. Le module malveillant github.com/shopsprint/decimal imite la bibliothèque légitime github.com/shopspring/decimal (38 634 importateurs connus), en ne différant que d’un seul caractère dans le nom du vendeur (shopsprint vs shopspring).
🗓️ Chronologie de l’attaque
Le module typosquat a été publié pour la première fois le 2017-11-08, avec sept versions non malveillantes servant de miroir fidèle de la bibliothèque légitime. Le 2023-08-19, deux versions ont été publiées à sept minutes d’intervalle :
- v1.3.2 (09:20:28 UTC) : correctifs légitimes copiés depuis l’upstream
- v1.3.3 (09:27:21 UTC) : introduction de la fonction
init()malveillante
Ce schéma dit “trust-then-poison” a permis une présence bénigne de ~6 ans suivie de ~33 mois de présence armée avant divulgation.
⚙️ Mécanisme technique
La version v1.3.3 ajoute dans decimal.go :
- Les imports
net,os/execettime(absents de la bibliothèque légitime) - Une fonction
init()qui lance une goroutine en arrière-plan au démarrage du processus - La goroutine interroge toutes les 5 minutes les enregistrements TXT DNS de
dnslog-cdn-images.freemyip.com - Chaque valeur TXT retournée est passée directement à
exec.Command(txt)et exécutée - Les sorties sont capturées et supprimées, sans aucun log visible
Une fonction main(){} vide et non fonctionnelle est également présente, interprétée comme un artefact de développement sloppy.
🌐 Infrastructure C2
- Domaine C2 : dnslog-cdn-images.freemyip.com (DDNS gratuit)
- L’enregistrement A pointe vers 8.8.8.8 (leurre) ; le payload transite exclusivement via les enregistrements TXT
- Le canal DNS TXT contourne la majorité des contrôles d’égress HTTP sur les postes développeurs
- VirusTotal a analysé le sous-domaine pour la première fois le 2024-08-07
💾 Persistance via Go Module Proxy
Bien que le dépôt GitHub et le compte propriétaire aient été supprimés (HTTP 404), proxy.golang.org continue de servir indéfiniment la version malveillante v1.3.3 conformément à la garantie de reproductibilité de Go. Le package reste accessible via go get et listé sur pkg.go.dev.
💥 Impact
Tout binaire important le module à v1.3.3 expose la machine hôte à une exécution de commandes arbitraires à la demande de l’opérateur, avec les privilèges du processus concerné. Sont potentiellement affectés : postes développeurs, runners CI/CD, services de production. La persistance est assurée par la dépendance elle-même, sans modification du système de fichiers.
📋 Type d’article
Il s’agit d’une publication de recherche à visée CTI, produite par Socket Threat Research Team, documentant une attaque de chaîne d’approvisionnement Go avec extraction complète des IOCs, diff de code malveillant, et mapping MITRE ATT&CK.
🧠 TTPs et IOCs détectés
TTP
- T1195.002 — Compromise Software Supply Chain (Initial Access)
- T1071.004 — Application Layer Protocol: DNS (Command and Control)
- T1059 — Command and Scripting Interpreter (Execution)
- T1583.001 — Acquire Infrastructure: Domains (Resource Development)
- T1572 — Protocol Tunneling (Command and Control)
- T1568 — Dynamic Resolution (Command and Control)
IOC
- Domaines :
dnslog-cdn-images.freemyip.com— VT · URLhaus · ThreatFox - Domaines :
freemyip.com— VT · URLhaus · ThreatFox - SHA256 :
dd9c0268c8944e6ddf90d4d0c81aa843785b7a9ee965faa635841ed9fc0ba086— VT · MalwareBazaar - SHA256 :
387d7ea5ca733b1e7219c943f4b461877a8df0148adfef42b1538b6c398fbb41— VT · MalwareBazaar - SHA1 :
fd26f4ca4746ee390e22043a5e19ebf2b7fcd1f9— VT · MalwareBazaar - MD5 :
e3c6ce0440d9acd0f1cef1f0da3cdb5d— VT · MalwareBazaar - Fichiers :
decimal.go
Malware / Outils
- shopsprint/decimal v1.3.3 DNS backdoor (backdoor)
🟢 Indice de vérification factuelle : 83/100 (haute)
- ✅ socket.dev — source reconnue (liste interne) (20pts)
- ✅ 20196 chars — texte complet (fulltext extrait) (15pts)
- ✅ 7 IOCs dont des hashes (15pts)
- ✅ 1/4 IOC(s) confirmé(s) (MalwareBazaar, ThreatFox, URLhaus, VirusTotal) (8pts)
- ✅ 6 TTPs MITRE identifiées (15pts)
- ✅ date extraite du HTML source (10pts)
- ⬜ aucun acteur de menace nommé (0pts)
- ⬜ pas de CVE à vérifier (0pts)
IOCs confirmés externellement :
freemyip.com(domain) → ThreatFox (Remcos)
🔗 Source originale : https://socket.dev/blog/popular-go-decimal-library-typosquat-dns-backdoor