De Shai Hulud-cybercampagne heeft honderden npm-, PyPI- en Composer-pakketten gecompromitteerd door kwaadaardige versies te publiceren die gericht zijn op het stelen van ontwikkelaarscredentials. De aanvaller maakte gebruik van gestolen OpenID Connect (OIDC)-tokens om schadelijke pakketversies te publiceren met geldige SLSA Build Level 3-provenance, waardoor de pakketten cryptografisch authentiek leken.

De aanval, toegeschreven aan de TeamPCP-groep, begon met het compromitteren van tientallen TanStack- en Mistral AI-pakketten, maar breidde zich snel uit naar andere populaire projecten zoals Guardrails AI, UiPath en OpenSearch. De campagne is actief sinds september vorig jaar en heeft meerdere golven gekend, waarbij onder meer honderden duizenden ontwikkelaarsgeheimen werden blootgesteld in automatisch gegenereerde GitHub-repositories. Recente slachtoffers zijn onder andere het Bitwarden CLI-pakket en officiële SAP-pakketten.

De meest recente aanvalsgolf vond gisteren plaats, waarbij de dreigingsactor meerdere kwaadaardige pakketten publiceerde binnen de TanStack-namespaces op npm. Vervolgens verspreidde de aanval zich naar andere projecten via gestolen CI/CD-credentials. Volgens beveiligingsbedrijf StepSecurity werden de geïnfecteerde pakketten via legitieme CI/CD-pijplijnen gepubliceerd, met geldige SLSA-provenance attestaties en authentieke GitHub Actions-handtekeningen die gekoppeld waren aan de officiële TanStack/router release workflow.

Onderzoek van onder meer Endor Labs, Aikido en Socket toont aan dat respectievelijk meer dan 160, 373 en 416 pakketten en pakketversies zijn gecompromitteerd binnen npm, PyPI en Composer. Volgens het post-mortem rapport van TanStack maakten de aanvallers gebruik van een keten van drie kwetsbaarheden: een risicovolle 'pull_request-target' workflow, cache poisoning in GitHub Actions en diefstal van OIDC-tokens uit het geheugen van runners. Hiermee publiceerden zij 84 kwaadaardige versies van 42 TanStack-pakketten met geldige provenance en handtekeningen.

Voor ontwikkelaars leken de pakketten volledig authentiek, zonder aanwijzingen voor compromittering. Endor Labs wijst op een geavanceerde techniek waarbij aanvallers een verweesde Git-commit gebruikten die via een kwaadaardige optionele dependency werd opgehaald, waardoor npm automatisch kwaadaardige code uitvoerde tijdens installatie. De malware richt zich op het stelen van diverse ontwikkelaarscredentials, waaronder GitHub Actions OIDC-tokens, persoonlijke toegangstokens, Git-credentials, npm-publish tokens, AWS- en Kubernetes-credentials, HashiCorp Vault tokens, SSH-sleutels en configuraties van ontwikkelomgevingen.

Volgens StepSecurity leest de malware het geheugen van GitHub Actions-processen om credentials te verzamelen uit meer dan honderd bestandslocaties die verband houden met cloudproviders, cryptovaluta en messaging-apps. Voor het exfiltreren van deze gevoelige informatie maakt de malware gebruik van het Session P2P-netwerk, dat lijkt op versleuteld messengerverkeer, wat detectie en blokkering bemoeilijkt. Na infectie schrijft de malware zich in hooks van Claude Code en VS Code auto-run taken, waardoor het verwijderen van de kwaadaardige pakketten de malware niet volledig verwijdert.

De zelfverspreidingsmechanismen zijn vergelijkbaar met eerdere golven: gebruik van gestolen GitHub/npm-credentials, het identificeren van pakketten gekoppeld aan de gecompromitteerde maintainer, het aanpassen van tarballs om payloads te injecteren en het opnieuw publiceren van kwaadaardige versies. Volgens SafeDep verschillen de triggermechanismen tussen Mistral AI en TanStack pakketten, maar de credential-stealing payload is identiek.