Chaîne logistique logicielle : une période risquée pour les dépendances

La chaîne logistique logicielle est un élément essentiel du cycle de vie des applications et des sites web. Les interdépendances et les composants courants dans le développement logiciel moderne peuvent accroître la surface d’attaque et parfois permettre aux hackers de contourner les solides couches de sécurité que vous avez ajoutées à votre infrastructure. En effet, une seule faille dans le code source peut suffire à […]

Écrit par
Julien Maury
Julien Maury
May 17, 2022
5 minute read
eSecurity Planet Le contenu et les recommandations de produits sont indépendants de la rédaction. Nous pouvons gagner de l'argent lorsque vous cliquez sur des liens vers nos partenaires. En savoir plus

La chaîne logistique logicielle est un élément essentiel du cycle de vie des applications et des sites web. Les interdépendances et les composants courants dans le développement logiciel moderne peuvent accroître la surface d’attaque et parfois permettre aux hackers de contourner les solides couches de sécurité que vous avez ajoutées à votre infrastructure.

En effet, une seule faille dans le code source peut suffire à compromettre toute la chaîne logistique. Le problème, c’est que les projets modernes comptent énormément de dépendances. Cette situation est connue sous le nom d’« enfer des dépendances », car vos dépendances ont leurs propres dépendances, et ainsi de suite. Essayer de retracer toutes ces dépendances pourrait vous rendre fou.

En outre, le développement logiciel repose largement sur des plateformes open source et des fournisseurs tiers, tout simplement parce que cela accélère le processus et fournit aux développeurs des bibliothèques standard. Un grand nombre de personnes ou d’organisations assurent la maintenance du code, ce qui rend la prévention des failles de sécurité particulièrement difficile.

Cela est peut-être nulle part plus évident que dans les gestionnaires de paquets. Récemment, le dépôt de paquets RubyGems a corrigé une vulnérabilité récemment enregistrée sous le nom de CVE-2022-29176. RubyGems.org est LE service d’hébergement de gems de la communauté Ruby, tout comme NPM est le registre officiel de l’écosystème JavaScript.

Ces plateformes gigantesques hébergent des centaines de milliers de paquets, avec des millions de téléchargements, et sont constamment attaquées. Les hackers tentent régulièrement des attaques par détournement, confusion de dépendances ou typosquattage, et il existe même un risque d’auto-sabotage désormais.

À lire également : Comment les hackers compromettent la chaîne logistique logicielle

Coup d’œil sur la vulnérabilité de RubyGems

La faille CVE-2022-29176 a été découverte sur RubyGems.org, le registre de paquets de toute la communauté du langage de programmation Ruby, et permettait à « n’importe quel utilisateur de supprimer et de remplacer certains gems, même s’il n’était pas autorisé à le faire ».

Certaines conditions supplémentaires s’appliquaient toutefois : le gem, autrement dit le paquet Ruby, « devait comporter un ou plusieurs tirets dans son nom au cours de sa création dans les 30 jours OU n’avoir reçu aucune mise à jour depuis plus de 100 jours ». Il pouvait cependant correspondre à de nombreux gems présents sur la plateforme.

Advertisement

Un acteur malveillant pouvait remplacer le contenu d’un gem légitime par un script destiné à voler des identifiants ou à installer un mineur de cryptomonnaie : une vulnérabilité critique.

RubyGems.org n’a reçu aucune plainte de la part des propriétaires de gems, ce qui laisse penser que la vulnérabilité critique n’a probablement pas encore été exploitée. Quoi qu’il en soit, Bundler, le gestionnaire de paquets de Ruby, recommande d’utiliser « Bundler en mode verrouillé--frozen or --deployment en CI et lors du déploiement. »

Cette bonne pratique empêche votre application Ruby de basculer silencieusement vers une version détournée, ce que les hackers cherchent précisément à obtenir avec ce type d’exploit.

Les utilisateurs qui doivent vérifier si leur application a été victime d’exploits par le passé peuvent examiner le fichier Gemfile.lock et rechercher des changements de plateforme indésirables survenus dans les gems alors que le numéro de version n’avait pas changé.

À lire également : SBOM : sécuriser la chaîne logistique logicielle

Les plateformes sont vulnérables aux attaques

Qu’il s’agisse de RubyGems, de NPM ou même de pip pour les paquets Python, ces grandes plateformes constituent des éléments essentiels de la chaîne logistique logicielle. NPM fait régulièrement la une de l’actualité en raison de diverses campagnes qui touchent des millions de projets et d’utilisateurs.

