Zum Hauptinhalt springen
Online-Sicherheit

GitHub-Konten gekapert: wfx-loot stiehlt CI-Secrets

Veröffentlicht 12 Min. Lesezeit
Ein Code-Repository als Baum, bei dem Schlüssel aus einem Zweig abgesaugt werden, zur Veranschaulichung der Kampagne wfx-loot zur Übernahme von GitHub-Konten

Kurz gesagt

Laut Berichten von Forschern vom 12. November 2026 nutzte die Kampagne wfx-loot rund 4.800 kompromittierte GitHub-Konten, um mehr als 61.000 Repositories zu sondieren und einen CI-Secret-Stealer einzuschleusen, der nach Angaben von Aikido in mindestens 1.806 davon lief [1]. Sie missbraucht gestohlene Tokens und nutzt keinen GitHub-Fehler aus [2], und sie macht ihre Änderungen innerhalb von etwa einer Minute wieder rückgängig [1].

Das Wichtigste

  1. Aikido Security zufolge begann die Kampagne gegen 12:45 UTC am 10. November 2026 [1].
  2. 4.837 kompromittierte Konten eröffneten Sonden-Pull-Requests mit dem Titel „docs: dependency audit notes“ in 61.764 Repositories [1].
  3. Der Stealer lief in mindestens 1.806 Repositories, eine Zahl, die die Auswirkungen laut Aikido womöglich unterschätzt [1].
  4. Er greift GitHub-Actions-Secrets, Cloud-Zugangsdaten und Schlüssel für KI-Dienste ab, macht dann seinen Commit rückgängig und löscht den Workflow-Lauf [1][2].
  5. Eine fehlende Workflow-Laufnummer direkt nach einem verdächtigen Commit ist das zuverlässigste Zeichen dafür, dass der Stealer lief [2].
  6. Wenn er lief, erneuern Sie jedes Secret, das der Workflow erreichen konnte, und entfernen Sie Cloud-Hintertüren, denn die Erneuerung allein reicht nicht [2].
Auf dieser Seite 12 Abschnitte
  1. Was ist die GitHub-Kampagne wfx-loot?
  2. Wie groß ist der Angriff wfx-loot?
  3. Wie funktioniert der wfx-loot-Stealer?
  4. Warum reicht das Erneuern von Secrets nicht aus?
  5. Wie prüfe ich, ob meine GitHub-Repositories betroffen sind?
  6. Was tun, wenn der Stealer lief?
  7. Welche Pakete waren betroffen?
  8. Wer steckt hinter wfx-loot und wie kam er an die Tokens?
  9. Häufige Fehler
  10. Häufige Fragen
  11. Glossar
  12. Quellen

Was ist die GitHub-Kampagne wfx-loot?

wfx-loot ist eine Kampagne, bei der ein Angreifer mit gestohlenen GitHub-Zugangsdaten einen bösartigen Workflow in Repositories einschleust, auf die diese Konten schreibend zugreifen können, um GitHub-Actions-Secrets und Cloud-Zugangsdaten zu stehlen [1]. Aikido Security, das sie als Erstes meldete, benannte sie nach der eigenen Bezeichnung des Angreifers für die Malware („wfx“) und dem Wort für gestohlene Secrets („loot“) [1]. Auch SafeDep schreibt Aikido den ersten Bericht zu [5].

StepSecurity nennt denselben Stealer „wfx“ und betont einen entscheidenden Punkt: Der Angreifer nutzt keinen Fehler in GitHub Actions aus [2]. Stattdessen verwendet er gültige Tokens echter Entwickler- und Bot-Konten und eröffnet Pull Requests und pusht Commits so, wie es ein Entwickler tun würde [2][4].

Aikido geht davon aus, dass das Hauptziel CI-Secrets sind und nicht die Verbreitung über Software-Pakete, obwohl die Schadlast über automatisierte Veröffentlichungsauslöser mindestens ein Packagist-Paket und ein Go-Paket erreichte [1]. BleepingComputer berichtet unter Berufung auf die Analyse von Aikido, dass einige der kompromittierten Konten großen Organisationen gehörten [3].

Wie groß ist der Angriff wfx-loot?

