🔍 Contexte

PubliĂ© le 22 avril 2026 par JFrog Security Research, cet article documente la compromission du package PyPI xinference (versions 2.6.0, 2.6.1 et 2.6.2) dans le cadre d’une campagne multi-Ă©cosystĂšme attribuĂ©e au groupe TeamPCP. Les versions malveillantes ont Ă©tĂ© retirĂ©es (yanked) par les mainteneurs aprĂšs signalement d’utilisateurs.

🎯 Nature de l’attaque

Il ne s’agit pas d’un typosquatting mais d’un dĂ©tournement de la ligne de release lĂ©gitime de xinference. Le code malveillant est injectĂ© dans xinference/__init__.py, ce qui le rend exĂ©cutĂ© dĂšs l’import du package. Un payload base64 est passĂ© Ă  un sous-processus Python dĂ©tachĂ© (subprocess.Popen) qui s’exĂ©cute en arriĂšre-plan, dissimulĂ© du processus principal.

⚙ Analyse technique en deux Ă©tapes

Stage 1 – Wrapper et exfiltration :

  • DĂ©code un second bloc base64 (collecteur)
  • Pipe le collecteur dans un interprĂ©teur Python enfant
  • Compresse la sortie dans love.tar.gz
  • Exfiltre via POST curl vers https://whereisitat.lucyatemysuperbox.space/ avec l’en-tĂȘte personnalisĂ© X-QT-SR: 14

Stage 2 – Reconnaissance et collecte de secrets : Le collecteur cible notamment :

  • ClĂ©s SSH privĂ©es et clĂ©s hĂŽtes
  • Credentials AWS (fichiers + IMDS IMDSv2 + Secrets Manager + SSM)
  • Configs Kubernetes et tokens de service account
  • Auth Docker, tokens npm/PyPI/Cargo
  • Fichiers .env, configs DB, VPN (WireGuard), Terraform
  • ClĂ©s TLS, wallets crypto (Bitcoin, Ethereum, Solana, Monero, Cardano
)
  • Webhooks Slack/Discord, clĂ©s API dans .env et .json

🔗 Lien avec la campagne TeamPCP

Le marqueur # hacked by teampcp est identique aux compromissions prĂ©cĂ©dentes de litellm et telnyx. DiffĂ©rences notables avec les variantes prĂ©cĂ©dentes : absence de chiffrement (AES-256-CBC + RSA-4096), absence de persistance (pas de service systemd, pas de pod K8s privilĂ©giĂ©), nom d’archive diffĂ©rent (love.tar.gz vs tpcp.tar.gz), nouveau domaine C2. La logique de collecte reste cohĂ©rente avec le tooling connu de TeamPCP.

📌 Note de l’acteur

TeamPCP a niĂ© son implication via Twitter, affirmant qu’il s’agit d’un copycat utilisant leur nom et leur payload.

📄 Type d’article

Analyse technique publiée par JFrog Security Research, visant à documenter la compromission, fournir les IOCs et guider la remédiation pour les utilisateurs affectés.

🧠 TTPs et IOCs dĂ©tectĂ©s

Acteurs de menace

TTP

  • T1195.001 — Supply Chain Compromise: Compromise Software Dependencies and Development Tools (Initial Access)
  • T1059.006 — Command and Scripting Interpreter: Python (Execution)
  • T1027 — Obfuscated Files or Information (Defense Evasion)
  • T1140 — Deobfuscate/Decode Files or Information (Defense Evasion)
  • T1552.001 — Unsecured Credentials: Credentials In Files (Credential Access)
  • T1552.005 — Unsecured Credentials: Cloud Instance Metadata API (Credential Access)
  • T1005 — Data from Local System (Collection)
  • T1041 — Exfiltration Over C2 Channel (Exfiltration)
  • T1036 — Masquerading (Defense Evasion)
  • T1082 — System Information Discovery (Discovery)
  • T1083 — File and Directory Discovery (Discovery)
  • T1552.004 — Unsecured Credentials: Private Keys (Credential Access)

IOC

  • IPv4 : 83.142.209.203 — AbuseIPDB · VT · ThreatFox
  • Domaines : whereisitat.lucyatemysuperbox.space — VT · URLhaus · ThreatFox
  • Domaines : models.litellm.cloud — VT · URLhaus · ThreatFox
  • URLs : https://whereisitat.lucyatemysuperbox.space/ — URLhaus
  • SHA256 : e1e007ce4eab7774785617179d1c01a9381ae83abfd431aae8dba6f82d3ac127 — VT · MalwareBazaar
  • SHA256 : 077d49fa708f498969d7cdffe701eb64675baaa4968ded9bd97a4936dd56c21c — VT · MalwareBazaar
  • SHA256 : fe17e2ea4012d07d90ecb7793c1b0593a6138d25a9393192263e751660ec3cd0 — VT · MalwareBazaar
  • Fichiers : love.tar.gz
  • Fichiers : tpcp.tar.gz
  • Chemins : xinference/__init__.py

Malware / Outils

  • TeamPCP credential harvester (xinference) (stealer)

🟱 Indice de vĂ©rification factuelle : 65/100 (haute)

  • ⬜ research.jfrog.com — source non rĂ©fĂ©rencĂ©e (0pts)
  • ✅ 10866 chars — texte complet (fulltext extrait) (15pts)
  • ✅ 10 IOCs dont des hashes (15pts)
  • ✅ 6/7 IOCs confirmĂ©s (AbuseIPDB, MalwareBazaar, ThreatFox, URLhaus, VirusTotal) (15pts)
  • ✅ 12 TTPs MITRE identifiĂ©es (15pts)
  • ⬜ date RSS ou approximĂ©e (0pts)
  • ✅ acteur(s) identifiĂ©(s) : TeamPCP (5pts)
  • ⬜ pas de CVE Ă  vĂ©rifier (0pts)

IOCs confirmés externellement :

  • 83.142.209.203 (ip) → VT (22/94 dĂ©tections) + ThreatFox (Unknown malware)
  • e1e007ce4eab7774
 (sha256) → VT (3/76 dĂ©tections)
  • 077d49fa708f4989
 (sha256) → VT (9/77 dĂ©tections)
  • fe17e2ea4012d07d
 (sha256) → VT (24/76 dĂ©tections)
  • whereisitat.lucyatemysuperbox.space (domain) → VT (12/94 dĂ©tections)

🔗 Source originale : https://research.jfrog.com/post/xinference-compromise/