Données concernant les menaces Logiciels malveillants Logiciel malveillant CanisterWorm

Logiciel malveillant CanisterWorm

Une attaque sophistiquée contre la chaîne d'approvisionnement, initialement ciblée sur le scanner Trivy largement utilisé, s'est étendue à une compromission plus large affectant de nombreux paquets npm. Les auteurs de cette campagne sont soupçonnés d'avoir déployé un ver informatique auto-réplicatif jusqu'alors inconnu, appelé CanisterWorm, ce qui a considérablement amplifié l'ampleur et l'impact de l'intrusion.

Ce logiciel malveillant tire son nom de l'utilisation d'un conteneur ICP (Internet Computer Protocol), un ensemble de contrats intelligents inviolables hébergés sur une blockchain décentralisée, au sein de son infrastructure de commande. Il s'agit du premier cas documenté publiquement d'utilisation de conteneurs ICP pour récupérer des points d'accès de commande et de contrôle (C2), introduisant une tactique inédite et résiliente qui complexifie les méthodes de protection traditionnelles.

Paquets compromis et vecteur d’accès initial

L'attaque a touché de nombreux packages npm à différents niveaux, démontrant ainsi l'étendue de son impact au sein de la chaîne d'approvisionnement logicielle :

  • 28 paquets sous le périmètre @EmilGroup
  • 16 paquets sous le périmètre @opengov
  • Des paquets supplémentaires incluent @teale.io/eslint-config, @airtm/uuid-base32 et @pypestream/floating-ui-dom

Cette campagne fait suite à une compromission d'identifiants qui a permis à des attaquants de diffuser des versions malveillantes d'outils liés à Trivy, notamment trivy, trivy-action et setup-trivy, contenant des fonctionnalités intégrées de vol d'identifiants. L'opération serait liée à un groupe de cybercriminels spécialisé dans le cloud, identifié comme TeamPCP.

Flux de travail d’infection et infrastructure de commandement décentralisée

La chaîne d'infection débute lors de l'installation d'un paquet npm, lorsqu'un script post-installation exécute un chargeur. Ce chargeur déploie une porte dérobée Python conçue pour communiquer avec le conteneur ICP. Ce dernier agit comme un résolveur de boîte de dépôt morte, renvoyant une URL qui redirige le système infecté vers le téléchargement et l'exécution de la charge utile suivante.

La nature décentralisée de l'infrastructure ICP offre un avantage considérable aux attaquants. Le conteneur pouvant mettre à jour dynamiquement l'URL de la charge utile, les acteurs malveillants peuvent diffuser de nouveaux binaires malveillants sur tous les systèmes infectés sans modifier le logiciel malveillant déployé. Cette architecture rend également les efforts de neutralisation beaucoup plus difficiles.

Mécanismes de persistance et techniques de furtivité

La persistance est assurée par la création d'un service utilisateur systemd configuré pour redémarrer automatiquement le processus malveillant. Ses principales caractéristiques sont les suivantes :

  • Redémarrage automatique imposé par la directive Restart=always
  • Un délai de 5 secondes est requis avant de relancer la porte dérobée en cas de fermeture.
  • Le service est camouflé en logiciel de surveillance PostgreSQL légitime sous le nom de « pgmon ».

Cette approche garantit un fonctionnement continu tout en minimisant les risques de détection en se fondant dans les services système légitimes.

Livraison adaptative de la charge utile et comportement du coupe-circuit

La porte dérobée communique périodiquement avec le conteneur ICP toutes les 50 minutes, en utilisant un agent utilisateur de navigateur falsifié pour éviter d'éveiller les soupçons. L'URL renvoyée détermine l'action suivante :

  • Si l'URL pointe vers une charge utile valide, le logiciel malveillant la télécharge et l'exécute.
  • Si l'URL contient « youtube.com », le logiciel malveillant entre dans un état dormant.

Ce mécanisme fait office d'interrupteur d'arrêt à distance. En modifiant l'URL du conteneur entre un lien YouTube inoffensif et une charge utile malveillante, l'attaquant peut activer ou désactiver le logiciel malveillant sur tous les systèmes infectés. Il est important de noter que les charges utiles précédemment exécutées continuent de s'exécuter en arrière-plan, car le logiciel malveillant ne met pas fin aux processus en cours.

Un coupe-circuit similaire basé sur YouTube a également été observé dans un binaire Trivy infecté par un cheval de Troie (version 0.69.4), qui communique avec la même infrastructure ICP via un dropper Python distinct.

Capacités des vers et propagation automatisée

Au départ, la propagation reposait sur un script exécuté manuellement, nommé deploy.js, qui exploitait des jetons d'authentification npm volés pour injecter du code malveillant dans des packages accessibles. Ce script n'était pas déclenché lors de l'installation, mais servait d'outil autonome pour étendre la portée de l'attaque.

Les variantes ultérieures de CanisterWorm ont considérablement évolué. Dans les versions plus récentes, comme celles présentes dans @teale.io/eslint-config (versions 1.8.11 et 1.8.12), le ver intègre l'auto-propagation directement au processus d'installation du paquet. Le mécanisme mis à jour comprend :

  • Extraction des jetons d'authentification npm de l'environnement infecté
  • Exécution immédiate de la routine de propagation en tant que processus d'arrière-plan détaché
  • Publication automatisée de paquets compromis à l'aide d'identifiants collectés

Ce changement transforme l'attaque, initialement menée manuellement, en un système de propagation entièrement autonome.

Escalade vers une menace auto-entretenue pour la chaîne d’approvisionnement

L'introduction de la collecte automatisée de jetons et de leur auto-propagation marque une escalade critique. Tout poste de travail de développeur ou pipeline CI/CD installant un paquet compromis et contenant des identifiants npm accessibles devient un nœud de propagation actif. Ceci crée un effet domino où les paquets infectés entraînent d'autres infections parmi les dépendances en aval.

À ce stade, la menace évolue, passant d'une simple compromission de compte à un écosystème autonome de distribution de logiciels malveillants. Chaque nouvel environnement infecté contribue à sa propagation, permettant une croissance exponentielle et rendant son endiguement beaucoup plus difficile.

Pour aggraver les choses, des artefacts de test tels qu'une charge utile de substitution (« hello123 ») indiquent que les attaquants affinent et valident activement la chaîne d'attaque avant de déployer des binaires malveillants pleinement opérationnels.

Tendance

Le plus regardé

Chargement...