Daily WTF!

Tanstack supply-chain hack


Listen Later

Op 11 mei 2026 werd het TanStack-ecosysteem (bekend van bibliotheken zoals TanStack Query en Router) het slachtoffer van een geavanceerde supply-chain aanval via npm. Tijdens deze aanval werden er 84 kwaadaardige versies gepubliceerd, verspreid over 42 verschillende @tanstack/* pakketten.

Hier is een uitleg van hoe de aanval werkte en wat de gevolgen waren:

Hoe de aanval plaatsvond De aanval begon in de GitHub Actions-omgeving. De aanvaller maakte gebruik van een combinatie van methoden: een kwetsbaarheid in het afhandelen van Pull Requests (een "pull_request_target Pwn Request"), het vergiftigen van de GitHub Actions-cache over de vertrouwensgrens tussen de 'fork' en de 'base', en het extraheren van een OIDC-token uit het geheugen van de zogenaamde "runner". Omdat de malafide versies werden gepubliceerd via de legitieme GitHub Actions workflow, leek het alsof ze van een vertrouwde bron kwamen en hielp het simpelweg intrekken van npm-tokens niet onmiddellijk om verdere publicaties te stoppen.

De "mini-shai-hulud" worm en wat deze deed De malware die werd geïnjecteerd wordt door beveiligingsonderzoekers aangeduid als de "mini-shai-hulud" worm. De besmette pakketten bevatten een zwaar onleesbaar gemaakt (obfuscated) script van ongeveer 2.3 MB, genaamd router_init.js. Wanneer een ontwikkelaar een besmet pakket installeerde, werd dit script stiekem op de achtergrond uitgevoerd.

De malware voerde de volgende schadelijke acties uit:

  • Diefstal van inloggegevens (credentials): Het script zocht actief naar en stal inloggegevens zoals AWS- en GCP-metadata, Kubernetes service-account tokens, Vault tokens, .npmrc bestanden, GitHub-tokens en SSH-sleutels.
  • Niet-traceerbare exfiltratie: De gestolen gegevens werden buitgemaakt via het eind-tot-eind versleutelde (E2E) netwerk van Session/Oxen messenger. Omdat er gebruik werd gemaakt van een "dead-drop" in plaats van een klassieke Command & Control-server (C2), was de verzending moeilijk te blokkeren of te traceren.
  • Zelfverspreiding: De worm zocht automatisch op npm naar andere pakketten die de gehackte gebruiker beheerde, om deze pakketten vervolgens te besmetten en ook te herpubliceren met dezelfde malware erin.

Het "Dead-man's switch" wraakmechanisme Een van de meest destructieve elementen van de aanval was een zogeheten "dead-man's switch" (dodemansknop). De malware installeerde een lokaal achtergrondproces (gh-token-monitor.sh) dat elke minuut verifieerde of het gestolen GitHub-token nog actief was. Als de beheerder de diefstal ontdekte en het token introk (wat resulteerde in een HTTP 40x foutmelding), startte het script uit wraak direct een wiscommando (rm -rf ~/.) om de harde schijf van de gebruiker leeg te gooien.

Als reactie op het incident heeft het TanStack-team onder andere met spoed een postmortem verslag gepubliceerd, hun CI/CD beveiliging verbeterd door dependencies beter vast te zetten (pinning) en extra controles aan hun release-pipelines toegevoegd

...more
View all episodesView all episodes
Download on the App Store

Daily WTF!By Don Ramón