🔍 Contexte : Le 29 octobre 2026, Pluto Research (Pluto Security) publie une analyse technique détaillée d’une campagne malveillante exploitant les dépôts de modèles IA sur Hugging Face et ModelScope. L’investigation a été menée par Shaked Chen, Eitan Chassid et Yotam Perkal.
⚠️ Nature de la menace : La campagne exploite le mécanisme trust_remote_code=True de la bibliothèque Transformers (HuggingFace), qui permet l’exécution de code Python arbitraire lors du chargement d’un modèle. Les fichiers Python référencés via auto_map dans config.json s’exécutent avant même l’initialisation du modèle, sans nécessiter de poids malveillants.
📦 Deux vagues documentées :
- Vague 1 (21 septembre – 12 octobre 2026) : 12 dépôts sous les comptes
hhzz667(Hugging Face) etwssb123e(ModelScope). Évolution en 3 semaines d’un backdoor SSH de 37 lignes vers un mineur fileless de 305 lignes. 728 téléchargements enregistrés avant suppression. - Vague 2 (après takedown) : 19 dépôts sous 5 comptes (
MENXIANGYU,wjsbg,htt0118,soumikmahato,r1r13). Plus de 29 000 téléchargements, dont 28 412 pour le seul dépôtMENXIANGYU/qwen2-tiny. Les dépôts étaient encore actifs 8 jours après signalement.
🛠️ Anatomie du payload :
- Phase 1 : Écriture d’un watchdog
/tmp/.cch/svc.py, injection dans les fichiers de démarrage shell (.bashrc,.profile), et dans certains builds, reverse shell vers212.32.253.3:443ou:9443. - Phase 2 : Téléchargement et exécution du binaire mineur
syscore.bin(peakminer, 40,6 Mo, UPX modifié avec marqueursPEK!) viamemfd_create+fexecve, déguisé en[kworker/u20:1]. - Phase 3 : Reporting de statut encodé en base32 dans le registre Xinference local, suppression des mineurs concurrents.
💰 Impact financier confirmé : Le wallet de la vague 1 a reçu ~2 276 PRL (~5 000 USD) en 716 transactions. Un cluster de 9 workers GPU (profil notebook partagé) a rejoint le pool en 90 secondes lors de l’analyse. Un wallet MoneroOcean lié à la famille MONIADF-2 affiche 13 workers actifs.
🎯 Cibles : Infrastructures GPU auto-hébergées (Xinference, GPUStack), notebooks de recherche partagés, pipelines CI/CD, machines GPU louées.
🔓 Escalade : Le dépôt MENXIANGYU/qa-whl-1021, publié 8,5 heures après la divulgation, contient un script d’évasion de conteneur vers l’hôte physique, ciblant GPUStack /var/lib/gpustack.
🕵️ Attribution : Opérateur ou petit groupe sinophone, financièrement motivé. Indicateurs : commentaires en chinois simplifié, C2 sur Alibaba Cloud, ciblage de Xinference et Tencent Cloud, activité entre 18h38 et 21h19 UTC. Une ligne secondaire (soumikmahato) présente des commentaires en indonésien.
🚫 Limites des scanners : ClamAV et les scanners partenaires (Protect AI, JFrog) n’analysent pas le comportement du code Python référencé par auto_map. Le payload principal a retourné des résultats propres sur tous les scanners testés.
📄 Type d’article : Publication de recherche CTI avec indicateurs de compromission complets, destinée aux défenseurs d’infrastructures ML/AI.
🧠 TTPs et IOCs détectés
TTP
- T1195.001 — Compromise Software Dependencies and Development Tools (Initial Access)
- T1059.006 — Command and Scripting Interpreter: Python (Execution)
- T1496 — Resource Hijacking (Impact)
- T1098.004 — Account Manipulation: SSH Authorized Keys (Persistence)
- T1546.004 — Event Triggered Execution: Unix Shell Configuration Modification (Persistence)
- T1053.003 — Scheduled Task/Job: Cron (Persistence)
- T1055 — Process Injection (Defense Evasion)
- T1036.005 — Masquerading: Match Legitimate Name or Location (Defense Evasion)
- T1071.001 — Application Layer Protocol: Web Protocols (Command and Control)
- T1572 — Protocol Tunneling (Command and Control)
- T1041 — Exfiltration Over C2 Channel (Exfiltration)
- T1027 — Obfuscated Files or Information (Defense Evasion)
- T1611 — Escape to Host (Privilege Escalation)
- T1562.001 — Impair Defenses: Disable or Modify Tools (Defense Evasion)
IOC
- IPv4 :
212.32.253.3— AbuseIPDB · VT · ThreatFox - IPv4 :
38.55.133.49— AbuseIPDB · VT · ThreatFox - IPv4 :
8.137.187.63— AbuseIPDB · VT · ThreatFox - IPv4 :
103.97.176.121— AbuseIPDB · VT · ThreatFox - IPv4 :
2.28.9.199— AbuseIPDB · VT · ThreatFox - IPv4 :
173.249.209.96— AbuseIPDB · VT · ThreatFox - IPv4 :
212.132.98.170— AbuseIPDB · VT · ThreatFox - IPv4 :
49.12.44.127— AbuseIPDB · VT · ThreatFox - IPv4 :
200.58.80.115— AbuseIPDB · VT · ThreatFox - IPv4 :
178.33.123.26— AbuseIPDB · VT · ThreatFox - Domaines :
hz2006.aihzcc.top— VT · URLhaus · ThreatFox - Domaines :
pearl-hk.luckypool.io— VT · URLhaus · ThreatFox - Domaines :
pool.hashvault.pro— VT · URLhaus · ThreatFox - Domaines :
pearl-sg1.luckypool.io— VT · URLhaus · ThreatFox - Domaines :
de.pearl.herominers.com— VT · URLhaus · ThreatFox - Domaines :
gulf.moneroocean.stream— VT · URLhaus · ThreatFox - Domaines :
mine.c3pool.com— VT · URLhaus · ThreatFox - Domaines :
prl-us.kryptex.network— VT · URLhaus · ThreatFox - Domaines :
prl-eu.kryptex.network— VT · URLhaus · ThreatFox - Domaines :
prl-sg.kryptex.network— VT · URLhaus · ThreatFox - Domaines :
hf-mirror.com— VT · URLhaus · ThreatFox - Domaines :
grows-stocks-vatican-flood.trycloudflare.com— VT · URLhaus · ThreatFox - URLs :
https://huggingface.co/dsxk4mr8tq/qwen2-tiny/resolve/main/syscore.bin— URLhaus - URLs :
https://hf-mirror.com/dsxk4mr8tq/qwen2-tiny/resolve/main/syscore.bin— URLhaus - URLs :
https://hf-mirror.com/hhzz667/qwen2-final/resolve/main/syscore.bin— URLhaus - URLs :
https://www.modelscope.cn/api/v1/models/wssb123e/qwen2-tiny/repo?Revision=master— URLhaus - URLs :
https://huggingface.co/dsxk4mr8tq/qwen2-tiny-assets/resolve/main/sysx.bin— URLhaus - URLs :
https://huggingface.co/MENXIANGYU/qwen2-tiny/resolve/main/syscore.bin— URLhaus - URLs :
https://huggingface.co/MENXIANGYU/qwen2-tiny-3/resolve/main/syscore.bin— URLhaus - URLs :
https://huggingface.co/MENXIANGYU/qwen2-tiny-4/resolve/main/syscore.bin— URLhaus - URLs :
https://huggingface.co/MENXIANGYU/qwen2-tiny-5/resolve/main/syscore.bin— URLhaus - URLs :
https://huggingface.co/MENXIANGYU/qwen2-tiny-6/resolve/main/syscore.bin— URLhaus - URLs :
https://huggingface.co/MENXIANGYU/qwen2-tiny-9/resolve/main/syscore.bin— URLhaus - URLs :
https://hf-mirror.com/MENXIANGYU/qwen2-tiny/resolve/main/syscore.bin— URLhaus - URLs :
http://212.32.253.3:8898/lf_py.py— URLhaus - URLs :
http://212.32.253.3:8895/ezv— URLhaus - URLs :
http://38.55.133.49:8901/kitsd_v12.sh— URLhaus - URLs :
http://212.32.253.3:8898/kitsd_v12.sh— URLhaus - URLs :
http://103.97.176.121:8090/m2.bin— URLhaus - URLs :
https://huggingface.co/wjsbg/zh-assets/resolve/main/m2.bin— URLhaus - URLs :
https://hf-mirror.com/wjsbg/zh-assets/resolve/main/m2.bin— URLhaus - URLs :
https://3.112.174.116.sslip.io/sysd-kit.tgz— URLhaus - URLs :
https://grows-stocks-vatican-flood.trycloudflare.com/beacon— URLhaus - URLs :
http://173.249.209.96:8081/ag.sh— URLhaus - URLs :
http://173.249.209.96:8000/r/aliyun3g?t=hl9f3a7c— URLhaus - URLs :
http://173.249.209.96:8001/xmrig-static— URLhaus - URLs :
https://huggingface.co/MONIADF-2/qwen2-hl/resolve/main/kx.tgz— URLhaus - SHA256 :
88f4b95a1c3d0a0d9638dc6e6— VT · MalwareBazaar - SHA256 :
414b3cf7a288eaa592b0f03d8— VT · MalwareBazaar - SHA256 :
587e3c3be3c75eb6586d69b25— VT · MalwareBazaar - SHA256 :
b0e1ae6d73d656b203514f498— VT · MalwareBazaar - SHA256 :
6b1e531c9e799a6df1472acc1— VT · MalwareBazaar - SHA256 :
9d62179c94faf0c8eb8670497— VT · MalwareBazaar - SHA256 :
6a837d3042b9b8b6266c75b07— VT · MalwareBazaar - SHA256 :
170ef5754bea51c3b05ae4b6c— VT · MalwareBazaar - SHA256 :
2cd9328715bbffb6b090a58de— VT · MalwareBazaar - SHA256 :
5dc4b927fb91442a66a2e02c1— VT · MalwareBazaar - SHA256 :
849ce59ffb2ae55e4131111ac— VT · MalwareBazaar - SHA256 :
0fc39482f05fb88c13ac9edc3— VT · MalwareBazaar - SHA256 :
ac9c284246570aed87c939bca— VT · MalwareBazaar - SHA256 :
0bb9f618c7b5863d8523e0— VT · MalwareBazaar - SHA256 :
6d8b718af302338def360d813— VT · MalwareBazaar - CVEs :
CVE-2024-34359— NVD · CIRCL - CVEs :
CVE-2026-22807— NVD · CIRCL - Fichiers :
syscore.bin - Fichiers :
sysx.bin - Fichiers :
modeling_evil.py - Fichiers :
modeling_evil2.py - Fichiers :
modeling_evil6.py - Fichiers :
modeling_qtz.py - Fichiers :
modeling_hl.py - Fichiers :
configuration_parasit.py - Fichiers :
modeling_parasit.py - Fichiers :
tokenization_probe.py - Fichiers :
configuration_custom.py - Fichiers :
svc.py - Fichiers :
g20.py - Fichiers :
e.sh - Fichiers :
ag.sh - Fichiers :
sysd-kit.tgz - Fichiers :
m2.bin - Fichiers :
kx.tgz - Fichiers :
kitsd_v12.sh - Fichiers :
lf_py.py - Chemins :
/tmp/.cch/svc.py - Chemins :
/tmp/.cch/sync - Chemins :
/tmp/.cch/o - Chemins :
/tmp/.cchx - Chemins :
/tmp/.kitsd - Chemins :
/root/.bashrc - Chemins :
/root/.profile - Chemins :
/etc/cron.d/.sync-helper - Chemins :
/tmp/.qa_pwned - Chemins :
/root/.xinference/cache - Chemins :
/tmp/.cache-hf/g20.py - Chemins :
/tmp/.c/kit.tar.gz - Chemins :
/tmp/.c/app/ - Chemins :
/tmp/.c.pid - Chemins :
/tmp/.c.log - Chemins :
/tmp/.c.out - Chemins :
/tmp/.h9ag - Chemins :
/tmp/.h9mark - Chemins :
/root/.mx - Chemins :
/tmp/.mx - Chemins :
/var/tmp/.mx - Chemins :
/dev/shm/.mx - Chemins :
/root/.hl/poll.sh - Chemins :
/root/.hl/boot.out - Chemins :
/root/.hl/t.out - Chemins :
/tmp/.xai_loot - Chemins :
/tmp/lf_py.py - Chemins :
/tmp/ezv_proof.txt - Chemins :
/tmp/.xi2026 - Chemins :
/tmp/.xi2026_lock - Chemins :
/tmp/.prb4
⚠️ À propos de ces IOC — ils sont extraits automatiquement de l’article original le 31 octobre 2026 et n’ont pas fait l’objet d’une vérification externe. Un indicateur peut avoir été réattribué depuis : une IP de C2 peut redevenir un service légitime, un domaine sinkholé peut changer de propriétaire. Aucune garantie d’exactitude ni d’actualité — contrôlez leur validité avant tout usage opérationnel, en particulier avant de les injecter dans une blocklist ou un SIEM.
Malware / Outils
- peakminer (other)
- XMRig (other)
- syscore.bin (other)
- modeling_evil2.py (loader)
- gsocket (backdoor)
- svc.py watchdog (other)
🟢 Indice de vérification factuelle : 75/100 (haute)
- ⬜ pluto.security — source non référencée (0pts)
- ✅ 37522 chars — texte complet (fulltext extrait) (15pts)
- ✅ 115 IOCs dont des hashes (15pts)
- ✅ 4/12 IOCs confirmés (AbuseIPDB, MalwareBazaar, ThreatFox, URLhaus, VirusTotal) (15pts)
- ✅ 14 TTPs MITRE identifiées (15pts)
- ✅ date extraite du HTML source (10pts)
- ⬜ aucun acteur de menace nommé (0pts)
- ✅ 2/2 CVE(s) confirmée(s) (CIRCL) (5pts)
IOCs confirmés externellement :
212.32.253.3(ip) → VT (3/92 détections)38.55.133.49(ip) → AbuseIPDB (56% confiance, 26 signalements)8.137.187.63(ip) → VT (8/92 détections) + ThreatFox (Unknown malware)pool.hashvault.pro(domain) → VT (15/92 détections)