Hades infetta PyPI: 37 pacchetti rubano segreti CI/CD senza import, sfruttando setup.pth e Bun
Featured

Hades infetta PyPI: 37 pacchetti rubano segreti CI/CD senza import, sfruttando setup.pth e Bun

La campagna Hades rappresenta una nuova ondata di attacchi alla supply chain software che colpisce il registro PyPI, con 37 wheel malevoli distribuite attraverso 19 pacchetti. Questo filone deriva dalle precedenti varianti Mini Shai Hulud e Miasma e continua a puntare sui sistemi degli sviluppatori e sulle pipeline CI CD, sfruttando canali considerati affidabili per introdurre codice dannoso già durante le fasi iniziali di installazione.

Il meccanismo chiave osservato in Hades è la presenza di un file setup.pth che viene elaborato automaticamente dal modulo site di Python all’avvio dell’interprete. In pratica, dopo l’installazione del pacchetto compromesso, il payload può essere eseguito senza che la vittima importi mai la libreria. Questa caratteristica rende la minaccia particolarmente insidiosa in ambienti dove le dipendenze vengono installate in modo automatizzato, ad esempio su runner di GitHub Actions o in container di build.

Una volta attivato, il malware scarica e installa Bun, un runtime JavaScript, e lo utilizza per eseguire un payload offuscato in JavaScript. La scelta di Bun permette agli attaccanti di far girare codice JavaScript anche su sistemi dove Node.js non è presente, riducendo attriti e controlli tradizionali legati ai package manager. Prima di procedere, il codice effettua anche verifiche di ambiente, includendo controlli legati alla locale russa.

L’obiettivo principale è il furto di credenziali e segreti di sviluppo. Tra i dati presi di mira rientrano token e configurazioni collegati a GitHub, npm, PyPI e RubyGems, oltre a servizi cloud e DevOps come AWS, GCP, Azure, Kubernetes, Docker, Vault e JFrog. Vengono cercati anche file e tracce locali ad alto valore come chiavi SSH, shell history, file env, configurazioni npmrc e pypirc e credenziali accessibili ai runner.

Un ulteriore elemento di evoluzione è la capacità di depistare strumenti di analisi basati su modelli linguistici tramite prompt injection in chiaro, con l’intento di far classificare il pacchetto come sicuro. In alcune varianti, l’entry point è inserito direttamente in init.py tramite un import hook offuscato. Il malware interroga inoltre contenuti su GitHub per recuperare stringhe Base64 e componenti aggiuntivi, inclusi dropper in Python.

Tra le funzioni avanzate figurano propagazione laterale via SSH o SCP, abuso di configurazioni OIDC per pubblicare pacchetti trojanizzati, estrazione di segreti da runner CI, backdoor di workspace per attivazioni tramite IDE o assistenti AI e un servizio di persistenza con logica distruttiva in caso di revoca del token.

We use cookies

Utilizziamo i cookie sul nostro sito Web. Alcuni di essi sono essenziali per il funzionamento del sito, mentre altri ci aiutano a migliorare questo sito e l'esperienza dell'utente (cookie di tracciamento). Puoi decidere tu stesso se consentire o meno i cookie. Ti preghiamo di notare che se li rifiuti, potresti non essere in grado di utilizzare tutte le funzionalità del sito.