Contexte de la compromission

Des acteurs inconnus ont détourné deux paquets légitimes de la société MemTensor, publiés sur les registres npm et PyPI. Les versions npm @memtensor/memos-cloud-openclaw-plugin 0.1.21, 0.1.23 et 0.1.25 contiennent un chargeur Go nommé sckit, tandis que la version PyPI MemoryOS 2.0.34 a été compromise de la même façon. Les versions intermédiaires 0.1.22, 0.1.24 et le paquet PyPI 2.0.33 restent propres. Le code malveillant s’appuie sur le processus d’intégration d’une IA de mémoire, déclenché à chaque démarrage du gateway ou lors d’un événement de rappel de mémoire.

Mécanisme du chargeur sckit

Le chargeur est un binaire Go statiquement lié, capable de s’exécuter sous Windows, Linux et macOS. Dans l’écosystème npm, le payload est injecté dans le plugin et lancé chaque fois que le gateway OpenClaw démarre ou que le plugin gère un rappel de mémoire. Le launcher transmet l’environnement du processus hôte ainsi que le texte de l’invite utilisateur au binaire malveillant. Sur PyPI, l’exécution se produit immédiatement après l’import du module memos dans une application Python. Une fois actif, sckit collecte des fichiers de configuration contenant des secrets (.npmrc, .vault-token, id_ecdsa, credentials.db, access_tokens.json, stored_tokens) ainsi que des variables d’environnement portant des jetons, mots de passe, clés API ou chaînes de connexion. Les données ciblées comprennent les clés d’accès AWS, les jetons GitHub et GitLab, les tokens npm/PyPI, les clés Hugging Face, HashiCorp Vault, Slack, Stripe, SendGrid et les JWT. Toutes les informations sont exfiltrées vers le serveur de commande‑et‑contrôle skyleen.fr et ses sous‑domaines.

Impact sur la chaîne d'approvisionnement

SafeDep a identifié que les attaquants ont récupéré les jetons de publication npm et PyPI depuis les pipelines GitHub Actions de MemTensor, en poussant des commits qui ont déclenché la remise de ces jetons au workflow. Le chargeur possède des modèles d’installation capables de se répliquer dans de nouveaux paquets npm, PyPI et même des workflows GitHub Actions, ce qui le fait fonctionner comme un ver de chaîne d’approvisionnement. La compromission expose non seulement les machines de développement, mais aussi les environnements d’intégration continue où les secrets sont injectés pour chaque job. À ce jour, aucune autre bibliothèque n’a été confirmée comme affectée, mais la possibilité d’une propagation supplémentaire reste élevée.

Contre‑mesures recommandées

Les équipes de sécurité doivent immédiatement verrouiller les dépendances aux versions propres : @memtensor/memos-cloud-openclaw-plugin@0.1.20 et MemoryOS@2.0.33. Il faut révoquer et regénérer tous les jetons de publication npm, PyPI et les secrets stockés dans les pipelines CI/CD. Les processus sckit doivent être arrêtés et leurs exécutables supprimés. Enfin, il est conseillé de bloquer le domaine skyleen.fr et ses sous‑domaines au niveau du pare‑feu ou du proxy, puis de surveiller les journaux d’accès pour toute tentative de connexion vers ces hôtes. Une revue du code du plugin MemOS Cloud est également recommandée afin de s’assurer que les points d’intégration OpenClaw ne sont pas exploités à nouveau.