Der eingeschleuste Schadcode sammelt nach Angaben der Forscher eine breite Palette sensibler Daten: Tokens, API-Schlüssel, SSH-Schlüssel sowie Zugangsdaten für Cloud-Dienste, CI/CD-Systeme, Registries und LLM-Plattformen. Auch Konfigurationen von Kubernetes und Docker werden erfasst. Zusätzlich versucht die Schadsoftware, in Chrome und Firefox gespeicherte Daten auszulesen, darunter Kryptowährungs-Wallets wie MetaMask, Exodus, Atomic Wallet und Phantom.
Den Kern des Angriffs bildet seine Fähigkeit zur Selbstverbreitung. StepSecurity beschreibt die Schadsoftware als „Supply-Chain-Wurm", der npm-Veröffentlichungs-Tokens aufspürt und sich „in jedes Paket einschleust, das mit diesem Token veröffentlicht werden kann, und so die Kompromittierung weiterträgt".
Findet das Skript auf einem kompromittierten System Veröffentlichungs-Tokens – in Umgebungsvariablen oder in der Konfigurationsdatei ~/.npmrc –, ermittelt es die Pakete, die das Opfer veröffentlichen darf, fügt die Schadlast hinzu und veröffentlicht sie mit erhöhter Versionsnummer erneut auf npm. Diese neu infizierten Pakete führen bei der Installation denselben Vorgang aus, was eine rekursive Ausbreitung ermöglicht.
Der Angriff bleibt nicht auf npm beschränkt: Werden PyPI-Zugangsdaten gefunden, wendet die Schadsoftware ein ähnliches Verfahren auf Python-Pakete an und nutzt dabei eine Schadlast auf Basis von .pth-Dateien. Damit handelt es sich um einen Angriff über mehrere Ökosysteme hinweg.
Nach Angaben von StepSecurity wurden die bösartigen Versionen für das Paket pgserve erstmals am 21. April um 22:14 UTC veröffentlicht; am selben Tag folgten zwei weitere bösartige Releases.
Sowohl Socket als auch StepSecurity stellen Kompromittierungsindikatoren bereit, mit denen sich betroffene Entwicklungsumgebungen erkennen lassen. In Umgebungen mit betroffenen Paketen empfehlen die Forscher, diese aus Entwicklungs- und CI/CD-Systemen zu entfernen, alle Zugangsdaten und Geheimnisse auszutauschen und interne Paket-Spiegel, Artefakte und Caches zu überprüfen. Socket rät zudem, nach verwandten Paketen mit derselben public.pem-Datei, demselben Webhook-Host oder demselben postinstall-Muster zu suchen.
