3 points par GN⁺ 2025-10-31 | Aucun commentaire pour le moment. | Partager sur WhatsApp
  • Il a été confirmé que plus de 100 paquets malveillants destinés au vol d’identifiants ont été publiés sur le dépôt NPM sans être détectés depuis août, et qu’ils ont été téléchargés au total plus de 86 000 fois
  • La société de sécurité Koi rapporte qu’une campagne d’attaque baptisée PhantomRaven a distribué 126 paquets malveillants en abusant de la fonctionnalité Remote Dynamic Dependencies (RDD) de NPM
  • Le RDD est un mécanisme qui permet à un paquet de télécharger dynamiquement du code de dépendance depuis des domaines non fiables, ce qui empêche sa détection par les outils d’analyse statique
  • Les attaquants ont exploité cette fonctionnalité pour télécharger du code malveillant via des connexions HTTP, tandis que les métadonnées des paquets affichaient « 0 Dependencies », empêchant les développeurs et les scanners de sécurité de s’en apercevoir
  • Cette faiblesse structurelle met en évidence les limites de la gestion de la sécurité dans l’écosystème NPM ainsi que les risques des mécanismes d’installation automatique

Propagation de paquets malveillants dans le dépôt NPM

  • Des attaquants ont exploité une faiblesse structurelle du dépôt de code NPM pour publier, depuis août, plus de 100 paquets destinés au vol d’identifiants
    • La plupart de ces paquets ont été diffusés sans être détectés, avec un total cumulé de plus de 86 000 téléchargements
  • La société de sécurité Koi a nommé cette attaque la campagne PhantomRaven et a analysé l’exploitation d’une fonctionnalité spécifique de NPM
    • Selon Koi, sur les 126 paquets malveillants, environ 80 étaient encore présents sur NPM au moment de la rédaction de l’article

Structure vulnérable de Remote Dynamic Dependencies (RDD)

  • Le RDD est une fonctionnalité qui permet à un paquet de télécharger dynamiquement du code de dépendance depuis des sites externes
    • En temps normal, les dépendances sont récupérées depuis l’infrastructure de confiance de NPM, mais le RDD autorise aussi des téléchargements via des connexions non chiffrées comme HTTP
  • Les attaquants de PhantomRaven ont utilisé cette fonctionnalité pour configurer le téléchargement de code depuis des URL malveillantes (ex. : http://packages.storeartifact.com/npm/unused-imports)
    • Ces dépendances sont invisibles pour les développeurs comme pour les scanners de sécurité, et les informations du paquet affichent « 0 Dependencies »
  • En raison du mécanisme d’installation automatique de NPM, ce code de dépendance « invisible » est exécuté automatiquement

Limites de détection des outils de sécurité

  • Oren Yomtov de Koi a déclaré que « PhantomRaven est un cas qui exploite avec sophistication les angles morts des outils de sécurité existants »
    • Le RDD n’est pas détecté par les outils d’analyse statique
  • Cela a permis aux attaquants de contourner les vérifications de sécurité et de distribuer du code malveillant

Facteurs de vulnérabilité supplémentaires

  • Koi explique que les dépendances téléchargées via le RDD sont retéléchargées depuis le serveur des attaquants à chaque installation
    • En l’absence de cache ou de gestion de versions, il existe une possibilité que du code malveillant différent soit injecté selon le moment de l’installation, même pour un même paquet
  • Cette structure de téléchargement dynamique complique la vérification de l’intégrité des paquets

Structure et contexte de NPM

  • NPM est un gestionnaire de paquets pour JavaScript, maintenu par npm, Inc., une filiale de GitHub
    • Il s’agit du gestionnaire de paquets par défaut de Node.js et il se compose d’un client en ligne de commande et du npm registry
    • Le registry stocke des paquets publics ainsi que des paquets privés payants, consultables via le site web
  • Cet incident est présenté comme un exemple montrant que la structure de gestion automatique des dépendances de NPM peut être détournée à des fins d’attaque

Autres mentions

  • En fin d’article, il est mentionné qu’il faudrait bloquer l’exécution inutile de JavaScript
    • Toutefois, cette attaque est soulignée comme un cas où même du code JavaScript indispensable a été détourné

Aucun commentaire pour le moment.

Aucun commentaire pour le moment.