présentation

L'auteur de l'article compare les systèmes de gestion de dépendances de Ruby et de Go. Il constate que Go est plus résistant aux dépendances malveillantes en raison de son système de gestion de dépendances basé sur les URL et les référentiels VCS.

fonctionnement de go

Go utilise un fichier go.mod pour spécifier les dépendances. Ce fichier contient les URL des dépendances, ainsi que les versions exactes requises. Les dépendances sont identifiées par leur URL, par exemple github.com/user/pkg. Le système de gestion de dépendances de Go fetch les dépendances directement depuis les référentiels VCS, ce qui permet une meilleure transparence et sécurité.

go mod init

Le système de gestion de dépendances de Go utilise également un proxy pour prévenir les attaques de type « left-pad » et vérifie les hashes des fichiers pour garantir leur intégrité.

limites de ruby

Ruby, en revanche, utilise un système de gestion de dépendances basé sur des packages publiés sur rubygems.org. Cela signifie que les dépendances sont téléchargées sous forme de fichiers .gem qui peuvent contenir n'importe quoi, sans garantie que leur contenu corresponde au référentiel source. Cela rend l'audit des dépendances beaucoup plus difficile.

gem 'rails', git: 'https://github.com/rails/rails.git', tag: 'v8.1.2'

L'auteur propose une solution pour améliorer la sécurité des dépendances Ruby en utilisant un système similaire à celui de Go, où les dépendances sont fetchées directement depuis les référentiels VCS. Cela pourrait être réalisé en modifiant le comportement de Bundler pour utiliser les référentiels VCS par défaut.