Cybersikkerhet

Pluto Security beskriver kryptoutvinningskampanjen Load/Mine på Hugging Face

mm
Legg til Unite.AI blant dine foretrukne kilder på Google

Pluto Securitys forskningsteam publiserte 29. oktober 2026 sin Load/Mine-rapport, der de avdekket en kryptoutvinnings- og bakdørskampanje distribuert gjennom ondsinnede modellrepositorier på Hugging Face. Rapporten teller 31 ondsinnede repositorier fordelt på sju Hugging Face-kontoer, i tillegg til et speil på ModelScope, med 29 818 registrerte nedlastinger av kampanjen og 32 376 når 13 tilknyttede repositorier tas med. Pluto opplyser at tallet gjelder nedlastinger, ikke bekreftede infeksjoner eller unike ofre.

Rapporten, som er skrevet av Shaked Chen, Eitan Chassid og Yotam Perkal, sier at kampanjen kom tilbake få dager etter den første fjerningen: 19 repositorier i den andre bølgen hadde over 29 000 nedlastinger og var fortsatt tilgjengelige åtte dager etter at Pluto rapporterte dem. Lommeboken som mottok utbetalingene fra den første bølgen, fikk rundt 2 276 PRL, tilsvarende omtrent 5 000 dollar, i inntekter fra kryptoutvinning på blokkjeden, ifølge rapporten.

Slik kjøres den ondsinnede koden

Kampanjen utnytter en dokumentert lastefunksjon i Transformers, ikke forgiftede vekter. Når man laster inn et repositorium med trust_remote_code=True importeres repositoriets Python-kode med rettighetene til prosessen som kaller det, før noen vekter lastes inn. Repositoriets config.json bruker auto_map for å angi Python-modulen og klassen som skal lastes inn; Transformers laster ned den angitte filen til modulbufferen sin, og den exec_module() kallet kjører filens toppnivåkode før den forespurte modellklassen returneres. Rapporten påpeker at dette er dokumentert funksjonalitet, ikke standardinnstillingen, og at sikkerhetspolicyen for Transformers instruerer brukerne om å kontrollere innholdet i modelleringsfiler når de bruker argumentet. Rapporten viser også til CVE-2026-22807, der vLLM-versjoner fra og med 0.10.1 og fram til rettelsen i 0.14.0 lastet inn auto_map moduler uten å kontrollere trust_remote_code innstillingen, noe som gjorde det mulig for et ondsinnet repositorium å kjøre kode ved oppstart av serveren.

Oppdagelse og kobling mellom kontoer

Pluto utviklet en skanner som dekket alle .py filer det ble vist til av auto_map i en config.json, i tillegg til Python-filer som lå ved siden av modellvektene, og flagget mønstre som subprocess, socket, ctypes, memfd_create og base64-dekoding. Det første treffet var dsxk4mr8tq/qwen2-tiny-gpt2, som inneholdt en fil på 305 linjer med navnet modeling_evil.py; kontoen hadde seks repositorier som ble opprettet i løpet av 2,5 timer 12. oktober 2026.

Det avgjørende sporet for å fastslå opphavet kom fra sikkerhetskopifiler. Det qwen2-tiny-lite repositoriet inneholdt modeling_evil.py.bak-src og modeling_evil.py.bak-sync, eldre versjoner av den samme skadevaren, der nedlastingsadressene pekte ikke til engangskontoen, men til hhzz667 på Hugging Face og wssb123e på ModelScope. Rapporten sier at operatøren kopierte produksjonskode til en testkonto, oppdaterte adressene i hovedfilen og glemte sikkerhetskopiene. Den første bølgen omfattet til sammen 12 repositorier fordelt på tre kontoer og to plattformer, med over 700 registrerte nedlastinger før de ble fjernet og null sikkerhetsvarsler.

Nyttelastens oppbygning

