🔍 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/exec et time (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.comVT · URLhaus · ThreatFox
  • Domaines : freemyip.comVT · URLhaus · ThreatFox
  • SHA256 : dd9c0268c8944e6ddf90d4d0c81aa843785b7a9ee965faa635841ed9fc0ba086VT · MalwareBazaar
  • SHA256 : 387d7ea5ca733b1e7219c943f4b461877a8df0148adfef42b1538b6c398fbb41VT · MalwareBazaar
  • SHA1 : fd26f4ca4746ee390e22043a5e19ebf2b7fcd1f9VT · MalwareBazaar
  • MD5 : e3c6ce0440d9acd0f1cef1f0da3cdb5dVT · 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