
Des millions de référentiels GitHub peuvent être vulnérables au détournement de référentiel de dépendances, également connu sous le nom de « RepoJacking », qui pourrait aider les attaquants à déployer des attaques de chaîne d’approvisionnement affectant un grand nombre d’utilisateurs.
L’avertissement provient de l’équipe de sécurité d’AquaSec, « Nautilus », qui a analysé un échantillon de 1,25 million de référentiels GitHub et a constaté qu’environ 2,95% d’entre eux étaient vulnérables au RepoJacking.
En extrapolant ce pourcentage à l’ensemble de la base de référentiels de GitHub de plus de 300 millions, les chercheurs estiment que le problème affecte environ 9 millions de projets.

Qu’est-ce que le RepoJacking
Les changements de nom d’utilisateur et de nom de référentiel sont fréquents sur GitHub, car les organisations peuvent obtenir une nouvelle direction par acquisition ou fusion, ou elles peuvent passer à un nouveau nom de marque.
Lorsque cela se produit, une redirection est créée pour éviter de casser les dépendances des projets utilisant du code provenant de référentiels qui ont changé de nom ; cependant, si quelqu’un enregistre l’ancien nom, cette redirection devient invalide.
RepoJacking est une attaque où un acteur malveillant enregistre un nom d’utilisateur et crée un référentiel utilisé par une organisation dans le passé mais qui a depuis changé de nom.
Cela se traduit par tout projet ou code qui s’appuie sur les dépendances du projet attaqué pour récupérer les dépendances et le code du référentiel contrôlé par l’attaquant, qui pourrait contenir des logiciels malveillants.

GitHub est au courant de cette possibilité et a mis en place des défenses contre les attaques RepoJacking. Cependant, AquaSec rapporte que les solutions ont jusqu’à présent été incomplètes et facilement contournées.
Par exemple, GitHub ne protège que les projets très populaires, mais ces projets peuvent utiliser une dépendance d’un référentiel moins populaire et vulnérable qui n’est pas couvert, de sorte que la compromission de la chaîne d’approvisionnement les affecte également.
De plus, GitHub protège les référentiels avec plus de 100 clones la semaine avant de changer de nom, indiquant des préparations malveillantes. Cette protection ne couvre pas les projets devenus populaires après leur changement de nom ou leur transfert de propriété.
Potentiel d’exploitation
Pour souligner l’importance du problème, AquaSec a scanné des organisations renommées à la recherche de dépôts vulnérables et a trouvé des cas exploitables dans des dépôts gérés par Google et Lyft.
Dans le cas de Google, un fichier readme contenant des instructions sur la construction du projet assez populaire « Mathsteps » pointait vers un référentiel GitHub appartenant à Socratic, une société que Google a acquise et assimilée en 2018 et qui n’existe plus.
Puisqu’un attaquant peut cloner ce référentiel pour interrompre la redirection, les utilisateurs suivant les instructions Lisez-moi pourraient avoir téléchargé du code malveillant à partir du référentiel non autorisé.
De plus, comme les instructions incluaient une commande « npm install » pour la dépendance, le code de l’attaquant réaliserait une exécution de code arbitraire sur les appareils d’utilisateurs peu méfiants.

Dans le cas de Lyft, l’attaque serait plus automatisée, car AquaSec a trouvé un script d’installation sur le référentiel de l’entreprise qui récupère une archive ZIP d’un autre référentiel, qui est vulnérable au RepoJacking.
Un attaquant enregistrant un nouveau nom d’utilisateur et un référentiel avec les bons noms (« YesGraph » et « Dominus » dans ce cas) pourrait injecter son code à toute personne exécutant le script « install.sh » de Lyft.

Conclusion
Malheureusement, le risque de RepoJacking est répandu, difficile à atténuer et peut avoir de graves répercussions pour les organisations et les utilisateurs.
Les propriétaires de projet doivent minimiser autant que possible les ressources qu’ils récupèrent à partir de référentiels externes.
De plus, les propriétaires devraient envisager de garder le contrôle des référentiels d’anciennes marques ou d’entités acquises, juste pour empêcher les attaques de détournement de dépendance sur eux-mêmes et leurs utilisateurs.