wfx-loot var en kampagne for at stjæle adgangsoplysninger, hvor kompromitterede GitHub-konti blev brugt til at undersøge kodearkiver og – når kontiene havde skriverettigheder – indsætte kode, der kunne stjæle hemmeligheder fra miljøer til kontinuerlig integration (CI). Aikido opgjorde 4.837 kompromitterede konti og pull requests i 61.764 arkiver. Ifølge virksomhedens offentliggjorte tal blev koden kørt, og adgangsoplysninger blev sendt ud fra mindst 1.835 arkiver.
4
9
Hvornår foregik wfx-loot-kampagnen?
Aktiviteten begyndte omkring 10. november 2026 kl. 12.45 UTC. En rapport angiver, at perioden med probe-pull requests fortsatte til 11. november kl. 15.00 UTC – cirka 26 timer og 15 minutter.
6
7 Det beskriver det observerede tidsrum for sonderingerne, ikke en bekræftelse på, at al aktivitet med skadeprogrammet eller senere brug af stjålne adgangsoplysninger ophørte dér.
Kampagnens hovedtal dækker forskellige trin:
- 4.837 konti blev meldt kompromitteret.
- 61.764 kodearkiver modtog probe-pull requests. Det er antallet af arkiver, der blev undersøgt – ikke antallet, hvor skadeprogrammet med sikkerhed blev kørt.
- Mindst 1.835 arkiver indgår i Aikidos offentliggjorte opgørelse over kørsler af skadeprogrammet og stjålne adgangsoplysninger.
9
Nogle samtidige rapporter nævnte det lavere tal 1.806.
6
10 De tilgængelige rapporter forklarer ikke forskellen, så tallene bør betragtes som særskilte opgørelser frem for lægges sammen. Det foreliggende kildemateriale underbygger heller ikke den senere påstand om cirka 1.970 bekræftede offentlige tilfælde blandt mere end 66.000 mål.
Sådan testede angriberne adgangen
Angriberne oprettede pull requests med titlen docs: dependency audit notes fra grene med navnet wfx-docs. De fungerede som sonder: Formålet var at teste, om en kompromitteret konto havde skriverettigheder til det pågældende arkiv.
3
4
9
Når adgangen tillod det, indsatte angriberne en payload, der stjal hemmeligheder fra CI-miljøet. Kampagnen byggede på gyldige, stjålne adgangsoplysninger – ikke på en sårbarhed i GitHub Actions.
4
9 OX Security beskrev skadeprogrammet som ét shell-script på omkring 1.500 linjer.
31
Rapporter beskriver, at ondsindrede ændringer og workflow-logfiler i nogle tilfælde blev fjernet, hvilket gjorde efterforskningen vanskeligere.
1
6 De tilgængelige oplysninger understøtter det overordnede mønster med sondering, afvikling af payload og oprydning. De fastslår ikke, at alle rapporterede udrulningsmetoder eller commit-beskeder blev brugt ved hver infektion.
Hvad forsøgte skadeprogrammet at stjæle?
Det dokumenterede mål var adgangsoplysninger, som CI-jobs kunne nå – herunder GitHub Actions-hemmeligheder og cloud-adgangsoplysninger. Rapporter beskriver også forsøg på at få fat i tokens til AI-tjenester.
3
9 OX Securitys analyse nævner blandt andet adgangsoplysninger til AWS, Azure og Google Cloud.
31 Andre rapporter siger, at skadeprogrammet kunne lede efter hemmeligheder i runner-processers hukommelse, men de foreliggende uddrag viser ikke, hvor ofte den metode virkede.
17
29
En sammenfattet rapport beskriver forsøg på at udvide adgangen gennem ændringer i AWS-tillidspolitikker og fødererede legitimationsoplysninger i Azure.
5 Betragt det som rapporteret adfærd, ikke som bevis for, at hvert berørt kodearkiv – eller hver cloud-konto – blev ændret. Dokumentationen handler om tyveri af adgangsoplysninger; den viser ikke, at kildekode eller kundedatabaser blev stjålet.
9
15
Hvad viser rapporternes signaler – og hvad viser de ikke?
En rapport oplyste, at 92 % af de 10.431 probe-pull requests, der blev sendt via samarbejds- eller organisationsadgang, stadig var åbne, da de blev undersøgt.
10
19 Det tyder på, at mange sonderinger endnu ikke var blevet håndteret på det tidspunkt. Det beviser ikke, at ingen arkivejere eller sikkerhedsteams havde opdaget dem. Procenten gælder ikke nødvendigvis alle pull requests.
En vejledning til efterforskning rapporterede også 173 probe-pull requests fra 19 konti, der brugte tokens via Fly.io GitHub App. Det viser ikke i sig selv, at Fly.ios infrastruktur blev kompromitteret, eller at payloaden blev kørt i hvert arkiv, som disse tokens nåede.
37
Hvad bør sikkerhedsteams undersøge?
Hvis jeres organisation kan være berørt, bør I skelne mellem, om et arkiv blev undersøgt, om payloaden blev indsat, om den blev kørt, og om adgangsoplysninger blev stjålet. Det er forskellige fund.
- Søg efter tegn på sondering. Gennemgå pull requests med titlen
docs: dependency audit notes og grene med navnet wfx-docs i arkiver, som jeres konti kunne skrive til.
9
- Gennemgå CI- og audit-logfiler. Tjek workflow-kørsler, commits, grenaktivitet og tilgængelige cloud-logfiler. Manglende løbenumre for workflow-kørsler kan være et spor, fordi rapporter beskriver slettede kørsler og logfiler. Et hul i nummereringen beviser dog ikke i sig selv, at et arkiv er kompromitteret.
1
24
- Tilbagekald mistænkelig adgang. Tilbagekald GitHub-tokens, der kan være kompromitteret, og gennemgå konto-, samarbejdspartner- og GitHub App-adgang.
- Skift eksponerede hemmeligheder bredt. Hvis payloaden blev kørt, bør hemmeligheder og cloud-roller, som workflowet kunne tilgå, betragtes som potentielt kompromitterede – ikke kun de adgangsoplysninger, der kan ses i bevarede logfiler.
3
9
- Undersøg vedvarende cloud-adgang. Se efter uventede ændringer i AWS-tillidspolitikker og Azure-applikationer eller fødererede legitimationsoplysninger samt uautoriserede nøgler og andre adgangsændringer.
5
- Sikr dokumentationen. Gem resterende audit-oplysninger og logfiler, før I rydder op, og noter, hvilket trin i angrebet der faktisk er dokumentation for.