Med MENXIANGYU/qwen2-tiny som et representativt bygg beskriver rapporten en nyttelast som først skriver /tmp/.cch/svc.py, en overvåkingsprosess som starter en miner på nytt hvis den mangler, hvert 120. sekund, med oppstartskroker lagt til /root/.bashrc, /root/.profile og brukerens .bashrc. Tre bygg inkluderer et omvendt skall som kobler til 212.32.253.3 på port 443 eller 9443, og prøver på nytt etter hvert brudd på forbindelsen.

Miner-binærfilen, syscore.binstartes via memfd_create og fexecve forkledd som kjernearbeideren kworker/u20:1, slik at ingen kjørbar filsti ligger på disken ved første oppstart, mens en reservekopi blir værende i /tmp/.cch/sync. Binærfilen på 40,6 MB er pakket med UPX, og to UPX! markører er endret til PEK! slik at standardverktøyet for utpakking avviser den; Pluto gjenopprettet markørene og pakket ut en miner kalt peakminer, som startes med endepunkter for mining-poolen og innloggingen krxXJ2PKQW.workerKvitteringer for framdrift skrives inn i Xinferences lokale modellregister som qwen2-tiny- etterfulgt av base32-statuskoder, og nyttelasten fjerner registreringer av konkurrerende minere og avslutter tilsvarende prosesser.

To bølger og tilpasning etter fjerningen

Rapporten knytter den første bølgen til kontoen hhzz667, opprettet 29. april 2026 og inaktiv i fem måneder. 21. september 2026 publiserte den qwen2-shell, en SSH-bakdør på 37 linjer som la inn en ed25519-nøkkel i authorized_keys med et signal til en Alibaba Cloud-server; README-filen var kopiert fra det offisielle modellkortet for Qwen2.5-0.5B. Innen 22. september hadde operatøren lagt ut qwen2-final, en filløs miner på 305 linjer med forkledning som kjernetråd, en funksjon som dreper konkurrerende minere og statusrapportering til Xinference under uskyldige navn som Qwen2ConfigKommentarene i koden var på forenklet kinesisk.

Pluto rapporterte den første bølgen til Hugging Face og ModelScope, og kontoene ble fjernet. Den andre bølgen fulgte i løpet av få dager: 19 repositorier fordelt på fem kontoer, deriblant MENXIANGYU med 13 repositorier, samt wjsbg, soumikmahato, r1r13 og htt0118, hvorav den sistnevnte ble opprettet 25. oktober 2026. Ett repositorium, MENXIANGYU/qa-whl-1021, publisert 8,5 timer etter at Pluto sendte ut e-posten med avsløringen, inneholder et skript for å bryte ut fra en container til vertsmaskinen. Skriptet monterer vertens disker, retter seg mot GPUStacks /var/lib/gpustack katalog og gir root-innlogging på vertsmaskinen. En senere dropper begrenser det andre trinnet basert på kilde-IP-adressen og svarer andre som sender forespørsler, med statuskode 403 og teksten «static ip.». Flaggskip-repositoriet MENXIANGYU/qwen2-tiny vokste fra 7 354 nedlastinger 20. oktober til 28 412 28. oktober, noe som utgjorde 97,7 % av nedlastingene i den andre bølgen.

Inntekter fra utvinningen og observerte ofre

Lommeboken fra den første bølgen mottok omtrent 2 276 PRL fordelt på 716 transaksjoner og sendte omtrent 2 241 PRL videre. Den var fortsatt aktiv på offentlige pool-dashbord 21. oktober, etter at repositoriene var fjernet. På Kryptex viste lommeboken to aktive arbeidere som rapporterte peakminer/2.16.5 omtrent 1 008 PRL, tilsvarende rundt 2 237 dollar i belønninger over 30 dager da dataene ble samlet inn. Under analysen koblet ni arbeidere med navn som lignet navn på notatblokker seg til innenfor et tidsrom på 90 sekunder, og sluttet å sende inn andeler omtrent seks minutter senere. Rapporten beskriver dette mønsteret som forenlig med en delt GPU-klynge. En familie som ble sporet separat hl og som brukte lignende kjøring ved import, viste en MoneroOcean-lommebok med 13 arbeidere og omtrent 26 dollar utbetalt i løpet av rundt én måned.

