Strengthening supply chain security: Preparing for the next malware campaign

3 minute de lecture

Mis à jour :

L’Évolution des Menaces dans la Chaîne d’Approvisionnement Logicielle

Les campagnes de malware comme Shai-Hulud ciblent activement l’écosystème open source, exploitant les identifiants compromis et les scripts du cycle de vie des paquets pour infiltrer du code malveillant. Ces attaques s’adaptent rapidement, visent les flux de travail des mainteneurs et exploitent les failles de confiance dans les processus de publication.

Les caractéristiques principales de ces campagnes incluent :

  • Compromission via les identifiants : Les attaquants obtiennent un accès initial via des identifiants ou des jetons OAuth volés, puis collectent d’autres secrets (jetons npm, jetons CI, identifiants cloud) pour étendre leur portée.
  • Exécution au moment de l’installation avec obfuscation : Du code malveillant est injecté dans des scripts de post-installation ou de cycle de vie, révélant son comportement uniquement à l’exécution. Il peut être conditionnellement activé et exfiltrer des données de manière adaptée à l’environnement.
  • Ciblage des espaces de noms et des noms de paquets internes : Les attaques visent des paquets populaires et fiables, et les paquets infectés sont publiés sous des noms existants, parfois avec des numéros de version modifiés pour ressembler à des mises à jour légitimes.
  • Itération rapide et contournement des défenses : Les courtes périodes entre les variantes et les modifications délibérées indiquent des acteurs organisés cherchant un accès durable et une propagation à grande échelle.
  • Exploitation des angles morts dans les pipelines de publication : Les différences entre le code source et les artefacts publiés, les scripts de cycle de vie et les transformations lors de la construction créent des opportunités d’injection de code sans être détecté si la validation des artefacts fait défaut.

Vulnérabilités exploitées (sans CVE spécifique mentionné dans le texte) :

  • Compromission d’identifiants et de jetons d’accès.
  • Exécution de code via des scripts de cycle de vie de paquets (post-install).
  • Manque de validation des artefacts publiés.
  • Ciblage des environnements d’intégration continue (CI).
  • Techniques d’escalade de privilèges dans certains contextes de build.

Recommandations :

Pour tous :

  • Activer l’authentification multifacteur (MFA) résistante au phishing sur tous les comptes importants (GitHub, npm, etc.).
  • Définir des dates d’expiration pour tous les jetons d’accès afin de garantir leur rotation régulière.
  • Auditer et révoquer l’accès des applications GitHub/OAuth inutilisées.
  • Utiliser un environnement isolé (sandbox) pour le développement, tel que GitHub Codespaces ou une machine virtuelle/conteneur.

Pour les mainteneurs :

  • Activer la protection des branches pour empêcher les mises à jour malveillantes d’être poussées directement sur la branche principale.
  • Utiliser la publication de confiance (trusted publishing) au lieu des jetons.
  • Épingler les dépendances CI et activer le scan de code (code scanning), en résolvant les alertes générées.
  • Surveiller les artefacts des paquets et valider les archives publiées par rapport au code source (par exemple, via SRI ou attestations de build d’artefacts).

npm travaille à améliorer la sécurité de sa chaîne d’approvisionnement avec des fonctionnalités futures telles que l’intégration en masse OIDC, le support élargi des fournisseurs OIDC et la publication par étapes (staged publishing) pour permettre une période de révision avant la mise en ligne des paquets.


Source