Aikido zählt 4.837 kompromittierte Konten, die Sonden-Pull-Requests in 61.764 Repositories eröffneten, wobei der Stealer in mindestens 1.806 Repositories lief [1]. Die Zahlen unterscheiden sich zwischen den Forschern leicht, weil jeder GitHub zu einem anderen Zeitpunkt durchsuchte, während die Kampagne noch aktiv war.

  • Aikido: 4.837 Konten, 61.764 Repositories; 10.431 Pull Requests gingen in Repositories, die dem Konto nicht gehören; 92 % noch offen; mindestens 50 kompromittierte Nutzer veröffentlichen Pakete auf npm, Go, Packagist, PyPI oder crates [1].
  • Aikido (zusammenfassende Zahl): mindestens 1.835 Repositories führten die Schadlast aus, und Zugangsdaten wurden entwendet; BleepingComputer verwendet diese Zahl [1][3].
  • StepSecurity: mehr als 63.000 Sonden-Pull-Requests Stand 07:40 UTC am 12. November, etwa 90 % noch offen [2].
  • SafeDep: 8.093 Repositories erhielten zwischen dem 10. und 12. November bösartige Commits, eine Zahl, die laut SecurityWeek nicht zwingend bedeutet, dass der Stealer ausgeführt wurde [5][4].

Aikido warnt, dass seine Ausführungszahl die Auswirkungen womöglich unterschätzt, weil die Laufprotokolle in betroffenen Repositories gelöscht wurden [1].

Wie funktioniert der wfx-loot-Stealer?

Für jedes Repository, auf das ein gestohlenes Token schreibend zugreifen kann, sondiert der Angreifer, pusht die Schadlast und räumt innerhalb von etwa einer Minute wieder auf [1].

  1. Sonde: Ein Pull Request mit dem Titel „docs: dependency audit notes“ aus einem Branch namens wfx-docs fügt eine winzige Notizdatei hinzu. „Der Pull Request tut für sich genommen nichts“, so StepSecurity; er zeigt nur, dass das Token Schreibzugriff hat [2][4].
  2. Schadlast: Ein Shell-Skript mit rund 1.500 Zeilen kommt auf einem von drei Wegen an: in einen bestehenden Workflow eingeschleust („ci: refresh build cache“), als Skript plus npm-postinstall-Hook („chore: add ci helper“) oder als neuer Workflow auf einem Wegwerf-Branch chore/ („chore: add dependency audit workflow“) [1].
  3. Aufräumen: Der Angreifer macht die Änderung rückgängig und löscht den Workflow-Lauf samt Protokollen [1]. Eine fehlende Laufnummer ist oft die einzige Spur [1].

Das Skript sammelt GitHub-Actions-Secrets und -Tokens, die gesamte Runner-Umgebung, Zugangsdatendateien für AWS, Azure, Google Cloud, Docker, Kubernetes, npm, PyPI, SSH und mehr, Shell-Verläufe sowie Schlüssel für KI-Anbieter und Entwicklerwerkzeuge [1][3]. Es liest sogar den Speicher laufender Prozesse auf dem Runner aus [1][4]. Aikido stellte fest, dass die von ihm analysierten Kopien die gestohlenen Daten nur per HTTP POST an vom Angreifer kontrollierte Server sendeten [1]. StepSecurity beobachtete später eine Änderung: Ab etwa 05:30 UTC am 12. November sendeten neue Kopien Daten nur noch über Telegram, sodass das bloße Sperren der veröffentlichten Serveradressen sie nicht mehr aufhält [2].

Leuchtende Würfel auf einem Förderband, ein zerbrochener Würfel lässt Goldmünzen in ein Rohr fallen, zur Veranschaulichung gestohlener CI-Secrets
Der Stealer sammelt jedes Secret ein, das der Workflow erreichen kann.

Warum reicht das Erneuern von Secrets nicht aus?

Weil der Stealer versucht, Hintertüren zu platzieren, die eine Erneuerung der Zugangsdaten überstehen [1][2]. Aikido beschreibt drei Persistenz-Tricks [1]:

  • Gefälschte Status-Checks: Aikido zufolge postet er gefälschte „success“-Checks unter den Namen der erforderlichen Checks eines Repositorys, was Merge-Sperren des Branch-Schutzes aufheben kann [1]. StepSecurity fand diese Funktion in allen 101 untersuchten Proben abgeschaltet [2].
  • Umschreiben der AWS-Vertrauensrichtlinie: Er kann die Vertrauensrichtlinie einer Rolle so setzen, dass jedes AWS-Konto zugelassen ist [1].
  • Einschleusen einer föderierten Azure-Identität: Er kann föderierte Zugangsdaten mit dem Namen wfx-ci-… zu Azure-AD-Anwendungen hinzufügen, sodass sich Workflows im kompromittierten Repository ohne gespeichertes Secret authentifizieren können [1].

