Cybersikkerhed

Pluto Security beskriver kryptominingkampagne på Hugging Face

mm
Føj Unite.AI til dine foretrukne kilder på Google

Pluto Securitys forskerhold offentliggjorde den 29. oktober 2026 sin rapport om Load/Mine, hvori de afslørede en kampagne med kryptomining og en bagdør, der blev spredt via ondsindede modelrepositories på Hugging Face. Rapporten tæller 31 ondsindede repositories fordelt på syv Hugging Face-konti samt et spejl på ModelScope. Kampagnen havde 29.818 registrerede downloads, eller 32.376, når 13 tilknyttede repositories medregnes. Pluto oplyser, at tallet angiver downloads, ikke bekræftede infektioner eller unikke ofre.

Ifølge rapporten, som er skrevet af Shaked Chen, Eitan Chassid og Yotam Perkal, vendte kampagnen tilbage få dage efter den første nedlukning: 19 repositories i anden bølge havde over 29.000 downloads og var stadig aktive otte dage efter, at Pluto havde indberettet dem. Tegnebogen, der modtog udbetalingen fra første bølge, fik ifølge rapporten omkring 2.276 PRL, svarende til cirka 5.000 dollars, i miningindtægter registreret on-chain.

Sådan køres den ondsindede kode

Kampagnen udnytter en dokumenteret indlæsningsfunktion i Transformers i stedet for manipulerede vægte. Når et repository indlæses med trust_remote_code=True importeres repositoryets Python-kode med kalderens rettigheder, før nogen vægte indlæses. Repositoryets config.json bruger auto_map til at angive navnet på det Python-modul og den klasse, der skal indlæses. Transformers downloader den angivne fil til modulets cache, og exec_module() kaldet kører filens kode på øverste niveau, før den anmodede modelklasse returneres. Rapporten bemærker, at dette er dokumenteret adfærd, ikke standardindstillingen, og at Transformers’ sikkerhedspolitik instruerer brugerne i at kontrollere indholdet af modelleringsfiler, når argumentet bruges. Rapporten henviser også til CVE-2026-22807, hvor vLLM-versioner fra 0.10.1 og frem til rettelsen i 0.14.0 indlæste auto_map moduler uden at kontrollere trust_remote_code indstillingen, hvilket gjorde det muligt for et ondsindet repository at køre kode ved serverens opstart.

Opdagelse og sammenkædning af konti

Pluto byggede en scanner, der dækkede alle .py filer, der refereres til af auto_map i et config.json, samt Python-filer, der lå ved siden af modelvægtene, og markerede mønstre som subprocess, socket, ctypes, memfd_create og base64-afkodning. Det første fund var dsxk4mr8tq/qwen2-tiny-gpt2, som indeholdt en fil på 305 linjer med navnet modeling_evil.py; kontoen havde seks repositories, der var oprettet inden for 2,5 timer den 12. oktober 2026.

Bruddet i sporing af ophavet skyldtes sikkerhedskopifiler. Det qwen2-tiny-lite repository indeholdt modeling_evil.py.bak-src og modeling_evil.py.bak-sync, ældre versioner af den samme malware, hvis download-URL’er pegede ikke på engangskontoen, men på hhzz667 på Hugging Face og wssb123e på ModelScope. Rapporten siger, at operatøren kopierede produktionskode til en testkonto, opdaterede URL’erne i hovedfilen og glemte sikkerhedskopierne. Første bølge omfattede i alt 12 repositories fordelt på tre konti og to platforme. Før de blev fjernet, blev der registreret over 700 downloads og nul sikkerhedsadvarsler.

Nyttelastens opbygning

Med MENXIANGYU/qwen2-tiny som repræsentativ version beskriver rapporten en nyttelast, der først skriver /tmp/.cch/svc.py, en overvågningsproces, der genstarter en manglende miner hvert 120. sekund, med opstartskroge tilføjet til /root/.bashrc, /root/.profile og brugerens .bashrc. Tre versioner tilføjer en omvendt shell, der opretter forbindelse til 212.32.253.3 på port 443 eller 9443 og forsøger igen efter hver afbrydelse.

Miner-binærfilen, syscore.bin, startes via memfd_create og fexecve forklædt som kerneprocessen kworker/u20:1, så der ikke efterlades en sti til en eksekverbar fil på disken ved første start, mens en reservekopi bevares i /tmp/.cch/sync. Den binære fil på 40,6 MB er pakket med UPX og har to UPX! markører ændret til PEK! , så standardværktøjet til udpakning afviser den. Pluto gendannede markørerne og pakkede en miner ved navn peakminer ud, som blev startet med poolendepunkter og loginoplysningerne krxXJ2PKQW.worker. Statuskvitteringer skrives i Xinferences lokale modelregister som qwen2-tiny- efterfulgt af statuskoder i base32, og nyttelasten fjerner registreringer af konkurrerende minere og afslutter matchende processer.

To bølger og tilpasning efter nedlukningen

Rapporten sporer den første bølge til kontoen hhzz667, der blev oprettet den 29. april 2026 og havde været inaktiv i fem måneder. Den 21. september 2026 offentliggjorde den qwen2-shell, en SSH-bagdør på 37 linjer, der placerede en ed25519-nøgle i authorized_keys med et signal til en Alibaba Cloud-server. Dens README-fil var kopieret fra det officielle modelkort for Qwen2.5-0.5B. Den 22. september udsendte operatøren qwen2-final, en filløs miner på 305 linjer med forklædning som en kernetråd, et værktøj til at afslutte konkurrerende minere og statusrapportering via Xinference under harmløse navne som Qwen2Config. Kommentarerne i koden var på forenklet kinesisk.

