Meer dan 46.000 valse npm-pakketten overspoelen het register tijdens een wormachtige spamaanval

Cybersecurity-onderzoekers vestigen de aandacht op een grootschalige spamcampagne die sinds begin 2024 het npm-register heeft overspoeld met duizenden neppakketten als onderdeel van een waarschijnlijk financieel gemotiveerde inspanning.

“De pakketten werden systematisch gepubliceerd over een langere periode, waardoor het npm-register werd overspoeld met ongewenste pakketten die bijna twee jaar in het ecosysteem overleefden”, zeiden Endor Labs-onderzoekers Cris Staicu en Kiran Raj in een rapport van dinsdag.

De gecoördineerde campagne heeft tot nu toe maar liefst 46.484 pakketten gepubliceerd, volgens SourceCodeRED-beveiligingsonderzoeker Paul McCarty, die de activiteit als eerste signaleerde. Het einddoel is nogal ongebruikelijk: het is ontworpen om het npm-register te overspoelen met willekeurige pakketten in plaats van zich te concentreren op gegevensdiefstal of ander kwaadaardig gedrag.

Het voortplantingsmechanisme van wormleven en het gebruik van een onderscheidend naamgevingsschema dat afhankelijk is van Indonesische namen en voedseltermen voor de nieuw gecreëerde pakketten, hebben het de naam IndonesianFoods gegeven. De neppakketten doen zich voor als Next.js-projecten.

“Wat deze dreiging bijzonder zorgwekkend maakt, is dat de aanvallers de tijd hebben genomen om een ​​NPM-worm te maken, in plaats van een enkele aanval”, aldus McCarty. “Erger nog, deze dreigingsactoren zijn dit al meer dan twee jaar aan het in scène zetten.”

Enkele tekenen die wijzen op een aanhoudende, gecoördineerde inspanning zijn de consistente naamgevingspatronen en het feit dat de pakketten worden gepubliceerd vanuit een klein netwerk van meer dan een dozijn npm-accounts.

De worm bevindt zich in een enkel JavaScript-bestand (bijvoorbeeld “auto.js” of “publishScript.js”) in elk pakket en blijft inactief totdat een gebruiker het script handmatig uitvoert met een commando als “node auto.js”. Met andere woorden, het wordt niet automatisch uitgevoerd tijdens de installatie of als onderdeel van een “postinstall” hook.

Het is niet duidelijk waarom iemand JavaScript handmatig zou uitvoeren, maar het bestaan ​​van meer dan 43.000 pakketten suggereert dat meerdere slachtoffers het script hebben uitgevoerd – per ongeluk of uit nieuwsgierigheid – of dat de aanvallers het zelf hebben uitgevoerd om het register te overspoelen, zegt Henrik Plate, hoofd van het beveiligingsonderzoek bij Endor Labs, tegen The Hacker News.

“We hebben geen bewijs gevonden van een gecoördineerde social engineering-campagne, maar de code is geschreven met social engineering-potentieel. Mogelijke slachtofferscenario’s zijn onder meer: ​​valse blogposts, tutorials of README-items die gebruikers instrueren om ‘node auto.js’ uit te voeren om ‘de installatie te voltooien’ of ‘een build-probleem op te lossen’, (en) CI/CD-pijplijn-build-scripts met jokertekens, zoiets als node *.js, die alle JavaScript-bestanden uitvoeren”, voegde Raj eraan toe.

“Het slapende ontwerp van de payload is bedoeld om geautomatiseerde detectie te omzeilen. Door handmatige uitvoering te vereisen in plaats van ‘autorun’, verkleinen de aanvallers de kans om te worden gemarkeerd door beveiligingsscanners en sandbox-systemen.”

De handmatige uitvoering zorgt ervoor dat het script een reeks acties in een oneindige lus initieert, inclusief het verwijderen van <"private": true> uit het bestand “package.json”. Deze instelling wordt doorgaans gebruikt om onbedoelde publicatie van privéopslagplaatsen te voorkomen. Vervolgens wordt een willekeurige pakketnaam gemaakt met behulp van het interne woordenboek en wordt er een willekeurig versienummer aan toegewezen om de detectie van dubbele versies van npm te omzeilen.

In de laatste fase wordt het spampakket geüpload naar npm met behulp van de opdracht “npm publishing”. Deze stap wordt herhaald in een oneindige lus, waardoor er elke 7 tot 10 seconden een nieuw pakket wordt uitgeworpen. Dit vertaalt zich naar ongeveer 12 pakketten per minuut, 720 per uur of 17.000 per dag.

