Kybernetická bezpečnost
Pluto Security podrobně popisuje kampaň Load/Mine zaměřenou na těžbu kryptoměn na Hugging Face

Výzkumný tým společnosti Pluto Security zveřejnil 29. října 2026 zprávu o kampani Load/Mine, v níž odhalil kampaň zaměřenou na těžbu kryptoměn a šíření zadních vrátek prostřednictvím škodlivých modelových repozitářů na Hugging Face. Zpráva uvádí 31 škodlivých repozitářů napříč sedmi účty na Hugging Face a jednu kopii na ModelScope. Zaznamenáno bylo 29 818 stažení souvisejících s kampaní, respektive 32 376 po započtení 13 propojených repozitářů. Pluto uvádí, že tento údaj vyjadřuje počet stažení, nikoli potvrzených napadení nebo jedinečných obětí.
Zpráva, kterou napsali Shaked Chen, Eitan Chassid a Yotam Perkal, uvádí, že se kampaň vrátila během několika dnů od prvního odstranění: 19 repozitářů druhé vlny zaznamenalo více než 29 000 stažení a zůstalo dostupných ještě osm dní poté, co je Pluto nahlásilo. Do peněženky pro výplaty z první vlny dorazilo podle zprávy přibližně 2 276 PRL, tedy zhruba 5 000 dolarů v příjmech z těžby zaznamenaných na blockchainu.
Jak se škodlivý kód spouští
Kampaň zneužívá zdokumentované chování Transformers při načítání, nikoli podvržené váhy. Při načtení repozitáře s trust_remote_code=True se kód Pythonu z repozitáře importuje s oprávněními volajícího ještě před načtením jakýchkoli vah. Repozitář config.json používá auto_map k určení modulu Pythonu a třídy, které se mají načíst; Transformers stáhne odkazovaný soubor do mezipaměti modulů a exec_module() volání spustí kód na nejvyšší úrovni souboru ještě před vrácením požadované třídy modelu. Zpráva upozorňuje, že jde o zdokumentované chování, nikoli o výchozí nastavení, a že bezpečnostní zásady Transformers uživatelům při použití tohoto argumentu ukládají ověřit obsah souborů modelu. Zpráva také zmiňuje CVE-2026-22807, kdy verze vLLM od 0.10.1 až po verzi 0.14.0, v níž byla chyba opravena, načítaly auto_map moduly, aniž kontrolovaly trust_remote_code nastavení, což umožňovalo škodlivému repozitáři spustit kód při startu serveru.
Odhalení a propojení účtů
Pluto vytvořilo skener, který procházel všechny .py soubor, na který odkazuje auto_map v config.json, a také soubory Pythonu uložené vedle vah modelů; vyhledával přitom vzory, jako jsou subprocess, socket, ctypes, memfd_create a dekódování Base64. Prvním nalezeným případem byl dsxk4mr8tq/qwen2-tiny-gpt2, který obsahoval soubor o 305 řádcích s názvem modeling_evil.py; účet měl šest repozitářů vytvořených během 2,5 hodiny dne 12. října 2026.
Záložní soubory pomohly odhalit souvislosti. Repozitář qwen2-tiny-lite obsahoval modeling_evil.py.bak-src a modeling_evil.py.bak-syncstarší verze téhož malwaru, jejichž adresy URL ke stažení neodkazovaly na jednorázový účet, ale na hhzz667 na Hugging Face a wssb123e na ModelScope. Zpráva uvádí, že operátor zkopíroval produkční kód do testovacího účtu, aktualizoval adresy URL v hlavním souboru a na záložní soubory zapomněl. První vlna zahrnovala celkem 12 repozitářů napříč třemi účty a dvěma platformami; před jejich odstraněním bylo zaznamenáno více než 700 stažení a žádná bezpečnostní upozornění.
Anatomie škodlivé zátěže
Vezmeme-li MENXIANGYU/qwen2-tiny jako reprezentativní sestavení, zpráva popisuje škodlivou zátěž, která nejprve vytvoří /tmp/.cch/svc.py, hlídací proces, který každých 120 sekund znovu spouští chybějící těžařský program, a doplní spouštěcí háčky do /root/.bashrc, /root/.profile a do souboru uživatele .bashrc. Tři sestavení přidávají reverzní shell, který se připojuje k adrese 212.32.253.3 na portech 443 nebo 9443 a po každém odpojení se pokouší o připojení znovu.
Binární soubor těžařského programu, syscore.bin, se spouští prostřednictvím memfd_create a fexecve je maskován jako pracovní vlákno jádra kworker/u20:1, takže při prvním spuštění nezůstane na disku žádná cesta ke spustitelnému souboru; záložní kopie přetrvává v /tmp/.cch/sync. Binární soubor o velikosti 40,6 MB je zabalený pomocí UPX a dva UPX! značky jsou změněny na PEK! , takže jej standardní nástroj pro rozbalování odmítne; Pluto značky obnovilo a rozbalilo těžařský program s názvem peakminer, který se spouští s adresami těžebních poolů a přihlašovacím údajem krxXJ2PKQW.worker. Záznamy o průběhu se zapisují do místního registru modelů Xinference jako qwen2-tiny- následované stavovými kódy Base32; škodlivá zátěž také odstraňuje registrace konkurenčních těžařských programů a ukončuje odpovídající procesy.
Dvě vlny a přizpůsobení po odstranění
Zpráva spojuje první vlnu s účtem hhzz667, který byl vytvořen 29. dubna 2026 a pět měsíců neaktivní. Dne 21. září 2026 zveřejnil qwen2-shell, zadní vrátka SSH o 37 řádcích, která vložila klíč ed25519 do authorized_keys a odesílala signál na server Alibaba Cloud; soubor README byl zkopírován z oficiální karty modelu Qwen2.5-0.5B. Do 22. září operátor nasadil qwen2-final, bezsouborový těžařský program o 305 řádcích, který se maskoval jako vlákno jádra, ukončoval konkurenční těžařské programy a hlásil stav Xinference pod nevinně znějícími názvy, například Qwen2Config. Komentáře v kódu byly ve zjednodušené čínštině.
Pluto nahlásilo první vlnu Hugging Face a ModelScope a účty byly odstraněny. Druhá vlna následovala během několika dnů: 19 repozitářů na pěti účtech, včetně účtu MENXIANGYU se 13 repozitáři, a dále účtů wjsbg, soumikmahato, r1r13 a htt0118, přičemž poslední z nich byl vytvořen 25. října 2026. Jeden repozitář, MENXIANGYU/qa-whl-1021, zveřejněný 8,5 hodiny po e-mailu, kterým Pluto zveřejnění oznámilo, obsahuje skript umožňující únik z kontejneru na hostitelský systém: připojuje disky hostitele a zaměřuje se na adresář GPUStack /var/lib/gpustack a poskytuje přihlášení s právy roota na hostiteli. Pozdější dropper omezuje svou druhou fázi podle zdrojové IP adresy a ostatním žadatelům vrací odpověď 403 s textem „static ip.“ Vlajkový repozitář MENXIANGYU/qwen2-tiny vzrostl z 7 354 stažení 20. října na 28 412 stažení 28. října, což představovalo 97,7 % stažení v rámci druhé vlny.
Výnosy z těžby a zaznamenané oběti
Peněženka z první vlny přijala přibližně 2 276 PRL v rámci 716 transakcí a odeslala dál přibližně 2 241 PRL. Ještě 21. října, tedy poté, co byly její repozitáře odstraněny, byla aktivní na veřejných řídicích panelech poolů. Na Kryptexu peněženka vykazovala dva online workery, kteří hlásili peakminer/2.16.5 přibližně 1 008 PRL, tedy zhruba 2 237 dolarů v odměnách za 30 dní v době pořízení záznamu. Během analýzy se během 90 sekund připojilo devět workerů s názvy připomínajícími názvy notebooků a přibližně o šest minut později přestali odesílat podíly. Zpráva uvádí, že tento profil odpovídá sdílenému GPU clusteru. Samostatně sledovaná hl rodina, která používala podobné spouštění při importu, měla peněženku MoneroOcean se 13 workery a za zhruba měsíc obdržela přibližně 26 dolarů.
Mezery v pokrytí skenery
Žádný z 12 repozitářů z první vlny nebyl označen jako škodlivý a ani obsah vlajkového repozitáře z druhé vlny modeling_evil2.py podle kontrol Pluto označil každý spuštěný skener za „bezpečný“; JFrog uvedl, že nejde o model strojového učení. Dokumentace Hugging Face ke skenování malwaru uvádí, že při každém commitu se každý soubor v repozitáři menší než 2 GB kontroluje antivirovým skenerem. Dokumentace ke skenování souborů pickle říká, že skener spouští antivirovou kontrolu ClamAV a kontroly importů pickle, že ClamAV nepokrývá zneužití souborů pickle a že skenování „není stoprocentně spolehlivé“. Ověření bezpečnosti tak zůstává na uživateli. Pluto uvádí, že kontrola .py souborů, na které se auto_map odkazuje ještě před nastavením příznaku, by zachytila každý obsah použitý v této kampani a že statická kontrola při nahrávání, zaměřená na subprocess, socket, ctypes nebo volání na surové IP adresy v auto_mapsouborech odkazovaných pomocí – by je zachytila dříve.
Posouzení původu a doporučené kroky
Pluto se domnívá, že za útoky stojí finančně motivovaný čínsky mluvící operátor nebo malá skupina. Jako důkazy uvádí komentáře ve zjednodušené čínštině, server pro příkazy a řízení na Alibaba Cloud, zrcadlení na ModelScope a hf-mirror.com, cílení předpokládající použití Xinference a Tencent Cloud a shlukování aktivity mezi 18:38 a 21:19 UTC. Sestavení „parasit“ od účtu soumikmahato obsahuje komentáře v indonéštině. Podle zprávy to odpovídá buď druhému operátorovi působícímu ve stejné oblasti, nebo jednomu operátorovi, který záměrně používá odlišně vypadající variantu.
Zpráva doporučuje každému, kdo načetl některý z uvedených modelů se zapnutým vlastním kódem, aby na hostitelích prověřil /tmp/.cch/, neočekávané svc.py procesy a kworker/u20:1 procesy se spouštěcími argumenty souvisejícími s těžbou, zakódované qwen2-tiny- nebo ezv- registrace v Xinference a připojení k uvedeným serverům a poolům. Pluto doporučuje izolovat napadené počítače, uchovat důkazy, odstranit všechny mechanismy zajišťující přetrvání škodlivého kódu, změnit uniklé přihlašovací údaje z čistého počítače, v případech, kdy nelze ověřit integritu hostitele, provést novou instalaci z důvěryhodného obrazu, vyžadovat ověření při přístupu k rozhraní API Xinference a připnout zkontrolované verze modelů. Pluto uvádí, že očekává další kampaně tohoto druhu a sleduje je.












