In 42 NPM-Pakete wurde ein sich selbst verbreitender Wurm integriert.

Durch die Kompromittierung des Release-Prozesses auf Basis von GitHub Actions im TanStack-Projekt gelang es Angreifern, 84 schadhafte Versionen im NPM-Repository zu veröffentlichen, die 42 NPM-Pakete des TanStack-Stacks umfassten. Einige der kompromittierten Pakete verzeichneten über 10 Millionen Downloads pro Woche.

Der Zugriff auf die Veröffentlichung von Releases wurde durch eine fehlerhafte Konfiguration des pull_request_target 'Pwn Request' in GitHub Actions ermöglicht (die Angabe einer Maske in den Einstellungen führte zur Ausführung des pull_request_target für Pull-Requests in externen Forks), durch die Manipulation des GitHub Actions-Caches über einen Fork und die Möglichkeit, ein OIDC-Token aus dem Speicher des laufenden Runner-Prozesses (Runner.Worker) durch das Lesen des Inhalts von /proc//mem zu extrahieren.

Am 11. Mai wurden zwischen 22:20 und 22:26 Uhr (MSK) NPM-Pakete mit schädlichen Änderungen veröffentlicht. Diese wurden 20 Minuten später entdeckt und eineinhalb Stunden später blockiert. Für jedes der betroffenen NPM-Pakete wurden zwei schädliche Versionen veröffentlicht, die einen Code zur Aktivierung des mini-shai-hulud-Wurms enthielten. Dieser suchte nach Tokens und Anmeldeinformationen in der aktuellen Umgebung. Bei Entdeckung eines Tokens für das NPM-Verzeichnis veröffentlichte der Wurm automatisch neue schädliche Versionen für die in der aktuellen Umgebung entwickelten Pakete und griff damit den Abhängigkeitsbaum an. Auf diese Weise wurden über 400 NPM-Pakete, die TanStack-Pakete als Abhängigkeiten verwendeten, infiziert.

Der Wurm war in der Datei router_init.js untergebracht und wurde aktiviert, wenn das betroffene Paket manuell vom Entwickler oder automatisiert im CI-Umfeld mit den Befehlen „npm install“, „pnpm install“ oder „yarn install“ installiert wurde. Nach der Aktivierung suchte der Wurm im System nach Tokens für NPM (~/.npmrc), AWS, GCP, Azure, HashiCorp und KubernetesK8s sowie nach SSH-Schlüsseln. Die gefundenen Daten wurden über den dezentralen P2P-Messenger getsession.org an die Angreifer gesendet.

Im Wurm war vorgesehen, destruktive Aktionen im Falle des Widerrufs des abgefangenen NPM-Tokens durchzuführen – im System wurde ein regelmäßiger Start des Skripts ~/local/bin/gh-token-monitor.sh eingerichtet, das alle 60 Sekunden die Aktivität des Tokens über einen Aufruf an api.github.com/user überprüfte und im Falle des Widerrufs des Tokens den Befehl „rm -rf ~/“ ausführte.

Quelle: opennet.ru

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster