Un hacker a obtinut in mod legitim acces la o librarie populara JavaScript si a injectat un malware pentru a fura fondurile Bitcoin si Bitcoin Cash stocate in aplicatiile wallet ale BitPay Copay.
Prezenta acestor linii de cod a fost identificata saptamana trecuta, dar numai astazi cei responsabili au reusit sa inteleaga ce face de fapt acest malware bine ascuns.
Libraria de incarcare a codului este denumita Event-Stream, un pachet JavaScript npm folosit pentru a lucra cu date de streaming Node.js.
Aceasta este o librarie JavaScript extrem de populara, cu peste doua milioane de descarcari saptamanale pe npm.org, dar cu aproximativ trei luni in urma, autorul sau initial, datorita lipsei de timp si interes, a inmanat dezvoltarea acesteia unui alt programator numit Right9ctrl.
Potrivit unui utilizator atent, care a vazut saptamana trecuta probleme cu Event-Stream, Right9ctrl a umplut imediat libraria cu linii de cod rau-intentionate.
Right9ctrl a lansat Event-Stream 3.3.6 care continea un nou fisier de dependenta pentru libraria Flatmap-Stream v0.1.1. Libraria Flatmap-Stream v0.1.1 este locul in care exista codul daunator.
Potrivit utilizatorilor de pe Twitter, GitHub si Hacker News, acest malware ramane latent pana cand este folosit in interiorul codului sursa al Copay, o aplicatie de tip desktop si mobile wallet dezvoltata de platforma de plata Bitcoin BitPay.
Odata ce malware-ul a fost compilat si expediat in versiunea corupta a aplicatiei Copay wallet, acesta va fura informatiile utilizatorilor, inclusiv cheile private, si le va trimite pe adresa URL copayapi.host, portul 8080.
Hackerul foloseste aceste informatii pentru a goli portofelele virtuale ale victimelor. Intr-un post de blog, echipa Copay a declarat ca toate versiunile intre 5.0.1 si 5.1.0 au fost oficial considerate infectate si le-a cerut utilizatorilor sa isi actualizeze aplicatia la versiunea 5.2.0 sau mai tarziu.
Administratorii depozitului de pachete JavaScript de la npm.org au intervenit si au scos libraria Flatmap-Stream de pe site-ul lor, facand-o inaccesibila pentru toate proiectele in care aceasta a fost incarcata prin tool-ul de instalare pachete npm.
Event-Stream v3.3.6 a fost de asemenea scos de pe npm.org, dar biblioteca Event-Stream este inca disponibila. Acest lucru se datoreaza faptului ca Right9ctrl, in incercarea de a-si ascunde codul malware, a lansat versiuni ulterioare de Event-Stream care nu contineau niciun cod rau intentionat.
Administratorii de proiecte care utilizeaza aceste doua biblioteci sunt sfatuiti sa isi actualizeze arborii de dependenta la cea mai recenta versiune disponibila -Event-Stream versiunea 4.0.1. Acest link contine o lista a tuturor celor peste 3900 de pachete JavaScript npm unde libraria Event-Stream este incarcata direct sau indirect.
Actiualizarea/stergerea manuala este necesara dat fiind faptul ca unele proiecte sunt configurate pentru a retine toate fisierele de dependenta la nivel local si nu pot declansa eroarea obisnuita atunci cand incercati sa descarcati un pachet npm inexistent de la npm.org in vederea construirii unei noi versiuni de proiect.
Aceasta nu este prima problema de securitate JavaScript / npm din ultimii ani. In luna iulie a acestui an, un hacker a compromis biblioteca ESLint cu un malware conceput pentru a fura acreditarile npm ale altor dezvoltatori.
In mai 2018, un hacker a incercat sa ascunda un malware intr-un alt pachet npm popular numit getcookies.
In august 2017, echipa npm a eliminat 38 de pachete JavaScript npm care au fost descoperite furand variabilele de mediu de la alte proiecte, in incercarea de a colecta informatii sensibile despre proiecte, cum ar fi parole sau chei API.