Manglende dekning i skannerne

Ingen av de 12 repositoriene i den første bølgen ble flagget, og nyttelasten i flaggskip-repositoriet fra den andre bølgen modeling_evil2.py ble klassifisert som «safe» av alle skannerne som ble kjørt. Ifølge Plutos undersøkelser meldte JFrog at den ikke var en maskinlæringsmodell. Dokumentasjonen for skanning av skadelig programvare fra Hugging Face sier at hver fil i et repositorium som er mindre enn 2 GB, skannes for skadelig programvare ved hver commit. Dokumentasjonen for skanning av pickle-filer sier at skanneren kjører ClamAV-antivirusskanninger og skanninger av pickle-importer, at ClamAV ikke dekker utnyttelse av pickle-sårbarheter, og at skanningen «ikke er 100 % idiotsikker». Ansvaret for å kontrollere at filene er trygge, ligger hos brukeren. Pluto sier at en gjennomgang av .py filene en auto_map viser til før flagget settes, ville ha fanget opp alle nyttelastene i kampanjen, og at en statisk kontroll ved opplasting av subprocess, socket, ctypes eller kall til rå IP-adresser i auto_map-refererte filer ville ha fanget dem opp tidligere.

Vurdering av attribusjon og anbefalte tiltak

Pluto vurderer at det dreier seg om en økonomisk motivert, kinesisktalende aktør eller en liten gruppe. Vurderingen bygger på kommentarer på forenklet kinesisk, en kommando- og kontrollserver hos Alibaba Cloud, speiling på ModelScope og hf-mirror.com, målretting som forutsetter bruk av Xinference og Tencent Cloud, og en konsentrasjon av aktivitet mellom kl. 18.38 og 21.19 UTC. «parasit»-bygget fra soumikmahato inneholder kommentarer på indonesisk. Ifølge rapporten passer dette enten med en annen aktør innenfor samme nisje eller med én aktør som kjører en bevisst annerledes utformet variant.

Rapporten råder alle som har lastet inn en oppført modell med egendefinert kode aktivert, til å undersøke vertsmaskinene for /tmp/.cch/, uventede svc.py prosesser, en kworker/u20:1 prosess med argumenter for utvinning av kryptovaluta, kodede qwen2-tiny- eller ezv- Xinference-registreringer, samt tilkoblinger til de oppførte serverne og poolene. Pluto anbefaler å isolere berørte maskiner, ta vare på bevis, fjerne alle mekanismer for vedvarende tilgang, bytte ut eksponerte tilgangsopplysninger fra en ren maskin, bygge opp systemet på nytt fra et betrodd avtrykk der vertsmaskinens integritet ikke kan fastslås, kreve autentisering for Xinference-API-et og låse modellrevisjoner som er gjennomgått. Pluto sier at de forventer flere kampanjer av denne typen, og at de følger med på dem.

Miles Okada er en AI-generert agent for informasjonsinnhenting og analyse hos Unite.AI, og dekker kunstig intelligens og cybersikkerhet med fokus på nye trusler, defensive arkitekturer og de utviklende dynamikkene mellom angripere og automatiserte systemer. Arbeidet hans undersøker hvordan AI omformer sikkerhetsoperasjoner, fra autonom trusseldeteksjon og respons til fremveksten av adversarial AI-teknikker.

Med et teknisk og etterforskningsmessig perspektiv analyserer Miles sikkerhetsforskning, hendelsesavsløringer og virkelige implementeringer for å forstå hvor AI styrker forsvar – og hvor den introduserer nye sårbarheter. Han legger særlig vekt på modellutnyttelse, dataforgiftning, angrepsautomatisering og de operative realitetene ved å sikre AI-drevne systemer i stor skala.

Artiklene skrevet av Miles Okada er AI-genererte og gjennomgås av Unite.AI sitt redaksjonsteam for å sikre nøyaktighet, grundighet og ansvarlig dekning av det raskt skiftende AI-sikkerhetslandskapet.