Aikido Security hat am 12. November eine groß angelegte Kampagne zum Diebstahl von Geheimnissen auf GitHub enthüllt, die unter dem Namen wfx-loot verfolgt wird. Ab dem 10. November, gegen 12:45 Uhr UTC, begann ein Angreifer, gestohlene GitHub-Zugangsdaten zu nutzen, um Probe-Pull-Requests in 61.764 Repositories zu öffnen und eine Payload einzuschleusen, die Continuous-Integration-(CI-)Geheimnisse und Cloud-Zugangsdaten stiehlt — darunter Schlüssel für KI-Dienste wie OpenAI, Anthropic, Gemini, Cursor und Copilot.
Laut Aikido öffneten 4.837 kompromittierte Konten 61.839 Probe-Pull-Requests, alle mit dem Titel „docs: dependency audit notes“, von Branches namens „wfx-docs“. Mindestens 1.806 Repositories führten die Payload aus — und das Unternehmen geht davon aus, dass die tatsächliche Zahl höher liegt, weil der Angreifer Ausführungsprotokolle löscht. Etwa 92 % der Sonden waren bei Veröffentlichung des Berichts noch offen, was darauf hindeutet, dass die meisten Verantwortlichen es noch nicht bemerkt hatten.
So funktioniert der Angriff
Der Angriff läuft in drei Schritten ab. Zuerst öffnet der Angreifer den Probe-Pull-Request, der den Schreibzugriff auf das Repository bestätigt. Dann schleust er die Payload auf einem von drei Wegen ein: indem er rund 1.500 Zeilen zu einem bestehenden Workflow hinzufügt, in Commits wie „ci: refresh build cache“; indem er ein Skript und einen „postinstall“-Hook in der package.json erstellt, der bei jedem „npm install“ läuft; oder indem er einen neuen Workflow auf einem Wegwerf-Branch anlegt. Schließlich macht der Angreifer die Änderungen innerhalb einer Minute rückgängig und löscht den Workflow-Lauf und seine Logs — eine fehlende Laufnummer in der Historie ist oft die einzige Spur.
Was die Payload stiehlt — und die KI-Schlüssel im Visier
Die Payload ist ein einziges Shell-Skript mit etwa 1.500 Zeilen. Sie sammelt GitHub-Actions-Geheimnisse, OIDC-Token, Zugangsdaten-Dateien von AWS, Azure und GCP, SSH- und GPG-Schlüssel, .env- und .pem-Dateien, Shell-Verläufe und sogar den Speicher der Prozesse auf dem Runner. Zu ihren Zielen gehören Zugangsdaten von KI-Anbietern und KI-Tools: OpenAI, Anthropic/Claude, Gemini, Hugging Face, Cursor, Copilot, Codex, Continue, Codeium, Aider, Weights & Biases und Ollama.
Nach dem Sammeln versucht das Skript, seine Rechte auszuweiten: Es tauscht OIDC-Token gegen Cloud-Sitzungen, erstellt langlebige Zugangsschlüssel in AWS und gibt sich in GCP als Dienstkonten aus. Um eine Rotation von Zugangsdaten zu überleben, fälscht es Erfolgs-Statuschecks, um den Branch-Schutz zu umgehen, schreibt AWS-Rollen-Vertrauensrichtlinien so um, dass der Zugriff für jedes Konto offensteht, und injiziert föderierte Zugangsdaten mit dem Präfix „wfx-ci-“ in Azure-Anwendungen. In dieser Kampagne wurden Daten nur per HTTP POST an zwei vom Angreifer kontrollierte Server gesendet.
Vergiftete Pakete und die Verbindung zu GhostAction
Die Kampagne erreichte auch veröffentlichte Pakete über automatische Veröffentlichungs-Trigger: Version 3.14.3 des Packagist-Pakets „digitalelvis/neuronai-studio“ enthielt die Payload — jede Maschine, die diese Version installiert oder geöffnet hat, sollte als kompromittiert gelten — und zwei Tags des Go-Moduls „github.com/onuragtas/docker-env“ trugen die Payload in einer Workflow-Datei. SafeDep zählte 8.093 öffentliche Repositories mit bösartigen Commits, eine Zahl, die Commits und nicht Ausführungen misst, weshalb sie von Aikidos Zählung abweicht.
Es gibt Überschneidungen mit der GhostAction-Welle vom Oktober, die „Sicherheits-Audit“-Workflows nutzte, um Geheimnisse aus mehr als 30.000 Repositories zu stehlen: Im Oktober betroffene Konten wurden jetzt mit deutlich höherer Wahrscheinlichkeit erneut getroffen, und in über 100 Repositories wurde wfx-loot in GhostActions eigene Workflow-Dateien injiziert. Dennoch bewertet Aikido die beiden als getrennte Kampagnen, wahrscheinlich von unterschiedlichen Akteuren, weil sich Infrastruktur, Werkzeuge und Vorgehen unterscheiden.
Was zu tun ist
Repository-Betreuer sollten nach Pull-Requests mit dem Titel „docs: dependency audit notes“, „wfx-docs“-Branches oder Commits wie „ci: refresh build cache“ und „chore: add ci helper“ ab dem 10. November suchen, sowie nach Lücken in der Nummerierung der Workflow-Läufe. Falls die Payload ausgeführt wurde, rät Aikido davon auszugehen, dass alle Geheimnisse und Cloud-Rollen, auf die die Workflows zugreifen konnten, kompromittiert sind: Zugangsdaten rotieren, AWS-Rollen und föderierte Azure-Zugangsdaten prüfen und die verseuchten Paketversionen entfernen.
Bildnachweis: Offizielles Bild aus dem Blog von Aikido Security zur wfx-loot-Kampagne. Quelle: Aikido Security.
Quellen: Aikido Security — wfx-loot campaign pushes CI secret stealer to tens of thousands of repositories; GBHackers — GhostAction Attack Hits Tens of Thousands of GitHub Repositories; OSSprey — WFX and GhostAction: Tracing the Links Between Two GitHub Attacks; Corgea — WFX Phantom (wfx-loot) GitHub Actions secret stealer.
Transparenz: Dieser Artikel wurde mit Hilfe künstlicher Intelligenz erstellt, unter Abgleich öffentlicher Beiträge auf X und Quellen aus dem Internet. Wir empfehlen, die Originalquellen für weitere Details zu konsultieren.
Von Muse