Onderzoekers hebben nog eens 17 kwaadaardige pakketten gevonden in een open source repository, aangezien het gebruik van dergelijke repositories om malware te verspreiden blijft floreren.
Deze keer werd de kwaadaardige code gevonden in NPM, waar 11 miljoen ontwikkelaars meer dan 1 miljoen pakketten met elkaar verhandelen. Veel van de 17 kwaadaardige pakketten lijken te zijn verspreid door verschillende bedreigingsactoren die verschillende technieken en inspanningen gebruikten om ontwikkelaars te misleiden om kwaadaardige waren te downloaden in plaats van de goedaardige die bedoeld waren.
Deze laatste ontdekking zet een trend voort die een paar jaar geleden voor het eerst werd opgemerkt, waarbij onverlaten informatiestelers, keyloggers of andere soorten malware sluipen in pakketten die beschikbaar zijn in NPM, RubyGems, PyPi of een andere repository. In veel gevallen heeft het kwaadaardige pakket een naam die een enkele letter verschilt van een legitiem pakket. Vaak bevat het kwaadaardige pakket dezelfde code en functionaliteit als het pakket dat wordt nagebootst en voegt het verborgen code toe die extra snode acties uitvoert.
Een rijpe aanvalsvector
“We zijn getuige van een recent spervuur van kwaadaardige software die wordt gehost en geleverd via open-source softwarerepositories,” JFrog-onderzoekers Andrey Polkovnychenko en Shachar Menashe schreef op woensdag. “Openbare repositories zijn een handig instrument geworden voor malwaredistributie: de server van de repository is een vertrouwde bron en communicatie ermee wekt geen verdenking van antivirus of firewall. Bovendien biedt het installatiegemak via automatiseringstools zoals de npm-client een rijpe aanvalsvector.”
De meeste van de door JFrog gemarkeerde pakketten hebben inloggegevens of andere informatie voor Discord-servers gestolen. Discord is een populair platform geworden voor mensen om te communiceren via tekst, spraak en video. Gecompromitteerde servers kunnen worden gebruikt als commando- en controlekanalen voor botnets of als proxy bij het downloaden van gegevens van een gehackte server. Sommige pakketten hebben creditcardgegevens gestolen die zijn gekoppeld aan gehackte Discord-accounts.
Twee pakketten – discord-lofy en discord-selfbot-v14 – kwamen van een auteur die de naam davisousa gebruikte. Ze doen zich voor als modificaties van de populaire legitieme bibliotheek discord.js, die interactie met de Discord API mogelijk maakt. De malware neemt de originele discord.js-bibliotheek als basis en injecteert vervolgens verduisterde kwaadaardige code in een van de pakketbestanden.
De JFrog-onderzoekers schreven:
De versluierde versie van de code is enorm: meer dan 4.000 regels onleesbare code, die elke mogelijke methode van verduistering bevat: verminkte variabelenamen, versleutelde strings, code-flattening en gereflecteerde functieaanroepen:
Door handmatige analyse en scripting waren we in staat om het pakket te ontmaskeren en te onthullen dat de uiteindelijke payload vrij eenvoudig is – de payload herhaalt eenvoudigweg de lokale opslagmappen van bekende browsers (en Discord-specifieke mappen) en zoekt ze vervolgens naar strings ziet eruit als een Discord-token door een reguliere expressie te gebruiken. Elk gevonden token wordt teruggestuurd via HTTP POST naar de hardcoded server https://aba45cf.glitch.me/polarlindo.
Een ander pakket met de naam fix-error beweerde fouten in een onenigheid “selfbot” te herstellen. Het bevatte ook kwaadaardige code die was verdoezeld, maar in dit geval was het veel gemakkelijker voor de onderzoekers om te ontmaskeren. De onderzoekers stelden al snel vast dat de verborgen code een gestolen versie was van de… PirateStealer, een app die creditcardgegevens, inloggegevens en andere privégegevens steelt die zijn opgeslagen in een Discord-client. Het werkt door kwaadaardige Javascript-code in de Discord-client te injecteren. De code bespioneert vervolgens de gebruiker en stuurt de gestolen informatie naar een hardcoded adres.
Een derde voorbeeld is prerequests-xcode, een pakket dat trojan-functionaliteit voor externe toegang bevat. De onderzoekers schreven:
Bij het inspecteren van de code van het pakket, hebben we vastgesteld dat het een Node.JS-poort van bevat
DiscordRAT(oorspronkelijk geschreven in Python) die een aanvaller volledige controle geeft over de machine van het slachtoffer. De malware wordt versluierd met de populaire online tool obfuscator.io, maar in dit geval is het voldoende om de lijst met beschikbare commando’s te bekijken om de functionaliteit van de RAT te begrijpen (letterlijk gekopieerd).
De volledige lijst met pakketten is:
Pakket | Versie | Laadvermogen | infectie methode: |
prerequests-xcode | 1.0.4 | Trojaans paard voor toegang op afstand (RAT) | Onbekend |
discord-selfbot-v14 | 12.0.3 | Discord token grabber | Typosquatting/Trojan (discord.js) |
onenigheid-lofy | 11.5.1 | Discord token grabber | Typosquatting/Trojan (discord.js) |
discordsysteem | 11.5.1 | Discord token grabber | Typosquatting/Trojan (discord.js) |
onenigheid-vilao | 1.0.0 | Discord token grabber | Typosquatting/Trojan (discord.js) |
fout oplossen | 1.0.0 | PirateStealer (Discord-malware) | Trojaans |
wafer-bind | 1.1.2 | Omgevingsvariabele stealer | Typosquatting (wafel-*) |
wafer-autocomplete | 1.25.0 | Omgevingsvariabele stealer | Typosquatting (wafel-*) |
wafelbaken | 1.3.3 | Omgevingsvariabele stealer | Typosquatting (wafel-*) |
wafel-caas | 1.14.20 | Omgevingsvariabele stealer | Typosquatting (wafel-*) |
wafer-toggle | 1.15.4 | Omgevingsvariabele stealer | Typosquatting (wafel-*) |
wafer-geolocatie | 1.2.10 | Omgevingsvariabele stealer | Typosquatting (wafel-*) |
wafer-afbeelding | 1.2.2 | Omgevingsvariabele stealer | Typosquatting (wafel-*) |
wafelvorm | 1.30.1 | Omgevingsvariabele stealer | Typosquatting (wafel-*) |
wafel-lichtbak | 1.5.4 | Omgevingsvariabele stealer | Typosquatting (wafel-*) |
octavius-publiek | 1.836.609 | Omgevingsvariabele stealer | Typosquatting (octavius) |
mrg-message-broker | 9998.987.376 | Omgevingsvariabele stealer | afhankelijkheid verwarring |
Zoals eerder opgemerkt, is NPM niet de enige open source-repository die wordt geïnfiltreerd met kwaadaardige pakketten. De PyPi-repository voor Python heeft zijn aandeel in met malware beladen pakketten gezien, net als RubyGems.
Mensen die open source-pakketten downloaden, moeten extra voorzichtig zijn om ervoor te zorgen dat het item dat ze downloaden legitiem is en geen malware die zich voordoet als iets legitiems. Grotere organisaties die sterk afhankelijk zijn van open source software vinden het misschien handig om pakketbeheerdiensten aan te schaffen, die JFrog toevallig verkoopt.