// HEISE ONLINE — INTELLIGENZA ARTIFICIALE
Gut getarnt: Automatisch startender Wurm bei GitHub ist schwer zu finden
JFrog hat Schadcode in 42 GitHub-Repositories entdeckt. Dieser startet automatisch durch KI-Assistenten oder bei der Arbeit an Projekten.
This article is also available in
English.
It was translated with technical assistance and editorially reviewed before publication.
JFrog Security Research hat 42 GitHub-Repositories entdeckt, die Angreifer mit Ausführungs-Hooks und verstecktem Schadcode vermint haben. Die Forscher ordnen sie der npm-Wurm-Kampagne „testmetest“ zu. Wie viele Rechner den Schadcode ausgeführt haben und welche Daten abgeflossen sind, ist unklar.
Laut der JFrog-Analyse verteilen sich die 42 kompromittierten GitHub-Repositories auf 11 legitime Eigentümer. Den Schadcode, dem JFrog eine Ähnlichkeit zu Shai-Hulud-Varianten bescheinigt, konnten die Angreifer dort mittels gekaperter Konten beziehungsweise Mitarbeiter- oder Mitwirkendenrechte einschleusen. Die npm-Seite der Kampagne hatte der Sicherheitsdienstleister SafeDep bereits am 22. Oktober beschrieben, jedoch keine kompromittierten Fremdpakete oder Opfer gefunden.
In den 42 Repositories platzierten die Angreifer Projektkonfigurationen für Entwicklungswerkzeuge. Starteten Nutzerinnen und Nutzer etwa Claude Code, Gemini oder Cursor im Projekt oder öffneten es unter passenden Einstellungen als VS-Code-Workspace, konnten diese Konfigurationen die versteckte Schadcode-Datei .github/init.js ausführen.
JFrog nennt 15 npm-Pakete, bei denen mindestens je eine Version als schädlich eingestuft wurde: data-pipeline-testmetest, event-bus-lite-testmetest, event-emitter-testmetest, log-rotate-testmetest, log-sink-testmetest, net-codec-testmetest, npm-publish-testmetest, pixel-map-testmetest, retry-utils-testmetest, test-brotli-testmetest, test-brotli2-testmetest, @iobandamwer/cache-helper, @iobandamwer/native-helper, path-stream-utils-testmetest und @testsecuiitytestme/cache-helper.
JFrog empfiehlt, betroffene Systeme zu untersuchen und gegebenenfalls aus vertrauenswürdigen Quellen neu aufzubauen. Betroffene sollten Repository-Konfigurationen und Workflows prüfen und möglicherweise abgeflossene Zugangsdaten widerrufen. Dabei ist Vorsicht geboten: Laut SafeDep installiert der Wurm einen Wiper, der das Home-Verzeichnis löscht, sobald Betroffene das gestohlene GitHub-Token widerrufen.
Einige der manipulierten npm-Pakete enthalten einen Wurm, der vor allem GitHub- und npm-Zugangsdaten sammelt und seine eigene Weiterverbreitung vorantreiben kann. Daneben fanden die JFrog-Sicherheitsexperten in .github/init.js einen verschleierten Publisher-Schadcode. Er sucht unter anderem nach GitHub-Token und ist darauf ausgelegt, mit verfügbaren npm-Veröffentlichungsrechten manipulierte Paketversionen beispielsweise über GitHub Actions zu veröffentlichen.
Bei einigen gekaperten Repositories stieß JFrog zudem auf Shellpanel-Workflows, die cPanel-Systeme über die als kritisch eingestufte Sicherheitslücke CVE-2026-41940 angreifen. Eine durchgängige Angriffskette von der npm-Infektion bis zur Ausnutzung der Lücke sehen die Forscher aber nicht belegt.
Bei der Analyse blieb der Inhalt der Payload-Datei .github/init.js zunächst verborgen, da die Datei je nach Variante 12,9 bis 13,7 MByte groß war und die GitHub-Codesuche so große Dateien nicht indexiert. Auch die übliche Contents API lieferte ihren Inhalt nicht zurück. Fündig wurde das JFrog-Team erst, als es die Verzeichnisbäume der Repositories über die Git Trees API auflistete und .github/init.js anschließend direkt als Git-Blob abrief.