// 1 ZERO-DAY · 1 CVE NELLE ULTIME 24H→
Attori DPRK hanno distribuito malware Go tramite provider Terraform nel HashiCorp Registry.

Attori della minaccia legati alla Corea del Nord hanno pubblicato provider Terraform malevoli nel HashiCorp Registry e moduli Go su siti falsi, estendendo la campagna Graphalgo da npm e PyPI a un vettore più vicino alle credenziali di produzione cloud. La scoperta, pubblicata il 22 settembre 2026 da Aikido, documenta un meccanismo di attivazione condizionale basato sull'hash SHA256 di variabili runtime e un doppio canale di comando e controllo che sfrutta blockchain Ethereum e Slack.

Punti chiave
  • Almeno due provider Terraform malevoli (gocommunity-io/dockerd, kreuzwenker/docker) e due moduli Go (gocommunity.io/orderedbtree, gogets.dev/btreex) sono stati pubblicati per distribuire malware Go, secondo il report di Aikido.
  • L'attivazione richiede che SHA256(containerName + networkID) corrisponda all'hash specifico b9966e3762e9a0d5d263b8cb3cca07294f81af9714d40ddf4628cb85d74e8ad5, che funge da chiave AES per decifrare il payload nascosto in un file .sqlite3 apparentemente innocuo.
  • Il doppio canale C2 combina uno smart contract su Arbitrum Sepolia (indirizzo 0xAD02b5cDE693529d3bdA0266299501ad0193036C) con workspace Slack dedicati, con comunicazione cifrata tramite scambio di chiavi effimere.
  • Il malware condivide infrastruttura con la campagna Graphalgo documentata da ReversingLabs a febbraio 2026: stessa chiave pubblica Ed25519, stessi indirizzi blockchain e stessi workspace Slack, secondo le evidence tecniche pubblicate.

Come funziona l'attivazione condizionale

Il provider malevolo kreuzwenker/docker è un typosquat del legittimo kreuzwerker/docker, che ha registrato circa 56 milioni di download. La differenza di una sola lettera nel nome espone gli utenti a un pacchetto che, all'apparenza, replica la funzionalità del provider ufficiale ma contiene codice aggiunto nel file resource_docker_container_funcs.go.

L'attivazione non è immediata: il malware calcola SHA256 della concatenazione di due variabili Terraform, containerName e networkID, e confronta il risultato con l'hash prefissato b9966e3762e9a0d5d263b8cb3cca07294f81af9714d40ddf4628cb85d74e8ad5. Solo quando il valore corrisponde, l'hash viene usato come chiave AES per decifrare il percorso del payload nascosto all'interno del file examples/resources/docker_container/import-resource.sqlite3.

Questa architettura rende inefficace la scansione statica: senza le variabili runtime corrette, il file .sqlite3 appare come dati di esempio legittimi e il codice malevolo resta inerte. Il malware è quindi progettato per attivarsi in ambienti specifici, presumibilmente quelli degli sviluppatori contattati tramite le campagne di social engineering "fake interview" tipiche degli operatori DPRK.

Il doppio canale C2: blockchain come dead drop, Slack per il controllo

Una volta attivato, il malware stabilisce due canali di comunicazione asincroni. Il primo è uno smart contract sulla rete di test Arbitrum Sepolia, indirizzo 0xAD02b5cDE693529d3bdA0266299501ad0193036C, usato come dead drop blockchain: l'attore inserisce comandi crittografati nella blockchain, dove rimangono accessibili ma non direttamente riconducibili a un server C2 tradizionale.

Il secondo canale sfrutta API Slack con bot token. Il check-in iniziale avviene nel canale frontend-devs del workspace portfolio-devs.slack.com; le comunicazioni successive migrano su portfolio-testers.slack.com nel canale qa-announcements. Il malware genera coppie di chiavi effimere e utilizza chiavi condivise per decifrare i messaggi destinati al proprio client, scartando quelli per altri endpoint infetti.