“Dit overspoelt het NPM-register met ongewenste pakketten, verspilt infrastructuurbronnen, vervuilt de zoekresultaten en creëert supply chain-risico’s als ontwikkelaars deze kwaadaardige pakketten per ongeluk installeren”, aldus McCarty.

Volgens Endor Labs maakt de campagne deel uit van een aanval die voor het eerst werd opgemerkt door Phylum (nu onderdeel van Veracode) en Sonatype in april 2024, waarbij duizenden spampakketten werden gepubliceerd om een ​​‘enorme geautomatiseerde cryptolandbouwcampagne’ uit te voeren door misbruik te maken van het Tea-protocol.

“Wat deze campagne bijzonder verraderlijk maakt, is het wormachtige verspreidingsmechanisme”, aldus de onderzoekers. “Analyse van de ‘package.json’-bestanden laat zien dat deze spampakketten niet op zichzelf bestaan; ze verwijzen naar elkaar als afhankelijkheden, waardoor een zichzelf replicerend netwerk ontstaat.”

Wanneer een gebruiker dus een van de spampakketten installeert, zorgt dit ervoor dat npm de volledige afhankelijkheidsboom ophaalt, waardoor de registerbandbreedte onder druk komt te staan ​​naarmate er exponentieel meer afhankelijkheden worden opgehaald.

Endor Labs zei dat sommige door de aanvaller gecontroleerde pakketten, zoals arts-dao en gula-dao, een tea.yaml-bestand bevatten met daarin vijf verschillende TEA-accounts. Het Tea-protocol is een gedecentraliseerd raamwerk waarmee open-sourceontwikkelaars kunnen worden beloond voor hun softwarebijdragen.

Dit geeft waarschijnlijk aan dat de bedreigingsactoren deze campagne gebruiken als een vector voor het genereren van inkomsten door TEA-tokens te verdienen door hun impactscore kunstmatig te verhogen. Het is niet duidelijk wie er achter de activiteit zit, maar de broncode en aanwijzingen voor de infrastructuur suggereren dat het iemand zou kunnen zijn die vanuit Indonesië opereert.

Het applicatiebeveiligingsbedrijf heeft ook een tweede variant gemarkeerd die een ander naamgevingsschema gebruikt, bestaande uit willekeurige Engelse woorden (bijvoorbeeldable_crocodile-notthedevs).

De bevindingen wijzen ook op een blinde vlek op het gebied van beveiliging in beveiligingsscanners, waarvan bekend is dat ze pakketten markeren die tijdens de installatie kwaadaardige code uitvoeren door lifecycle hooks te monitoren of verdachte systeemoproepen te detecteren.

“In dit geval vonden ze niets omdat er niets te vinden was op het moment van installatie”, aldus Endor Labs. “Het enorme aantal pakketten dat in de huidige campagne wordt gemarkeerd, laat zien dat beveiligingsscanners deze signalen in de toekomst moeten analyseren.”

Garrett Calpouzos, hoofdveiligheidsonderzoeker bij software supply chain-beveiligingsbedrijf Sonatype, typeerde IndonesianFoods als een zelfpublicerende worm die op grote schaal opereert en daarbij de beveiligingsgegevenssystemen overweldigt.

“De technische verfijning is niet noodzakelijkerwijs hoger – interessant genoeg lijken deze pakketten niet eens te proberen ontwikkelaarsmachines te infiltreren – het zijn de automatisering en de schaal die in een alarmerend tempo escaleren”, aldus Calpouzos.

“Elke golf van deze aanvallen bewapent het open karakter van npm op enigszins nieuwe manieren. Deze aanval steelt misschien geen inloggegevens of injecteert code, maar het zet het ecosysteem nog steeds onder druk en bewijst hoe triviaal het is om de grootste software-toeleveringsketen ter wereld te ontwrichten. Hoewel de motivatie onduidelijk is, zijn de implicaties opvallend.”

Toen hij voor commentaar werd benaderd, zei een woordvoerder van GitHub dat het de betreffende pakketten van npm heeft verwijderd en dat het zich inzet voor het detecteren, analyseren en verwijderen van pakketten en accounts die in strijd zijn met zijn beleid.

“We hebben kwaadaardige npm-pakketten uitgeschakeld in overeenstemming met het Acceptable Use Policies van GitHub, dat het plaatsen van inhoud verbiedt die rechtstreeks onwettige actieve aanvallen of malwarecampagnes ondersteunt die technische schade veroorzaken”, voegde de woordvoerder eraan toe.

“We maken gebruik van handmatige beoordelingen en detecties op grote schaal die gebruik maken van machinaal leren en voortdurend evolueren om kwaadwillig gebruik van het platform te verminderen. We moedigen klanten en communityleden ook aan om misbruik en spam te melden.”

Thijs Van der Does