Er kann außerdem GitHub-OIDC-Tokens erzeugen und gegen AWS-, Google-Cloud- und Azure-Sitzungen eintauschen, sich in andere IAM-Rollen weiterverketten und langlebige AWS-Zugangsschlüssel anlegen [1][3]. Deshalb sagt StepSecurity, man solle „die Persistenz entfernen, denn die Erneuerung allein tut das nicht“ [2].

Ein wolkenförmiger Stahltresor mit goldenem Schloss und einer kleinen, rot beleuchteten, angelehnten Luke, zur Veranschaulichung versteckter Cloud-Hintertüren
Das Erneuern von Schlüsseln schließt keine Hintertüren, die bereits in AWS oder Azure platziert wurden.

Wie prüfe ich, ob meine GitHub-Repositories betroffen sind?

Suchen Sie seit dem 10. November nach dem Sonden-Pull-Request und den Commit-Nachrichten des Angreifers und achten Sie dann auf Lücken in den Workflow-Laufnummern [2][1].

  1. Durchsuchen Sie Pull Requests nach „docs: dependency audit notes“ und nach Branches namens wfx-docs oder chore/ gefolgt von acht Zeichen [1][2].
  2. Durchsuchen Sie Commits seit dem 10. November nach „ci: refresh build cache“, „ci: restore“, „ci: cleanup“, „chore: add ci helper“ und „chore: add dependency audit workflow“ [2].
  3. Öffnen Sie bei jedem Treffer den Reiter Actions und suchen Sie nach einer fehlenden Laufnummer direkt nach dem Commit; StepSecurity nennt dies das zuverlässigste Zeichen dafür, dass der Stealer lief [2].
  4. Notieren Sie, welches Konto die Commits gepusht hat: Die Tokens dieses Kontos sind gestohlen [2]. Existiert ein Sonden-Pull-Request, ist das Konto kompromittiert, auch wenn keine Schadlast lief [1].

Verlassen Sie sich nicht auf fehlende Artefakte. Aikido erklärt, dass das Fehlen von wfx-loot-Artefakten, wfx--Cache-Einträgen oder besonderen Step-Zusammenfassungen nicht bedeutet, dass keine Daten entwendet wurden, weil diese Kanäle in dieser Kampagne abgeschaltet waren [1]. Aikido hält es außerdem für möglich, dass die Schadlast sowohl in privaten als auch in öffentlichen Repositories eingesetzt wird [1].

Eine Reihe von Kacheln, bei der eine fehlt, zur Veranschaulichung des gelöschten Workflow-Laufs, der den GitHub-Angriff wfx-loot verrät
Eine fehlende Laufnummer ist das zuverlässigste Zeichen dafür, dass der Stealer lief.

Was tun, wenn der Stealer lief?

Gehen Sie davon aus, dass jedes Secret und jede Cloud-Rolle, die dem betroffenen Workflow zur Verfügung standen, kompromittiert ist, erneuern Sie sie und suchen Sie dann nach Persistenz [1][2].

  • Erneuern: jedes Repository-, Umgebungs- und Organisations-Secret, das der Job erreichen konnte, nicht nur die vom Workflow genannten; npm-, PyPI- und andere Veröffentlichungs-Tokens; und als Secrets gespeicherte Cloud-Schlüssel [2].
  • Pakete prüfen: nach Paketversionen suchen, die nach dem bösartigen Commit veröffentlicht wurden [2].
  • AWS: nach Vertrauensrichtlinien suchen, die jeden AWS-Principal zulassen, nach seit dem 10. November angelegten IAM-Zugangsschlüsseln und nach CloudTrail-Sitzungen, die mit wfx- beginnen [2].
  • Azure: föderierte Identitätsanmeldedaten mit dem Namen wfx-ci-* in App-Registrierungen löschen [2].
  • Google Cloud, Vault, Kubernetes: die Token-Erzeugung und Anmeldungen mit GitHub-Actions-Anmeldetokens überprüfen [2].
  • GitHub: übrig gebliebene Branches löschen, Sonden-Pull-Requests schließen, prüfen, dass nichts über einen gefälschten Check gemergt wurde, und die Tokens, OAuth-Freigaben und SSH-Schlüssel des Kontos widerrufen [2].
  • Tokens laut GitHub-Dokumentation: Prüfen Sie Ihre persönlichen Zugriffstokens unter Settings, Developer settings und löschen Sie alle, die Sie nicht kennen oder nicht brauchen; GitHub empfiehlt feingranulare Tokens, nur die minimal nötigen Berechtigungen und ein Ablaufdatum, weil ein klassisches Token auf jedes Repository zugreifen kann, auf das Sie zugreifen können [6].

