🔍 Contexte

Le 23 septembre 2026, SafeDep publie une analyse technique dĂ©taillĂ©e d’une attaque de type supply chain ciblant deux packages open source du projet MemTensor. L’attaque a Ă©tĂ© dĂ©tectĂ©e via un signalement communautaire (issue #173) sur le dĂ©pĂŽt GitHub du plugin OpenClaw.

🎯 Packages compromis

  • npm : @memtensor/memos-cloud-openclaw-plugin — versions malveillantes 0.1.21, 0.1.23, 0.1.25
  • PyPI : MemoryOS — version malveillante 2.0.34

Les deux packages contiennent le mĂȘme implant Go nommĂ© sckit, compilĂ© pour six plateformes (linux/darwin/windows × amd64/arm64).

đŸ› ïž MĂ©thode d’intrusion — Vol des tokens CI/CD

Pour npm : L’attaquant (via le compte GitHub Memtensor-AI) a poussĂ© des commits sur une branche Ă©phĂ©mĂšre sc/release-*. Ces commits modifient le script de validation validate-release-confirmation.mjs pour injecter une entrĂ©e BASH_ENV dans $GITHUB_ENV, pointant vers sckit-publish-bridge.sh. Ce script s’exĂ©cute avant l’Ă©tape de publication npm et appelle collectStageZero() pour exfiltrer le token npm vers les serveurs C2, puis se supprime lui-mĂȘme.

Pour PyPI : L’attaquant a modifiĂ© pyproject.toml pour substituer le backend de build Poetry par sckit_poetry_build, qui utilise la mĂȘme technique BASH_ENV via _pypi_bridge.sh. Le script exfiltre INPUT_PASSWORD (token PyPI) vers 10729e014d0e.skyleen.fr, puis laisse le workflow publier le package malveillant lors d’un second commit (41bf5c7).

🩠 Comportement de l’implant sckit

  • DĂ©clenchement : au dĂ©marrage du gateway OpenClaw, Ă  chaque rappel mĂ©moire (npm), et Ă  chaque appel de configure_logging() (PyPI)
  • Collecte de credentials : fichiers .npmrc, .pypirc, .git-credentials, .netrc, clĂ©s SSH (id_rsa, id_ecdsa, id_ed25519), .vault-token, tokens cloud, variables d’environnement contenant token, secret, password, api_key
  • Formats de tokens ciblĂ©s : JWT, AWS (AKIA/ASIA), GitHub PAT, GitLab, npm, PyPI, HuggingFace, Vault, Slack, Stripe, SendGrid
  • Exfiltration : vers des sous-domaines de skyleen.fr via HTTPS (CBOR + X25519 + XChaCha20-Poly1305)
  • Propagation (worm) : recherche de dĂ©pĂŽts accessibles avec les credentials volĂ©s, injection d’un workflow GitHub Actions runtime-update.yml et de loaders Python/Node.js
  • Profilage hĂŽte : timezone, langue, gĂ©olocalisation ISO, filtrage par pays (deny_iso) et empreinte TLS (ja4_deny)
  • Auto-destruction : fonctions scheduleSelfDelete et deleteExecutable

📋 Configuration de campagne

  • campaign_id npm : cloud-openclaw-semi-nuclear
  • campaign_id PyPI : memos-semi-nuclear
  • Module Go : supplychain.local/campaign/cmd/implant
  • Expiration intĂ©grĂ©e : 22-23 octobre 2026
  • RĂ©pertoires d’Ă©tat : $HOME/.openclaw/.cache/runtime et $HOME/.memos/.cache/runtime

📅 Chronologie (UTC, 23 sept. 2026)

  • 00:48–02:03 : Cinq push/delete de la branche sc/release-* par Memtensor-AI
  • 02:23 : Publication npm 0.1.21 malveillant
  • 03:17 : Commit b52958f sur MemOS (ajout sckit + CI token stealer)
  • 03:45–04:36 : Alternance versions clean/malveillantes npm (0.1.22 Ă  0.1.25)
  • 05:24–05:25 : Commit 41bf5c7, recrĂ©ation du tag v2.0.34, publication PyPI
  • 05:55 : Suppression du tag v2.0.34-capture-1

📰 Nature de l’article

Il s’agit d’une analyse technique approfondie publiĂ©e par SafeDep, documentant une attaque supply chain active avec extraction complĂšte des IOCs, des hashes binaires, des techniques d’attaque et des indicateurs de persistance. L’objectif est d’informer les Ă©quipes de sĂ©curitĂ© et les mainteneurs de packages affectĂ©s.

🧠 TTPs et IOCs dĂ©tectĂ©s

TTP

  • T1195.001 — Supply Chain Compromise: Compromise Software Dependencies and Development Tools (Initial Access)
  • T1059.004 — Command and Scripting Interpreter: Unix Shell (Execution)
  • T1552.001 — Unsecured Credentials: Credentials In Files (Credential Access)
  • T1555 — Credentials from Password Stores (Credential Access)
  • T1041 — Exfiltration Over C2 Channel (Exfiltration)
  • T1027 — Obfuscated Files or Information (Defense Evasion)
  • T1543 — Create or Modify System Process (Persistence)
  • T1071.001 — Application Layer Protocol: Web Protocols (Command and Control)
  • T1573.001 — Encrypted Channel: Symmetric Cryptography (Command and Control)
  • T1036 — Masquerading (Defense Evasion)
  • T1070.004 — Indicator Removal: File Deletion (Defense Evasion)
  • T1526 — Cloud Service Discovery (Discovery)
  • T1608.003 — Stage Capabilities: Install Digital Certificate (Resource Development)

IOC

  • Domaines : skyleen.fr — VT · URLhaus · ThreatFox
  • Domaines : 8a8acaf167b3.skyleen.fr — VT · URLhaus · ThreatFox
  • Domaines : 0b48fafd6fbe.skyleen.fr — VT · URLhaus · ThreatFox
  • Domaines : 266297c6df27.skyleen.fr — VT · URLhaus · ThreatFox
  • Domaines : c747d139e7e9.skyleen.fr — VT · URLhaus · ThreatFox
  • Domaines : 73376a079d87.skyleen.fr — VT · URLhaus · ThreatFox
  • Domaines : d4f77a3a8cb0.skyleen.fr — VT · URLhaus · ThreatFox
  • Domaines : 10729e014d0e.skyleen.fr — VT · URLhaus · ThreatFox
  • URLs : https://10729e014d0e.skyleen.fr/eb57efaa7365698fc1e4decc/initial-ci-v2 — URLhaus
  • URLs : https://8a8acaf167b3.skyleen.fr/6110ea0c63c61803b1232685/config — URLhaus
  • URLs : https://8a8acaf167b3.skyleen.fr/6110ea0c63c61803b1232685/status — URLhaus
  • URLs : https://8a8acaf167b3.skyleen.fr/6110ea0c63c61803b1232685/batch — URLhaus
  • SHA256 : 995a208944176c437a023f4a5c11baad2eb77a91847893c82e5866eaabedb810 — VT · MalwareBazaar
  • SHA256 : 6caf89b059e9b6c82bb4ac4727816d516753c4d26833434dea0ecda44a346eb3 — VT · MalwareBazaar
  • SHA256 : a6870826cd7c7ec8d32af227252efcdcdca03ac956d4702cdc2157ca82641673 — VT · MalwareBazaar
  • SHA256 : 39ee644406829a4b630b31759c20478bc22d576d6a59b253ed86f72c360aa5ef — VT · MalwareBazaar
  • SHA256 : 92b46d18fc553c494eda714f204459edb74c205bf53b18a9092bcf02c7a6c5be — VT · MalwareBazaar
  • SHA256 : 381ac6dc1715d9298fe81b2a53a11f7b7d78e361ee3a6619ad54f8c4b062cc18 — VT · MalwareBazaar
  • SHA256 : c1b0998347b489582bae7b7f4930f9831d9ef4b6bc150cfd488ee1a43272dd36 — VT · MalwareBazaar
  • SHA256 : e077c387b223811064b7bbc5a55a0182fca9bf50894f949ff284d4be87d44b26 — VT · MalwareBazaar
  • SHA256 : 8f647f17a1934679c4095e21bee2b9bd83e28476603758bc91408a0c84 — VT · MalwareBazaar
  • SHA256 : 65faf8ccbcf5b34eb4f72c71bf82815fa9c1e2f947b9c898491540e866132c31 — VT · MalwareBazaar
  • SHA256 : 9de0d5b0ca184f71f630be5781d134998883a02d5d7bc65aeb9559d8f9 — VT · MalwareBazaar
  • SHA256 : f8ccdd1da7dff1aef16377a2842bc7acf7c516e32122dd6e42dc4a4e57653fce — VT · MalwareBazaar
  • SHA256 : 5405e330507602e803f7dd6f2a9d4555aec8558ab222b51413594a962d — VT · MalwareBazaar
  • SHA256 : 56cd3416d2ec2aa7e7cec2a06010cf0b58eb09c0a5486809df52afeaca8f14be — VT · MalwareBazaar
  • SHA256 : 16de381deb978744535b10f68fe15165251374b86eef18ffc2c47f61ea — VT · MalwareBazaar
  • SHA256 : d6b3e77c36ee8017c9bf30d1da7218ec0ea843768d313eb8e35845c8a9b38a26 — VT · MalwareBazaar
  • SHA256 : f7c4014e284f3d56c452b8b222a287c54f73dc4a40a7e022e765ac8376 — VT · MalwareBazaar
  • SHA256 : 5dbc82475ce61369e53f795f0a44451715763450051fa2a84d38d6b2e8700114 — VT · MalwareBazaar
  • Emails : ci-review@memtensor.invalid
  • Fichiers : sckit
  • Fichiers : sckit.exe
  • Fichiers : sckit-publish-bridge.sh
  • Fichiers : _pypi_bridge.sh
  • Fichiers : sckit_poetry_build.py
  • Fichiers : runtime-update.yml
  • Fichiers : memos-cloud-openclaw-plugin-0.1.21.tgz
  • Fichiers : memos-cloud-openclaw-plugin-0.1.23.tgz
  • Fichiers : memos-cloud-openclaw-plugin-0.1.25.tgz
  • Fichiers : memoryos-2.0.34-py3-none-any.whl
  • Fichiers : memoryos-2.0.34.tar.gz
  • Fichiers : ca-roots.pem
  • Fichiers : sckit.js
  • Fichiers : _stage0.py
  • Fichiers : _initial_ci_delivery.py
  • Fichiers : validate-release-confirmation.mjs
  • Chemins : $HOME/.openclaw/.cache/runtime
  • Chemins : $HOME/.memos/.cache/runtime
  • Chemins : .sckit/linux-amd64/sckit
  • Chemins : lib/sckit.js
  • Chemins : memos/_stage0.py
  • Chemins : src/memos/.sckit
  • Chemins : src/memos/_pypi_bridge.sh

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

  • sckit (other)
  • sckit implant (Go worm) (rat)

🟡 Indice de vĂ©rification factuelle : 55/100 (moyenne)

  • ⬜ safedep.io — source non rĂ©fĂ©rencĂ©e (0pts)
  • ✅ 24722 chars — texte complet (fulltext extrait) (15pts)
  • ✅ 54 IOCs dont des hashes (15pts)
  • ⬜ 0/9 IOCs confirmĂ©s externellement (0pts)
  • ✅ 13 TTPs MITRE identifiĂ©es (15pts)
  • ✅ date extraite du HTML source (10pts)
  • ⬜ aucun acteur de menace nommĂ© (0pts)
  • ⬜ pas de CVE Ă  vĂ©rifier (0pts)

🔗 Source originale : https://safedep.io/memtensor-sckit-worm-npm-pypi/