Hacker plaatst malware in populaire JavaScript-bibliotheek

Een hacker is erin geslaagd om code te plaatsen in een populaire JavaScript-bibliotheek die bitcoin steelt. Het gaat om een bibliotheek waar veel bedrijven gebruik van maken. De impact zou dan ook potentieel erg groot kunnen zijn, al is daar nog enige onduidelijkheid over.

De hack omvatte het plaatsen van code in Event-Stream, een JavaScript npm-pakket, dat het mogelijk maakt om te werken met Node.js streeamingdata op GitHub. De bedoeling van de code is om bitcoinbetalingen te onderscheppen, die belopen via de BitPay open-source bitcoin wallet Copay. Dat meldt de site Ars Technica vandaag.

Toolkit met malware

Event-Stream is een toolkit die ontworpen is om streams makkelijk op te zetten en werd ontwikkeld door Dominic Tarr. Hij stopte op een gegeven moment daarmee, alhoewel de open-source software wel erg populair was. Drie maanden geleden droeg Tarr de managementsrechten op Event-Stream over aan iemand met de naam Right9ctrl, en op dat moment werd de code geïnfecteerd.

Op 9 september publiceerde men versie 3.3.6 van de software. Daarin zat een overbodige module met de naam flatmap-stream. Dat lijkt een test te zijn geweest, om te achterhalen of het iemand zou opvallen als er een nieuwe module in de software zou zitten. Op 5 oktober werd de flatmap-module vervolgens gewijzigd naar malware. Die probeerde bitcoin wallets te stelen en de balans daarvan over te zetten naar een server in Kuala Lumpur.

Open-source risico’s

Op 20 november ontdekten ontwikkelaars de malware. Toen plaatste iemand op GitHub vragen over de nieuwe module en dan vooral de functionaliteit daarvan. Op die manier werd ontdekt dat er malware in de Event-Stream software zat.

Dat er malware in de open-source software zit, zal veiligheidsexperts sterken in hun waarschuwingen rond het gebruik van open-source software in grote projecten. GitHub heeft al eens te maken gehad met dit soort problemen. Dat komt mede doordat er weinig controlemechanismes zijn als mensen hun projecten willen overdragen.