Der npm-Hook läuft auch auf Entwicklerrechnern: Wer in dem kurzen Zeitfenster npm install ausführte, hat den Stealer lokal ausgeführt und sollte auch die eigenen Zugangsdaten erneuern [2]. SecurityWeek fasst den Rat mehrerer Sicherheitsfirmen zusammen: kompromittierte Tokens widerrufen, offengelegte Secrets erneuern und auf nicht autorisierte Cloud-Änderungen prüfen [4]. Bei Bot-Konten schlägt StepSecurity außerdem vor zu prüfen, ob sie überhaupt die Berechtigung benötigen, den Branch-Schutz zu umgehen [2]. Ein starker Anmeldeschutz erschwert Kampagnen mit gestohlenen Konten; siehe Two-Factor Authentication Explained: Which 2FA Method Is Safest?.

Welche Pakete waren betroffen?

Aikido nennt ein Packagist-Paket und ein Go-Modul, die die Schadlast über automatisierte Veröffentlichung aufgenommen haben [1].

  • Packagist: digitalelvis/neuronai-studio Version 3.14.3; Aikido rät, jeden Rechner, der es installiert oder geöffnet hat, als kompromittiert zu betrachten [1].
  • Go: github.com/onuragtas/docker-env v1.0.278 und v1.0.280; die Schadlast steckt nur in einer GitHub-Actions-Workflow-Datei, der Go-Quellcode und die Binärdateien sind unverändert, und Go-Builds führen nie Workflow-Dateien aus, doch Aikido empfiehlt dennoch, diese Versionen zu entfernen [1].

Die Zahlen weichen ab: SafeDep nennt drei Pakete auf Packagist und im Go-Modul-Proxy, die die Schadlast enthalten, und SecurityWeek erwähnt Versionen von zwei Go-Modulen [5][4]. SafeDep ergänzt, dass die Schadlast für typische Nutzer, die diese Pakete mit composer require oder go get installieren, nicht ausgeführt wurde [5]. Prüfen Sie die aktuelle Liste jedes Forschers, bevor Sie sich auf eine einzelne verlassen.

Wer steckt hinter wfx-loot und wie kam er an die Tokens?

Keiner der hier genannten Berichte identifiziert den Angreifer, und StepSecurity erklärt, nicht geklärt zu haben, wie die Tokens beschafft wurden [2][4].

StepSecurity fand 173 Sonden-Pull-Requests von 19 Konten, die mit Tokens der Fly.io-GitHub-App erstellt wurden; es konnte nicht feststellen, wie diese beschafft wurden, und hatte keine Belege dafür, dass die Infrastruktur von Fly.io gehackt wurde [2][4].

Aikido fand Überschneidungen mit Konten, die von der GhostAction-Welle im Oktober getroffen wurden, und sah wfx-loot in mehr als 100 Repositories in GhostAction-Workflow-Dateien eingeschleust, bewertete beide aber als getrennte Kampagnen, die wahrscheinlich von verschiedenen Akteuren betrieben werden, da gestohlene Zugangsdaten oft bei mehreren Gruppen landen [1]. Außerdem fielen Kommentare in indonesischer Sprache in einigen neueren Malware-Versionen auf [1]. Der sorgfältige Umgang mit Tokens ist hier wichtig; Password Managers Explained: How They Work and Whether They Are Safe behandelt die Grundlagen.

Zahlen zur Kampagne wfx-loot nach Forschern (Stand der Berichte: 12. November 2026)
MessgrößeZahlQuelle
Kompromittierte Konten4.837Aikido
Sondierte Repositories61.764Aikido
Repositories, in denen der Stealer liefmindestens 1.806-1.835Aikido
Repositories mit bösartigen Commits8.093SafeDep
Sonden-Pull-Requestsmehr als 63.000 (12. Nov., 07:40 UTC)StepSecurity

Häufige Fehler

  • Anzunehmen, ein sauberer Branch bedeute, dass nichts gestohlen wurde.

    So geht es richtig: Der Angreifer macht Commits rückgängig; prüfen Sie auf fehlende Laufnummern [1][2].

  • Nur die vom Workflow genannten Secrets zu erneuern.

    So geht es richtig: Der Speicher-Scan sammelt den Rest ein; erneuern Sie alles Erreichbare [2].

  • Nach der Erneuerung aufzuhören.

    So geht es richtig: Entfernen Sie auch die Persistenz in AWS und Azure [2].

  • Einen Fehler in GitHub Actions verantwortlich zu machen.

    So geht es richtig: Der Angreifer nutzt gültige gestohlene Tokens [2].

  • Einen offenen Sonden-Pull-Request zu ignorieren.

    So geht es richtig: Er bedeutet, dass das Konto kompromittiert ist [1].

Häufige Fragen

Was ist die GitHub-Kampagne wfx-loot?

Eine Kampagne, die mit gestohlenen GitHub-Tokens einen CI-Secret-Stealer in Repositories einschleust [1].

Wie groß ist der Angriff wfx-loot?

4.837 Konten sondierten 61.764 Repositories; der Stealer lief in mindestens 1.806 [1].

Wie funktioniert der wfx-loot-Stealer?

Sonden-PR, dann ein Skript mit rund 1.500 Zeilen über Workflow oder npm-Hook, dann Rückgängigmachen und Löschen der Protokolle [1].

Warum reicht das Erneuern von Secrets nicht aus?

Aikido beschreibt AWS- und Azure-Hintertüren, die eine Erneuerung überstehen; StepSecurity rät, die Persistenz zu entfernen, weil die Erneuerung allein das nicht tut [1][2].

Wie prüfe ich, ob meine GitHub-Repositories betroffen sind?

Nach dem Sonden-PR und den Commit-Nachrichten suchen, dann auf fehlende Laufnummern achten [2].

Was tun, wenn der Stealer lief?

Alle erreichbaren Secrets erneuern, Pakete prüfen und Cloud-Persistenz entfernen [2].

Welche Pakete waren betroffen?

Aikido nennt Packagist digitalelvis/neuronai-studio 3.14.3 und Go docker-env v1.0.278 und v1.0.280; SafeDep nennt weitere [1][5].

Wer steckt hinter wfx-loot und wie kam er an die Tokens?

In den Berichten nicht identifiziert; StepSecurity führte einige Sonden auf Tokens der Fly.io-GitHub-App zurück und hat nicht geklärt, wie diese beschafft wurden [2].

Glossar

GitHub Actions
Das in GitHub integrierte CI/CD-System, das bei Codeänderungen Workflows ausführt [1].
CI-Secret
Ein Passwort, Token oder Schlüssel, das für automatisierte Build-Workflows gespeichert ist [1].
OIDC-Token
Ein kurzlebiges Identitätstoken, das ein Workflow gegen Cloud-Zugriff eintauschen kann [1].
Sonden-Pull-Request
Ein harmlos wirkender PR, mit dem der Schreibzugriff getestet wird [2].
Persistenz
Zugriff, den ein Angreifer behält, nachdem die ursprünglichen Zugangsdaten geändert wurden [2].

Quellen

  1. wfx-loot campaign pushes CI secret stealer to tens of thousands of repositories Aikido Security · 2026-11-12
  2. WFX Phantom: The GitHub Actions Secret Stealer That Deletes Its Tracks StepSecurity · 2026-11-12
  3. Hackers compromise 4,800 GitHub accounts to steal cloud credentials BleepingComputer · 2026-11-12
  4. Attacker Targets 60,000 GitHub Repositories in Credential Theft Campaign SecurityWeek · 2026-11-12
  5. wfx: GitHub Actions Credential Stealer Hits 8,000 Repos SafeDep · 2026-11-12
  6. Managing your personal access tokens GitHub Docs
Diesen Ratgeber teilen Telegram WhatsApp X
0 Likes

Kommentare

Top-Kommentare

Über das Pouyam-Team Redaktionelle Richtlinien

Auf Pouyam

Pouyam entdecken

Die Ratgeber sind nur eine Ecke von Pouyam. Hier geht es weiter.

Schnellnavigation