La storia della rimozione di tre pacchetti dannosi dal repository NPM, che copiava il codice della libreria UAParser.js, ha preso una piega inaspettata: ignoti aggressori hanno preso il controllo dell'account dell'autore del progetto UAParser.js e hanno rilasciato aggiornamenti contenenti codice per il furto di password e mining di criptovalute.
Il problema è che la libreria UAParser.js, che offre funzionalità per l'analisi dell'intestazione HTTP User-Agent, conta circa 8 milioni di download a settimana ed è utilizzata come dipendenza in oltre 1200 progetti. È stato dichiarato che UAParser.js viene utilizzato in progetti di aziende come Microsoft, Amazon, Facebook, Slack, Discord, Mozilla, Apple, ProtonMail, Autodesk, Reddit, Vimeo, Uber, Dell, IBM, Siemens, Oracle, HP e Verizon.
L'attacco è stato eseguito attraverso il furto dell'account dello sviluppatore del progetto, che si è accorto di qualcosa di strano dopo un'improvvisa ondata di spam arrivata nella sua casella di posta. Non viene riferito come sia stato compromesso l'account dello sviluppatore. Gli aggressori hanno creato le versioni 0.7.29, 0.8.0 e 1.0.0, inserendo codice malevolo al loro interno. Nel giro di poche ore, gli sviluppatori hanno ripreso il controllo del progetto e hanno creato aggiornamenti 0.7.30, 0.8.1 e 1.0.1 per risolvere il problema. Le versioni dannose sono state pubblicate solo come pacchetti nel repository NPM. Il repository Git del progetto su GitHub non è stato colpito. A tutti gli utenti che hanno installato le versioni problematiche, se trovano in Linux/macOS il file jsextension, e in Windows i file jsextension.exe e create.dll, si raccomanda di considerare il sistema compromesso.
Le modifiche dannose aggiunte somigliavano a quelle precedentemente proposte nei cloni di UAParser.js, che apparentemente erano state rilasciate per testare la funzionalità prima di un attacco su larga scala al progetto principale. Un file eseguibile jsextension veniva caricato e avviato sul sistema dell'utente da un host esterno, scelto in base alla piattaforma dell'utente e supportava il funzionamento su Linux, macOS e Windows. Per la piattaforma Windows, oltre al programma per il mining della criptovaluta Monero (veniva utilizzato il miner XMRig), gli aggressori hanno anche organizzato l'inserimento della libreria create.dll per intercettare le password e inviarle a un host esterno.
Il codice per il caricamento è stato aggiunto al file preinstall.sh, in cui è stata inserita la riga IP=$(curl -k https://freegeoip.app/xml/ | grep 'RU|UA|BY|KZ') if [ -z "$IP" ] … caricamento e avvio del file eseguibile fi
Come si evince dal codice, lo script controllava inizialmente l'indirizzo IP nel servizio freegeoip.app e non avviava l'applicazione malevola per gli utenti di Russia, Ucraina, Bielorussia e Kazakistan.
Fonte: opennet.ru