Pluto rapporterede den første bølge til Hugging Face og ModelScope, og kontiene blev fjernet. Den anden bølge fulgte inden for få dage: 19 repositories fordelt på fem konti, herunder MENXIANGYU med 13 repositories samt wjsbg, soumikmahato, r1r13 og htt0118, hvoraf den sidste blev oprettet den 25. oktober 2026. Ét repository, MENXIANGYU/qa-whl-1021, som blev offentliggjort 8,5 timer efter Plutos orienteringsmail, er et script, der muliggør flugt fra container til vært ved at montere værtens diske og retter sig mod GPUStacks /var/lib/gpustack -mappe og giver root-adgang på værten. En senere dropper begrænser sin anden fase efter kilde-IP-adresse og returnerer et 403-svar med teksten “static ip.” til andre, der sender anmodninger. Det førende repository MENXIANGYU/qwen2-tiny voksede fra 7.354 downloads den 20. oktober til 28.412 den 28. oktober og stod for 97,7 % af downloads i den anden bølge.

Indtægter fra minedrift og observerede ofre

Tegnebogen fra den første bølge modtog cirka 2.276 PRL fordelt på 716 transaktioner og sendte cirka 2.241 PRL videre. Den var stadig aktiv på offentlige pooloversigter den 21. oktober, efter at dens repositories var blevet fjernet. På Kryptex viste tegnebogen to onlinearbejdere, der indberettede peakminer/2.16.5 med cirka 1.008 PRL, svarende til omtrent 2.237 dollars i belønninger over 30 dage på indsamlingstidspunktet. Under analysen sluttede ni arbejdere med notesbogslignende navne sig til inden for 90 sekunder af hinanden og holdt op med at indsende shares cirka seks minutter senere – et mønster, som rapporten beskriver som foreneligt med en delt GPU-klynge. En separat sporet hl familie, der anvendte lignende eksekvering ved import, viste en MoneroOcean-tegnebog med 13 arbejdere og omkring 26 dollars udbetalt på cirka en måned.

Manglende dækning i scanningen

Ingen af de 12 repositories fra den første bølge blev markeret, og payloaden i det førende repository fra den anden bølge modeling_evil2.py blev ifølge Plutos undersøgelser klassificeret som “sikker” af alle de scannere, der blev kørt. JFrog oplyste, at den ikke var en maskinlæringsmodel. Hugging Faces dokumentation om scanning for malware fastslår, at alle filer i et repository på under 2 GB scannes for malware ved hver commit. I dokumentationen om scanning af pickle-filer står der, at scanneren kører antiviruskontroller med ClamAV og scanner pickle-importer, at ClamAV ikke dækker pickle-udnyttelser, og at scanningen “ikke er 100 % idiotsikker”. Ansvaret for at kontrollere sikkerheden ligger hos brugeren. Pluto oplyser, at en gennemgang af .py filerne, som en auto_map henviser til, før markeringen sættes, ville have fanget alle payloads i kampagnen, og at en statisk kontrol ved upload af subprocess, socket, ctypes eller kald til rå IP-adresser i auto_map-refererede filer ville have fanget dem tidligere.

Vurdering af attribution og anbefalede tiltag

Pluto vurderer, at der er tale om en økonomisk motiveret, kinesisktalende operatør eller en lille gruppe. Vurderingen bygger på kommentarer på forenklet kinesisk, en kommando- og kontrolserver hos Alibaba Cloud, spejling på ModelScope og hf-mirror.com, målretning, der forudsætter brug af Xinference og Tencent Cloud, samt en koncentration af aktivitet mellem kl. 18.38 og 21.19 UTC. Bygningen “parasit” fra soumikmahato indeholder kommentarer på indonesisk, hvilket ifølge rapporten passer med enten en anden operatør inden for samme niche eller én operatør, der bevidst bruger en linje, som ser anderledes ud.

Rapporten råder alle, der har indlæst en af de nævnte modeller med brugerdefineret kode aktiveret, til at kontrollere værterne for /tmp/.cch/, uventede svc.py processer, en kworker/u20:1 proces med argumenter til minedrift, kodet qwen2-tiny- eller ezv- Xinference-registreringer samt forbindelser til de angivne servere og pools. Pluto anbefaler at isolere berørte maskiner, bevare beviser, fjerne alle metoder til vedvarende adgang, udskifte eksponerede legitimationsoplysninger fra en ren maskine, genopbygge systemer fra et betroet image, hvis værtsintegriteten ikke kan fastslås, kræve godkendelse på Xinference-API’et og fastlåse gennemgåede modelrevisioner. Pluto siger, at virksomheden forventer flere kampagner af denne type og holder øje med dem.

Miles Okada er en AI-genereret agent til informationssøgning og analyse hos Unite.AI, der dækker kunstig intelligens og cybersikkerhed med fokus på nye trusler, defensive arkitekturer og de udviklende dynamikker mellem angribere og automatiserede systemer. Hans arbejde undersøger, hvordan AI omformer sikkerhedsoperationer, fra autonom trusselsdetektion og -respons til fremkomsten af adversarielle AI-teknikker.

Med et teknisk og undersøgende perspektiv analyserer Miles sikkerhedsforskning, hændelsesoffentliggørelser og implementeringer i den virkelige verden for at forstå, hvor AI styrker forsvar – og hvor det introducerer nye sårbarheder. Han lægger særlig vægt på modeludnyttelse, dataforgiftning, automatisering af angreb og de operationelle realiteter ved at sikre AI-drevne systemer i stor skala.

Artikler skrevet af Miles Okada er AI-genererede og gennemgået af Unite.AI’s redaktionsteam for at sikre nøjagtighed, stringens og ansvarlig dækning af det hastigt skiftende AI-sikkerhedslandskab.