De aanval op de begeleidende pakketten in de NPM-repository heeft een nieuw niveau bereikt. Naast het gebruik van malware voor het onderscheppen van betalingen en vertrouwelijke informatie, zijn aanvallers overgestapt op het invoegen van een worm in gecompromitteerde pakketten om de vervangingen van malware in afhankelijkheden te automatiseren. Het gebruik van de worm is waargenomen na de compromittering van het NPM-pakket @ctrl/tinycolor, dat wekelijks 2,2 miljoen downloads heeft en als directe afhankelijkheid in 964 pakketten is gebruikt. Als gevolg van de activiteit van de worm heeft de aanval 187 pakketten getroffen, waarvoor kwaadwillige releases zijn aangemaakt (477 kwaadwillige releases).
Tijdens een nieuwe aanval, na het verkrijgen van de accountgegevens van de begeleider door phishing, publiceren aanvallers een release van een pakket met een worm, die geactiveerd wordt wanneer het gecompromitteerde pakket als afhankelijkheid wordt geĆÆnstalleerd. Na activatie zoekt de worm naar inloggegevens in de huidige omgeving, door de TruffleHog-tool te downloaden en uit te voeren. Als er een verbindingstoken voor de NPM-catalogus wordt gevonden, publiceert de worm automatisch een nieuwe kwaadwillige release en besmet zo de afhankelijkheidshierarchie. Naast het toegangstoken voor NPM slaat de worm ook toegangskeys voor GitHub en cloudservices zoals AWS, Azure en GCP (Google Cloud Platform) op, evenals andere vertrouwelijke gegevens die de TruffleHog-scanner kan ontdekken.
Kwaadwillige releases worden gecreëerd voor de 20 meest populaire pakketten waarvoor de gevonden NPM-token toegang biedt. De functionaliteit voor het publiceren van een release is geïmplementeerd in de vorm van de functie NpmModule.updatePackage, die het originele archief van het pakket downloadt, het versienummer wijzigt en een postinstall-hook aan het bestand package.json toevoegt, de handler bundle.js invoegt, het pakket opnieuw verpakt en publiceert. Ondersteuning voor Linux en macOS wordt geboden.
De worm heeft de codenaam Shai-Hulud gekregen (een gigantische worm die wordt genoemd in de roman Dune). Gevonden in het systeem gegevens worden op GitHub geplaatst via het creƫren van repositories met de naam Shai-Hulud (bijvoorbeeld "B611/Shai-Hulud"), en worden ook gecodeerd weergegeven in de logs van GitHub Actions. In de aangemaakte repository staat een bestand data.json, waarin een regel met gecodeerde informatie over het systeem, omgevingsvariabelen en onderschepte toegangssleutels aanwezig is. In de CI op basis van GitHub maakt de worm een GitHub Actions-handler aan (.github/workflows/shai-hulud-workflow.yml) voor het doorgeven van informatie naar een externe host. Blijkbaar beperkt de aanval zich niet tot de genoemde 187 pakketten, aangezien er voortdurend nieuwe repositories met de naam Shai-Hulud en het bestand data.json op GitHub verschijnen.

Naast andere dingen zijn als gevolg van de activiteit van de worm 25 pakketten van het bedrijf CrowdStrike, dat tools ontwikkelt voor bescherming tegen aanvallen via afhankelijkheden (Supply Chain) getroffen. Volgens CrowdStrike werden de gecompromitteerde pakketten niet gebruikt op het Falcon-platform en breidde de aanval zich niet uit naar klanten. Ook is bekend geworden dat de vorige golf van het publiceren van kwaadaardige releases in NPM, die zonder de worm plaatsvond, het project gemini-cli, ontwikkeld door Google, heeft geraakt.
Bron: opennet.ru
