In 42 NPM-pakketten is TanStack opgenomen met een zelfverspreidende worm.

Als gevolg van de compromittering van het release-proces op basis van GitHub Actions in het TanStack-project, is het de aanvaller gelukt om 84 kwaadaardige versies te publiceren in de NPM-repository, die 42 NPM-pakketten uit de TanStack-stack omvatten. Sommige van de gecompromitteerde pakketten hadden meer dan 10 miljoen downloads per week.

Toegang tot de publicatie van releases werd verkregen door een verkeerde configuratie van pull_request_target 'Pwn Request' in GitHub Actions (de instelling van het patroon leidde tot het uitvoeren van pull_request_target voor pull-requests in externe forks), door het vervuilen van de cache van GitHub Actions via een fork en de mogelijkheid om het OIDC-token uit het geheugen van het actieve runner-proces (Runner.Worker) te extraheren door de inhoud van /proc//mem te lezen.

De NPM-pakketten met kwaadaardige wijzigingen werden gepubliceerd op 11 mei van 22:20 tot 22:26 (MSK), na 20 minuten opgemerkt en na anderhalf uur geblokkeerd. Voor elk van de getroffen NPM-pakketten werden er twee kwaadaardige versies vrijgegeven, waarin code was geĆÆntegreerd om de worm mini-shai-hulud te activeren, die zocht naar tokens en inloggegevens in de huidige omgeving. Bij het ontdekken van een connectietoken met de NPM-directory publiceerde de worm automatisch nieuwe kwaadaardige releases voor de in de huidige omgeving ontwikkelde pakketten, wat de afhankelijkheidsstructuur influisterde. Op deze manier werden meer dan 400 NPM-pakketten getroffen die TanStack-pakketten als afhankelijkheden gebruikten.

De worm was geplaatst in het bestand router_init.js en werd geactiveerd bij het handmatig installeren van het gecompromitteerde pakket door de ontwikkelaar of automatisch in een continue integratie-omgeving met de commando's 'npm install', 'pnpm install' of 'yarn install'. Na activatie zocht de worm in het systeem naar tokens voor NPM (~/.npmrc), AWS, GCP, Azure, HashiCorp en Kubernetes K8s, evenals gesloten SSH-sleutels. Gevonden gegevens werden naar de aanvallers verzonden via de gedecentraliseerde P2P-messenger getsession.org.

De worm was geprogrammeerd om destructieve acties uit te voeren in het geval van intrekking van het onderschepte NPM-token — in het systeem werd een periodieke uitvoering van het script ~/.local/bin/gh-token-monitor.sh ingesteld, dat elke 60 seconden de activiteit van het token controleerde door contact te maken met api.github.com/user en in het geval van intrekking van het token de opdracht 'rm -rf ~/' uitvoerde.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster