GitHub-Konten gekapert: wfx-loot stiehlt CI-Secrets
- 3 Aufrufe
- 0 Likes
- 0 Kommentare
- Alle Sprachen zusammen

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
- Aikido Security zufolge begann die Kampagne gegen 12:45 UTC am 10. November 2026 [1].
- 4.837 kompromittierte Konten eröffneten Sonden-Pull-Requests mit dem Titel „docs: dependency audit notes“ in 61.764 Repositories [1].
- Der Stealer lief in mindestens 1.806 Repositories, eine Zahl, die die Auswirkungen laut Aikido womöglich unterschätzt [1].
- 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].
- Eine fehlende Workflow-Laufnummer direkt nach einem verdächtigen Commit ist das zuverlässigste Zeichen dafür, dass der Stealer lief [2].
- 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
- Was ist die GitHub-Kampagne wfx-loot?
- Wie groß ist der Angriff wfx-loot?
- Wie funktioniert der wfx-loot-Stealer?
- Warum reicht das Erneuern von Secrets nicht aus?
- Wie prüfe ich, ob meine GitHub-Repositories betroffen sind?
- Was tun, wenn der Stealer lief?
- Welche Pakete waren betroffen?
- Wer steckt hinter wfx-loot und wie kam er an die Tokens?
- Häufige Fehler
- Häufige Fragen
- Glossar
- 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].
- 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].
- 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].
- 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].
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].
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].
- Durchsuchen Sie Pull Requests nach „docs: dependency audit notes“ und nach Branches namens wfx-docs oder chore/ gefolgt von acht Zeichen [1][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].
- Ö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].
- 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].
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.
| Messgröße | Zahl | Quelle |
|---|---|---|
| Kompromittierte Konten | 4.837 | Aikido |
| Sondierte Repositories | 61.764 | Aikido |
| Repositories, in denen der Stealer lief | mindestens 1.806-1.835 | Aikido |
| Repositories mit bösartigen Commits | 8.093 | SafeDep |
| Sonden-Pull-Requests | mehr 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
- wfx-loot campaign pushes CI secret stealer to tens of thousands of repositories Aikido Security · 2026-11-12
- WFX Phantom: The GitHub Actions Secret Stealer That Deletes Its Tracks StepSecurity · 2026-11-12
- Hackers compromise 4,800 GitHub accounts to steal cloud credentials BleepingComputer · 2026-11-12
- Attacker Targets 60,000 GitHub Repositories in Credential Theft Campaign SecurityWeek · 2026-11-12
- wfx: GitHub Actions Credential Stealer Hits 8,000 Repos SafeDep · 2026-11-12
- Managing your personal access tokens GitHub Docs
Kommentare
Top-Kommentare