Ricevi DeafLetter
Una selezione settimanale di segnali, vulnerabilità e guide. Gli avvisi critici restano facoltativi.
Puoi cancellarti in ogni momento. Privacy policy.
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.
- 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
- https://thehackernews.com/2026/09/attackers-use-malicious-terraform.html
- https://www.aikido.dev/blog/graphalgo-terraform-go-modules
- https://gbhackers.com/terraform-lock-files/
- https://kudelskisecurity.com/research/how-dprks-contagious-interview-campaign-targets-developers
- https://thehackernews.com/2026/02/lazarus-campaign-plants-malicious.html
- https://thehackernews.com/2026/04/new-wave-of-dprk-attacks-uses-ai.html#graphalgo-uses-fake-companies-to-drop-rat
- https://thehackernews.com/2026/09/malicious-npm-package-indexed-btree-hid.html
- https://thehackernews.com/2026/09/jade-sleet-linked-to-indian-it-provider.html
Ricevi DeafLetter
Una selezione settimanale di segnali, vulnerabilità e guide. Gli avvisi critici restano facoltativi.
Puoi cancellarti in ogni momento. Privacy policy.