Kampanjen wfx-loot använde kapade GitHub-konton för att undersöka kodarkiv och, där kontona hade skrivrättigheter, lägga in kod som kunde stjäla hemligheter från miljöer för kontinuerlig integration (CI). Aikido uppger att 4 837 konton komprometterades och att pull-förfrågningar skickades till 61 764 arkiv. Enligt företagets publicerade sammanställning kördes koden och uppgifter skickades ut från minst 1 835 arkiv.
4
9
När pågick wfx-loot?
Aktiviteten började omkring 10 november 2026 kl. 12.45 UTC. En rapport anger att perioden med test-pull-förfrågningar fortsatte till 11 november kl. 15.00 UTC – ungefär 26 timmar och 15 minuter.
6
7 Det beskriver den observerade perioden för förfrågningarna, inte ett bekräftat slut på all aktivitet eller på eventuell senare användning av stulna uppgifter.
Siffrorna gäller olika steg i angreppet:
- 4 837 konton rapporterades komprometterade.
- 61 764 arkiv fick test-pull-förfrågningar. Det är antalet arkiv som undersöktes, inte antalet där skadlig kod bekräftats ha körts.
- Minst 1 835 arkiv ingick i Aikidos publicerade siffra för körd kod och stulna uppgifter.
9
Vissa rapporter från samma period angav en lägre siffra: 1 806.
6
10 De tillgängliga rapporterna förklarar inte skillnaden. Siffrorna bör därför ses som separata rapporterade sammanställningar, inte slås ihop. Underlaget styrker inte heller ett senare påstående om omkring 1 970 bekräftade offentliga fall bland fler än 66 000 mål.
Så testade angriparna åtkomsten
Angriparna öppnade pull-förfrågningar med rubriken docs: dependency audit notes från grenar med namnet wfx-docs. Förfrågningarna fungerade som sondering: de testade om ett kapat konto hade skrivrättigheter till arkivet.
3
4
9
Där åtkomsten räckte till försökte angriparna lägga in en nyttosträckkod som kunde stjäla hemligheter från CI-miljön. Angreppet byggde på giltiga, stulna inloggningsuppgifter – inte på en sårbarhet i GitHub Actions.
4
9 OX Security beskriver skadeprogrammet som ett enda skalskript på omkring 1 500 rader.
31
Rapporter beskriver också fall där skadliga ändringar och arbetsflödesloggar togs bort, vilket försvårade efterföljande granskning.
1
6 Underlaget stödjer det övergripande mönstret med sondering, körning av kod och upprensning, men visar inte att varje rapporterad metod eller varje commit-meddelande förekom vid alla infektioner.
Vilka uppgifter försökte koden komma åt?
Det dokumenterade målet var att samla in uppgifter som CI-jobb kunde nå, bland annat hemligheter i GitHub Actions och molnuppgifter. Rapporter beskriver även försök att komma åt token för AI-tjänster.
3
9 OX Security listar inloggningsuppgifter för AWS, Azure och Google Cloud bland målen.
31 Separata rapporter uppger att skadeprogrammet kunde söka efter hemligheter i körmiljöns processminne, men underlaget visar inte hur ofta den metoden lyckades.
17
29
En sammanfattning beskriver försök att utöka åtkomsten genom ändringar i AWS:s trust policy och federerade inloggningsuppgifter i Azure.
5 Det ska ses som rapporterat beteende, inte som bevis för att varje drabbat arkiv – eller varje molnkonto – ändrades. Beläggen handlar om stöld av inloggningsuppgifter; de visar inte att källkod eller kunddatabaser stals.
9
15
Vad visar rapporterna – och vad visar de inte?
En rapport uppgav att 92 procent av de 10 431 test-pull-förfrågningar som skickades via samarbets- eller organisationsåtkomst fortfarande var öppna när de kontrollerades.
10
19 Det tyder på att många förfrågningar ännu inte hade hanterats då, men bevisar inte att ingen arkivägare eller säkerhetsgrupp hade upptäckt dem. Andelen gäller inte nödvändigtvis samtliga pull-förfrågningar.
En undersökningsguide rapporterade också 173 test-pull-förfrågningar från 19 konton med token via Fly.io:s GitHub-app. Det visar i sig inte att Fly.io:s infrastruktur utsattes för intrång eller att den skadliga koden kördes i varje arkiv som nåddes genom dessa token.
37
Vad bör försvarare kontrollera?
Om din organisation kan ha berörts, skilj mellan att ett arkiv sonderades, att kod lades in, att koden kördes och att uppgifter skickades ut. Det är olika fynd och bör inte behandlas som likvärdiga.
- Sök efter tecken på sondering. Granska pull-förfrågningar med rubriken
docs: dependency audit notes och grenar med namnet wfx-docs i arkiv som era konton kan skriva till.
9
- Granska CI- och granskningsloggar. Kontrollera arbetsflödeskörningar, commits, grenaktivitet och tillgängliga molnloggar. Luckor i numreringen av arbetsflödeskörningar kan vara en ledtråd eftersom rapporter beskriver borttagna körningar och loggar, men en lucka bevisar inte i sig ett intrång.
1
24
- Återkalla misstänkt åtkomst. Återkalla GitHub-token som kan ha komprometterats och granska åtkomsten för konton, samarbetspartner och GitHub-appar.
- Rotera exponerade hemligheter brett. Om koden kördes bör hemligheter och molnroller som arbetsflödet kunde nå betraktas som potentiellt komprometterade – inte bara uppgifter som syns i loggar som finns kvar.
3
9
- Leta efter kvarvarande molnåtkomst. Undersök oväntade ändringar i AWS trust policy och i Azure-appar eller federerade inloggningsuppgifter, liksom obehöriga nycklar och andra ändringar i åtkomst.
5
- Säkra bevismaterial. Spara kvarvarande granskningsposter och loggar innan ni städar upp, och dokumentera vilket steg i angreppet som faktiskt stöds av bevis.