L’équipe JFrog Security Research a récemment détecté une nouvelle attaque visant la chaîne logistique de NPM, similaire à une attaque déjà signalée sur Azure. Les hackers ont utilisé une attaque par confusion de dépendances en ciblant des entreprises industrielles allemandes : Bertelsmann, Bosch, Stihl et DB Schenker.

Les chercheurs ont déclaré qu’il s’agissait d’une attaque « très ciblée ». Jfrog a mis à jour son article pour préciser qu’ils ne pouvaient pas déterminer, au moment de la rédaction, s’il s’agissait d’un véritable acteur malveillant ou d’un pentester « très agressif » à l’origine de l’attaque.

Divers IoC (indicateurs de compromission) ont été relevés, mais les hackers n’ont pas pris le temps de masquer le nom de leur cible sur NPM et ont utilisé un outil public d’obfuscation facilement détectable et réversible, ce qui semble plutôt inhabituel pour des cybercriminels.

La confusion de dépendances consiste à utiliser les noms de paquets privés pour créer des paquets publics portant un numéro de version plus élevé. Lorsque les utilisateurs lancent une installation ou une mise à jour, le gestionnaire de paquets s’emmêle et récupère ce qui semble être le paquet le plus récent.

Advertisement

Les hackers qui souhaitent attaquer la chaîne logistique disposent de nombreuses possibilités. La confusion de dépendances et le typosquattage sont des techniques ingénieuses, mais pas forcément les plus faciles à mettre en œuvre.

Voler les identifiants des propriétaires ou des mainteneurs peut être une approche plus pratique, car les attaquants peuvent usurper l’identité d’utilisateurs légitimes pour commettre toutes sortes d’abus, notamment distribuer des logiciels malveillants ou des portes dérobées sur des millions d’installations.

À lire également : Principaux outils de débogage et de sécurisation du code

Comment se protéger contre les attaques visant la chaîne logistique

La plupart du temps, la meilleure chose à faire est d’atténuer une menace visant la chaîne logistique, mais certaines mesures simples permettent de réduire les risques :

  • suivre les bonnes pratiques de déploiement et d’intégration continue (par exemple, les recommandations de Bundler)
  • effectuer régulièrement des contrôles et des audits de sécurité, et ne jamais déployer en production un élément qui n’a pas été testé
  • enregistrer un registre public sous le nom de votre registre privé afin de prévenir toute attaque par typosquattage
  • adopter une politique plus stricte vis-à-vis des fournisseurs (par exemple, utiliser le numéro de version exact plutôt que « * » ou « ^ » afin d’empêcher toute mise à jour silencieuse lors des installations)
  • si vous êtes propriétaire ou mainteneur d’un paquet, activer l’authentification multifacteur
  • ne jamais déployer de fichiers de configuration ni de sourcemaps en production
  • maintenir toutes les dépendances à jour

Le dernier point peut sembler quelque peu paradoxal, car les hackers tentent de compromettre les mécanismes de mise à jour pour inciter leurs victimes à déployer des logiciels malveillants. Cependant, l’évolution des menaces est trop rapide pour négliger les correctifs de sécurité. Les composants obsolètes sont parmi les tout premiers éléments que les hackers vérifieront pour voir s’ils peuvent exploiter une vulnérabilité connue.

La chaîne logistique logicielle est semée d’embûches, et pourtant ces ressources externes sont importantes pour accélérer le développement et standardiser les pratiques. En tant que développeur, vous ne pouvez pas contrôler le code que vous ne maintenez pas — et, de nos jours, la majeure partie du code de votre projet n’est pas la vôtre. La meilleure réponse consiste à rester au fait de vos pratiques de sécurité.

À lire ensuite : Meilleurs outils de gestion des risques liés aux tiers (TPRM)

Julien Maury

eSecurity Planet contributor Julien Maury writes about penetration testing, code security, open source security and more. He is a backend developer, a mentor and a technical writer who enjoys sharing his knowledge and learning new concepts.

eSecurity Planet Logo

eSecurity Planet is a leading resource for IT professionals at large enterprises who are actively researching cybersecurity vendors and latest trends. eSecurity Planet focuses on providing instruction for how to approach common security challenges, as well as informational deep-dives about advanced cybersecurity topics.

Propriété de TechnologyAdvice. © 2026 TechnologyAdvice. Tous droits réservés

Divulgation publicitaire : Certains des produits qui apparaissent sur ce site proviennent d'entreprises dont TechnologyAdvice reçoit une compensation. Cette compensation peut influencer la façon dont les produits apparaissent sur ce site, notamment l'ordre dans lequel ils apparaissent. TechnologyAdvice n'inclut pas toutes les entreprises ou tous les types de produits disponibles sur le marché.