I ricercatori di sicurezza hanno identificato un'operazione malware su npm che aggira le più recenti protezioni in fase di installazione collocando le proprie funzionalità dannose all'interno del normale codice del pacchetto, eseguito solo dopo che un'applicazione inizia a utilizzare la libreria.
La campagna è incentrata su un pacchetto denominato indexed-btree, che secondo i ricercatori di Checkmarx era progettato per assomigliare al progetto legittimo sorted-btree. Il pacchetto avrebbe accumulato circa 2 milioni di download settimanali prima della sua rimozione o dell'avvio delle indagini, a dimostrazione della potenziale portata del typosquatting e delle dipendenze sosia nelle supply chain del software.
Il trigger a runtime aggira i controlli sugli script del ciclo di vita
I recenti controlli di sicurezza di npm limitano gli script del ciclo di vita delle dipendenze, inclusi gli hook preinstall, install e postinstall, a meno che gli utenti non li approvino esplicitamente. Tali misure mirano a ridurre il rischio che codice dannoso venga eseguito non appena un pacchetto viene installato.
Secondo Checkmarx, il pacchetto dannoso non utilizzava tali hook. Il suo loader era invece incorporato nella funzione BTree.prototype.set() della libreria. Il codice viene attivato durante la normale attività a runtime quando il metodo è chiamato con una particolare chiave, consentendo al pacchetto di apparire innocuo durante l'installazione e di eludere potenzialmente gli scanner incentrati sugli script del ciclo di vita.
Una volta attivato, il malware può raccogliere informazioni sul dispositivo e sul sistema, quali hostname, architettura del processore, memoria, uptime e dettagli della CPU. I ricercatori hanno affermato che i dati potrebbero essere inviati tramite infrastrutture Slack e Telegram hardcoded.
Secondo quanto riportato, il payload utilizza anche uno smart contract della testnet Ethereum Sepolia come parte del proprio processo di comando e controllo. Recupera le informazioni necessarie per derivare una chiave di crittografia, quindi decifra un payload di fase successiva. Checkmarx ha dichiarato che il malware include funzionalità di pulizia in grado di eliminare file e rimuovere il trigger iniettato quando gli operatori decidono di concludere un'operazione.
Identificato un cluster più ampio di pacchetti
I ricercatori hanno collegato nove pacchetti npm aggiuntivi alla stessa attività, tra cui btree-core, ordered-kv-index, btree-leaderboard, priority-slot-queue e btree-range-store. Molti presentavano conteggi di download considerevoli. L'operazione utilizzava inoltre una presenza GitHub curata e dall'aspetto professionale, inclusi un profilo sviluppatore accuratamente predisposto e una cronologia dei commit apparentemente falsificata, per rafforzarne la legittimità.
Gli sviluppatori dovrebbero esaminare gli inventari delle dipendenze alla ricerca dei nomi dei pacchetti identificati, ruotare le credenziali potenzialmente esposte e, ove appropriato, ricostruire gli ambienti di sviluppo interessati a partire da backup affidabili. L'incidente evidenzia inoltre la necessità di monitoraggio comportamentale e revisione del codice che vadano oltre la sola scansione in fase di installazione.
