Op 24 november ontdekte het beveiligingsbedrijf Aikido een tweede golf van de zelfreplicerende Shai-Hulud npm-worm, die maar liefst 492 pakketten met een gezamenlijk aantal van 132 miljoen maanddownloads compromitteerde. Deze aanval richtte zich op belangrijke ecosystemen, zoals AsyncAPI, PostHog, Postman, Zapier en ENS, en maakte gebruik van de laatste weken voor de deadline van npm op 9 december om legacy-authenticatietokens in te trekken.
Aikido’s triage-queue registreerde de inbraak rond 3:16 uur UTC, toen kwaadaardige versies van de go-template van AsyncAPI en 36 gerelateerde pakketten zich over de registry verspreidden. De aanvaller noemde de gestolen-repo’s “Sha1-Hulud: The Second Coming”, waarbij de theatrale branding uit de campagne van september behouden bleef.
De worm installeert de Bun-runtime tijdens de pakketinstallatie en voert vervolgens kwaadaardige code uit die ontwikkelaarsomgevingen doorzoekt naar blootgestelde geheimen met behulp van TruffleHog (een tool om blootgestelde gevoelige informatie in code te vinden). Gecompromitteerde API-sleutels, GitHub-tokens en npm-credentials worden gepubliceerd in public repositories met willekeurige namen. Bovendien probeert de malware zich verder te verspreiden door nieuwe geïnfecteerde versies naar maximaal 100 extra pakketten te pushen, wat vijf keer de omvang van de aanval in september is.
Deze tweede aanval brengt aanzienlijke wijzigingen met zich mee in vergelijking met de eerdere campagne. De malware maakt nu repositories aan met willekeurig gegenereerde namen voor gestolen data, in plaats van vaste namen, wat het wegwerken van de aanval bemoeilijkt. De opstellingen van de code installeren Bun via setup_bun.js voordat de primaire payload in bun_environment.js wordt uitgevoerd, waarin de worm-logica en routines voor het uitlekken van credentials zijn opgenomen.
De meest destructieve toevoeging is dat de malware, wanneer deze niet kan authenticeren op GitHub of npm met de gestolen credentials, alle bestanden in de gebruikershome-directory wist. Aikido’s analyse onthulde uitvoeringsfouten die de verspreiding van de aanval beperkten. De bundelingcode die de volledige worm in nieuwe pakketten kopieert, slaagt er soms niet in om bun_environment.js op te nemen, waardoor alleen het installatie-script van Bun overblijft zonder de kwaadaardige payload.
Desondanks raakten de eerste compromissen hoogwaarde doelen met enorme downstream-exposure. De pakketten van AsyncAPI stonden aan de basis van de eerste golf, met 36 gecompromitteerde releases, waaronder @asyncapi/cli, @asyncapi/parser en @asyncapi/generator. PostHog volgde om 4:11 uur UTC met geïnfecteerde versies van posthog-js, posthog-node en tientallen plugins. De pakketten van Postman volgden om 5:09 uur UTC. De Zapier-inbraak had invloed op @zapier/zapier-sdk, zapier-platform-cli en zapier-platform-core, terwijl de ENS-compromis verschillende pakketten zoals @ensdomains/ensjs, @ensdomains/ens-contracts en ethereum-ens raakte.
Het AsyncAPI-team ontdekte een kwaadaardige tak in hun CLI-repository, die onmiddellijk werd aangemaakt voordat de gecompromitteerde pakketten op npm verschenen. Deze tak bevatte een uitgerolde versie van de Shai-Hulud-malware, wat erop duidt dat de aanvaller schrijfrechten op de repository zelf had gekregen, in plaats van simpelweg npm-tokens te kapen. Deze escalatie weerspiegelt de techniek die werd gebruikt in de oorspronkelijke Nx-compromis, waarbij aanvallers de bronrepositories wijzigden om kwaadaardige code in legitieme buildpijplijnen te injecteren.
Aikido schat dat inmiddels 26.300 GitHub-repositories gestolen credentials bevatten, gemarkeerd met de beschrijving “Sha1-Hulud: The Second Coming”. Deze repositories bevatten geheimen die zijn blootgesteld door ontwikkelaarsomgevingen die de gecompromitteerde pakketten hebben uitgevoerd, inclusief cloud-service-credentials, CI/CD-tokens en authenticatiesleutels voor derden. De publieke aard van de lekken vergroot de schade: elke aanvaller die de repositories in de gaten houdt, kan in real-time credentials oogsten en secundaire aanvallen lanceren.
De timing van de aanval valt samen met npm’s aankondiging op 15 november, waarin werd gemeld dat het klassieke authenticatietokens op 9 december zou intrekken. De keuze van de aanvaller om een laatste grootschalige campagne te lanceren voor de deadline suggereert dat zij zich realiseerden dat de raam voor token-gebaseerde compromissen aan het sluiten was. Aikido’s tijdlijn toont aan dat de eerste golf van Shai-Hulud op 16 september begon. De “Second Coming” op 24 november vertegenwoordigt de laatste kans voor de aanvaller om gebruik te maken van legacy tokens voordat de migratie van npm die toegang afsluit.
Aikido raadt beveiligingsteams aan om alle afhankelijkheden van de getroffen ecosystemen te controleren, vooral de Zapier-, ENS-, AsyncAPI-, PostHog- en Postman-pakketten die na 24 november zijn geïnstalleerd of geüpdatet. Organisaties moeten alle GitHub-, npm-, cloud- en CI/CD-geheimen die in omgevingen zijn gebruikt waar deze pakketten aanwezig waren, vervangen. Daarnaast is het belangrijk om GitHub te doorzoeken naar repositories met de beschrijving “Sha1-Hulud: The Second Coming” om te bepalen of interne credentials zijn blootgesteld. Het uitschakelen van npm postinstall-scripts in CI-pijplijnen voorkomt toekomstige uitvoering tijdens de installatie, en het vastleggen van pakketversies met lock-bestanden beperkt de blootstelling aan nieuw gecompromitteerde releases.
Hoe ernstig is de impact van de Shai-Hulud worm op de Europese cryptomarkt?
De impact is aanzienlijk gezien de grote aantallen gecompromitteerde pakketten en de kritische natuur van de betrokken ecosystemen. Data breach incidenten zoals deze kunnen de reputatie van platforms en ontwikkelaars ernstig schaden.
Welke stappen moeten ontwikkelaars ondernemen om zich te beschermen tegen deze bedreigingen?
Ontwikkelaars moeten hun afhankelijkheden grondig auditen, oude tokens vervangen, en beveiligingstools zoals TruffleHog gebruiken om hun codebases te scannen op blootgestelde informatie.
Wat zijn de langetermijneffecten van dergelijke aanvallen op het vertrouwen in open-source software?
Deze aanvallen kunnen het vertrouwen in open-source software aantasten en de adoptie ervan vertragen, tenzij de gemeenschap adequaat reageert met verbeterde beveiligingsmaatregelen en transparante rapportage over kwetsbaarheden.
