Analisi

Miasma colpisce Red Hat: 33 pacchetti npm avvelenati per rubare credenziali cloud e segreti CI/CD

Dario Fadda 2 Giugno 2026

Trentatré pacchetti npm appartenenti al namespace ufficiale @redhat-cloud-services di Red Hat sono stati compromessi in quello che i ricercatori hanno battezzato la campagna Miasma — una variante evoluta del worm Shai-Hulud già visto colpire l’ecosistema npm. L’attacco ha già contaminato 309 repository GitHub e si è dimostrato capace di sottrarre credenziali di sviluppatori, segreti CI/CD, chiavi SSH e token cloud in modo silenzioso e automatizzato.

Contesto: il worm Shai-Hulud e la famiglia Miasma

Shai-Hulud è emerso come uno dei più sofisticati worm per l’ecosistema npm: combina esecuzione automatica al momento dell’installazione, furto di credenziali multi-target ed esfiltrazione crittografata. La campagna Miasma ne eredita interamente il modus operandi, con alcune innovazioni tecniche — in particolare l’abuso dell’infrastruttura di GitHub e dei servizi Anthropic per staging e fallback di esfiltrazione.

Secondo i ricercatori di Socket, che hanno identificato la campagna, l’attore avrebbe compromesso l’account GitHub di un dipendente Red Hat per pubblicare versioni avvelenate di pacchetti legittimi già ampiamente usati nella toolchain interna di Red Hat Cloud Services. Red Hat ha confermato la rimozione dei pacchetti, precisando che l’impatto era limitato agli strumenti di sviluppo interni — ma la contaminazione di 309 repository GitHub suggerisce una diffusione ben più ampia.

Catena di infezione: dall’npm install alla sottrazione silenziosa

Il meccanismo di innesco è elegante nella sua semplicità: il file package.json dei pacchetti compromessi contiene un hook "preinstall": "node index.js", il che significa che il payload malevolo viene eseguito automaticamente prima che l’installazione del pacchetto si completi — prima ancora che lo sviluppatore possa rendersi conto di cosa sta succedendo.

Il loader di primo stadio utilizza una serie di tecniche di offuscamento: array di char-code, trasformazioni ROT-style e blob cifrati con AES-128-GCM. Una volta deoffuscato, il codice decifra e deposita il payload principale in /tmp/p*.js, lo esegue attraverso Bun (runtime JavaScript ad alte prestazioni) — scaricando silenziosamente Bun da GitHub se non è presente sul sistema.

Il malware esegue quindi una raccolta sistematica di credenziali sensibili, includendo:

  • Segreti GitHub Actions e token npm (~/.npmrc)
  • Credenziali cloud AWS (~/.aws/credentials), GCP, Azure
  • Materiale Kubernetes e HashiCorp Vault
  • Chiavi SSH private (~/.ssh/id_rsa, ~/.ssh/id_ed25519)
  • Credenziali Git (~/.git-credentials, ~/.netrc)
  • Token GitHub CLI via gh auth token

I dati sottratti vengono codificati in Base64, cifrati e inviati via HTTPS POST a un endpoint di esfiltrazione. In caso di fallimento, il malware utilizza un meccanismo di fallback basato su commit GitHub, scrivendo file results–.json in un repository controllato dall’attore — una tecnica dead-drop che sfrutta l’infrastruttura legittima di GitHub per eludere il filtraggio del traffico di rete.

Dettagli tecnici distintivi

Tra gli elementi più caratteristici dell’attacco:

  • Anti-analisi per sistemi russi: il malware verifica la locale di sistema e modifica il comportamento su macchine con lingua russa, suggerendo un attore non russo o comunque attento a evitare incidenti diplomatici.
  • Esfiltrazione verso api.anthropic.com: il traffico di esfiltrazione è mascherato come chiamata alle API Anthropic sulla porta 443, rendendo il traffico praticamente indistinguibile da quello legittimo in ambienti che usano LLM.
  • Commit marker univoco: il codice include la stringa IfYouInvalidateThisTokenItWillNukeTheComputerOfTheOwner e il messaggio di commit Miasma: The Spreading Blight, probabilmente un segno di sfida agli analisti.
  • Tentativo di escalation su CI runner: il malware tenta esecuzione privilegiata via sudo su runner CI, espandendo l’accesso sugli ambienti di build.

Indicatori di compromissione (IoC)

# Pacchetti npm compromessi
@redhat-cloud-services/chrome (v2.3.1 e altre versioni)
@redhat-cloud-services/* (oltre 30 pacchetti nel namespace)

# Artefatti su filesystem
/tmp/p*.js                        # payload principale
/tmp/tmp.0987654321.lock          # file di lock del daemon
b.zip, bun, bun.exe               # runtime scaricato

# File di esfiltrazione fallback
results–.json
results/results–.json

# Endpoint di rete
api.anthropic[.]com:443/v1/api    # esfiltrazione mascherata
api.github[.]com/graphql          # fallback dead-drop
github[.]com/oven-sh/bun/releases/download/bun-v1.3.13/  # staging Bun

# Hash SHA-256
88896d478986d453f5da79b311de39d9b4b1bea95c21af1d8ef181b0f4e52fe9
21b6409a7b84446310daca5409ad6112ac60a1e4bef97736e53fff5f63bfdef4

Attribuzione e collegamento a TeamPCP

L’attribuzione rimane incerta. La disponibilità pubblica del tooling Shai-Hulud ha abbassato la soglia d’ingresso per più attori, rendendo difficile l’attribuzione univoca. I ricercatori notano tuttavia sovrapposizioni tattiche con il gruppo TeamPCP, già collegato ad attività su BreachForums, e con la campagna Mini Shai-Hulud documentata separatamente nello stesso periodo. La scelta di Red Hat come target — un vendor open-source con un ecosistema di sviluppatori ampio e credenziali cloud spesso ad alto privilegio — suggerisce un interesse specifico per l’accesso alle pipeline DevOps enterprise.

Cosa devono fare i difensori

Per i team di sicurezza che gestiscono ambienti con dipendenze npm, le azioni prioritarie sono:

  • Audit immediato di tutti i pacchetti @redhat-cloud-services/* installati nell’ultimo mese, verificando gli hash contro le versioni ufficiali ripristinate.
  • Rotazione preventiva di tutte le credenziali accessibili dagli ambienti di build: npm tokens, chiavi SSH, credenziali AWS/GCP/Azure, segreti GitHub Actions.
  • Blocco dei lifecycle hook npm in ambienti CI/CD tramite la configurazione ignore-scripts=true in .npmrc — questa misura da sola avrebbe impedito l’esecuzione automatica del payload.
  • Monitoraggio anomalo del traffico verso api.anthropic.com e api.github.com da processi node/bun inattesi.
  • Revisione degli hook preinstall in tutti i pacchetti npm di terze parti nel registro privato aziendale.

La campagna Miasma rappresenta un salto qualitativo nell’ingegneria degli attacchi supply chain npm: non si limita a iniettare payload semplici, ma costruisce un’intera infrastruttura di persistenza, esfiltrazione ridondante e anti-analisi che rende difficile sia il rilevamento che la remediation completa.

💬 [[ unisciti alla discussione! ]]


Questo è un blog del Fediverso: puoi trovare quindi questo articolo ovunque con @blog@insicurezzadigitale.com e ogni commento/risposta apparirà qui sotto.

Se vuoi commentare su Miasma colpisce Red Hat: 33 pacchetti npm avvelenati per rubare credenziali cloud e segreti CI/CD, utilizza la discussione sul Forum.
Condividi esempi, IOCs o tecniche di detection efficaci nel nostro 👉 forum community