Introduction : Sécuriser vos dépendances avec Bundler
Dans un monde où la sécurité des chaînes d'approvisionnement logicielles est cruciale, Ruby Bundler 4.0.13 introduit une fonctionnalité innovante : le support de cooldown. Cette fonctionnalité permet de retarder l'installation de nouvelles versions de gems, fournissant ainsi une fenêtre de vérification essentielle pour éviter les versions malveillantes. Explorons en détail comment cela fonctionne et comment l'implémenter dans vos projets.
Pourquoi le Cooldown est-il nécessaire ?
Les attaques contre la chaîne d'approvisionnement sont de plus en plus fréquentes, et RubyGems n'est pas à l'abri. La plupart des attaques exploitent une fenêtre de temps étroite après qu'un compte a été compromis et qu'une version malveillante a été publiée. C'est précisément là que le cooldown intervient, en refusant de résoudre les dépendances vers des versions trop récentes pour être sécurisées.
Chiffres et faits
Selon une étude de Sonatype, les attaques contre la chaîne d'approvisionnement ont augmenté de 650% entre 2020 et 2021. Le cooldown de Bundler vise à réduire cette vulnérabilité en introduisant un délai de validation.
Fonctionnement du Cooldown
Le cooldown utilise un filtre temporel basé sur le timestamp created_at fourni par l'index compact v2 de rubygems.org. Les versions qui ne peuvent pas prouver leur ancienneté, comme celles provenant de serveurs gem plus anciens ou de registres privés, sont considérées comme étant en dehors de la fenêtre et restent résolvables.
Mise en œuvre
Pour activer le cooldown, il suffit de mettre à jour Bundler à la version 4.0.13 et de définir un délai dans le fichier Gemfile :
``ruby source "https://rubygems.org", cooldown: 7 gem "rails" gem "puma" ``
Cela garantit que chaque développeur et chaque exécution CI appliquent la même fenêtre de vérification, sans configuration supplémentaire.
Options avancées
Le cooldown peut être configuré de manière plus granulaire, soit par projet, globalement, ou via l'environnement. Voici quelques commandes utiles :
- Par projet :
$ bundle config set cooldown 7 - Globalement :
$ bundle config set --global cooldown 7 - Via l'environnement :
$ BUNDLE_COOLDOWN=7 bundle install
Avantages de l'approche Cooldown
En retardant l'installation de nouvelles versions, le cooldown permet aux développeurs de bénéficier de la sécurité supplémentaire d'une communauté qui a eu le temps de vérifier les nouvelles versions. Cela complète d'autres mesures de sécurité comme l'authentification à deux facteurs obligatoire.
Conclusion
Le support de cooldown de Ruby Bundler est une avancée significative pour renforcer la sécurité de vos projets Ruby. En retardant l'installation des nouvelles versions de gems, il offre une protection supplémentaire contre les attaques de la chaîne d'approvisionnement.
Discutons de ton projet en 15 minutes.