🔍 Contexte

Le 9 septembre 2026, SafeDep publie une analyse technique d’une attaque de type supply chain ciblant Deep-Live-Cam, une application Python de face swapping comptant 96 600 étoiles sur GitHub. L’attaque a été introduite le 8 septembre 2026 via un commit malveillant sur le dépôt officiel.

🎯 Vecteur d’attaque

L’attaquant a compromis le compte GitHub du mainteneur (hacksider) malgré l’activation de l’authentification à deux facteurs. Le commit 7895c547 a réécrit 18 entrées de requirements.txt pour masquer l’ajout d’une fausse dépendance :

  • requests @ git+https://github.com/pypls/requests.git substitue le package légitime requests
  • Le compte pypls et son dépôt ont été créés le 5 septembre 2026, trois jours avant l’injection
  • La révision malveillante est restée active environ 9 heures 39 minutes avant d’être révoquée

⚙️ Mécanisme d’exécution

Le setup.py malveillant exploite le backend setuptools pour exécuter du code au moment de l’installation (pip install), avant même le lancement de l’application :

  • 434 espaces sur la ligne 2 dissimulent le code malveillant hors de la zone visible des éditeurs
  • Des noms de variables en caractères CJK (chinois, japonais, coréen) ajoutent une couche de bruit visuel
  • Le code utilise exec(compile(zlib.decompress(base64.b64decode(...)))) pour décoder et exécuter un loader

🔗 Chaîne d’infection

  1. requirements.txtpypls/requests/setup.py
  2. Deux couches de décodage Base64/zlib → loader Windows/macOS
  3. Téléchargement depuis une page Telegraph (graph.org/coding-utf-8-09-05-2)
  4. Écriture d’un script Python local
  5. Deux couches supplémentaires → payload final de persistance et clipboard hijacking

💰 Payload final : clipboard hijacker

Le payload final (stage4_payload.py) :

  • Lit le presse-papiers via les API Windows ou pbpaste (macOS)
  • Détecte les adresses de cryptomonnaies (Bitcoin P2PKH/P2SH/P2WPKH/P2WSH/P2TR, Ethereum EIP-55, Tron Base58Check, Solana Ed25519)
  • Remplace silencieusement les adresses par celles de l’attaquant
  • Boucle toutes les 0,3 secondes
  • Contient une chaîne d’erreur en russe : “Неизвестный тип кошелька” (indicateur d’origine linguistique)

🔒 Persistance

  • Windows : valeur SysHelper sous HKCU\Software\Microsoft\Windows\CurrentVersion\Run, script dans %LOCALAPPDATA%\WindowsHelper\sys.pyw
  • macOS : LaunchAgent com.user.syshelper.plist avec RunAtLoad et KeepAlive, script dans ~/Library/Application Support/HowToFind/sys.py

📌 Type d’article

Analyse technique détaillée produite par SafeDep, visant à documenter la chaîne d’attaque complète, les indicateurs de compromission et les artefacts forensiques associés à cet incident de supply chain.

🧠 TTPs et IOCs détectés

TTP

  • T1195.001 — Supply Chain Compromise: Compromise Software Dependencies and Development Tools (Initial Access)
  • T1554 — Compromise Client Software Binary (Persistence)
  • T1059.006 — Command and Scripting Interpreter: Python (Execution)
  • T1027 — Obfuscated Files or Information (Defense Evasion)
  • T1547.001 — Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder (Persistence)
  • T1543.004 — Create or Modify System Process: Launch Agent (Persistence)
  • T1115 — Clipboard Data (Collection)
  • T1496 — Resource Hijacking (Impact)
  • T1078 — Valid Accounts (Initial Access)
  • T1102 — Web Service (Command and Control)

IOC

  • Domaines : graph.orgVT · URLhaus · ThreatFox
  • Domaines : abacus.jasoncameron.devVT · URLhaus · ThreatFox
  • URLs : https://github.com/pypls/requestsURLhaus
  • URLs : https://graph.org/coding-utf-8-09-05-2URLhaus
  • URLs : https://abacus.jasoncameron.dev/hit/duff.com/infoURLhaus
  • SHA256 : b34818f9208133c2fd2d0814162c6f3c59e35df518e3c95f998890f7e4a5e6f4VT · MalwareBazaar
  • SHA256 : f6fbefc82589dbeddabc8883c63cbb027239019ed38fafa83a9139c2585064f5VT · MalwareBazaar
  • SHA256 : 175f9e7fad2661f647c8f2438bf0d757fe18ab364a22c544c938f45e0e4f6cedVT · MalwareBazaar
  • SHA256 : eafed30038d53614cf3dc7a8f19c2dd663352b3c8cb78aa5ed1b9d9710017570VT · MalwareBazaar
  • SHA256 : c91a00b56ad2591236ccefd701a6b19b72dbacefadbdb0f11e13693c2d6764d9VT · MalwareBazaar
  • SHA256 : 73cb3c0e9afd9db32a392655ff58be5cc95b24fbc0f412202853dc0161dd0561VT · MalwareBazaar
  • Emails : oakleyiballard1984@proton.me
  • Fichiers : setup.py
  • Fichiers : stage2_payload.py
  • Fichiers : stage3_payload.py
  • Fichiers : stage4_payload.py
  • Fichiers : sys.pyw
  • Fichiers : sys.py
  • Fichiers : com.user.syshelper.plist
  • Chemins : %LOCALAPPDATA%\WindowsHelper\sys.pyw
  • Chemins : ~/Library/Application Support/HowToFind/sys.py
  • Chemins : ~/Library/LaunchAgents/com.user.syshelper.plist

⚠️ À propos de ces IOC — ils sont extraits automatiquement de l’article original le 11 septembre 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

  • clipboard hijacker (stage4_payload.py) (stealer)
  • pypls/requests loader (stage2_payload.py) (loader)

🟡 Indice de vérification factuelle : 63/100 (moyenne)

  • ⬜ safedep.io — source non référencée (0pts)
  • ✅ 14779 chars — texte complet (fulltext extrait) (15pts)
  • ✅ 22 IOCs dont des hashes (15pts)
  • ✅ 1/8 IOC(s) confirmé(s) (MalwareBazaar, ThreatFox, URLhaus, VirusTotal) (8pts)
  • ✅ 10 TTPs MITRE identifiées (15pts)
  • ✅ date extraite du HTML source (10pts)
  • ⬜ aucun acteur de menace nommé (0pts)
  • ⬜ pas de CVE à vérifier (0pts)

IOCs confirmés externellement :

  • graph.org (domain) → VT (7/89 détections)

🔗 Source originale : https://safedep.io/deep-live-cam-supply-chain-attack/