"The C2 mechanism is further indication that this malware is part of a targeted operation. The threat actor's ability to issue commands is bottlenecked because all clients consume all messages and no-op when they fail to decrypt messages intended for other clients" — Oliver Smith, Aikido

Il polling è misurato: ogni 3 secondi per la blockchain, ogni 10 secondi per Slack. Il canale qa-announcements conteneva 1240 messaggi cifrati dal 16 luglio 2026; il contratto blockchain aveva registrato 1402 transazioni dal 6 agosto 2026, secondo i dati di Aikido.

L'infrastruttura condivisa con Graphalgo e l'estensione a Go

Il malware è un port Go della campagna Graphalgo, documentata originariamente da ReversingLabs a febbraio 2026 su npm e PyPI. La continuità è verificata attraverso elementi concreti: la stessa chiave pubblica Ed25519 (302a300506032b656e032100bad013df6eec5d686f4cc8551e0a5c87a0135164bdd1dafb1c75141d1b526702), già riscontrata in payload npm da aprile 2026; gli stessi indirizzi smart contract; gli stessi workspace Slack.

Gli attori hanno costruito un ecosistema falso per sostenere la distribuzione: siti come gogets.dev e gocommunity.io simulano registry Go legittimi, con moduli che richiedono input specifici per l'attivazione. Il modulo gogets.dev/btreex, ad esempio, richiede un valore intero price preciso e usa commit backdatati a novembre 2025 per apparire consolidato.

Nei messaggi di check-in sono stati identificati 18 hostname unici: 3 Windows, 5 Linux, 10 macOS. Il primo messaggio nel canale Slack è datato 16 luglio 2026, da un dispositivo Windows con hostname Frank e username Frank1.

Cosa fare adesso

  • Ispezionare i lock file .terraform.lock.hcl: verificare che i provider dichiarati corrispondano esattamente a nomi ufficiali, senza typosquatting di una sola lettera come kreuzwenker al posto di kreuzwerker.
  • Vincolare i download di provider a registry approvati e, dove possibile, a mirror interni verificati, riducendo la superficie di esposizione a pacchetti pubblicati direttamente nel HashiCorp Registry.
  • Implementare il pinning di hash per i provider Terraform, confrontando sistematicamente gli hash attesi con quelli effettivamente scaricati nel workflow CI/CD.
  • Monitorare il traffico in uscita verso endpoint Slack API non autorizzati e verso reti blockchain di test come Arbitrum Sepolia in ambienti di build e produzione.

Questioni aperte

Il report di Aikido e le citazioni di Karlo Zanki per Socket convergono nel collegare l'operazione agli attori DPRK, ma con gradazioni diverse. Zanki, citato da The Hacker News, ha affermato: "Troppo presto per concludere con sicurezza che attori DPRK usino i registry Terraform come nuova tattica, ma la presenza in due campagne separate rende la coincidenza meno probabile".

Non è noto il metodo di pubblicazione nel HashiCorp Registry (account compromesso o creato ex novo), né quanti download abbiano effettivamente ricevuto i provider malevoli prima della rimozione.

Il payload finale cifrato, recuperato ma non decifrato da SafeDep/JFrog, mantiene incerta la funzionalità esatta dello stadio successivo all'attivazione.

L'estensione dai package manager tradizionali (npm, PyPI) al HashiCorp Registry segna un escalation significativa: i provider Terraform operano con privilegi elevati sull'infrastruttura cloud, con accesso diretto a credenziali AWS e stati di deployment. L'attivazione condizionale, in questo contesto, non è una complicazione tecnica superflua: è il requisito che permette al malware di attraversare intere pipeline di sicurezza senza lasciare tracce analizzabili staticamente.


Fonti

Fonti e riferimenti
  1. thehackernews.com
  2. aikido.dev
  3. gbhackers.com
  4. kudelskisecurity.com