Les référentiels déposés sur les sites de partage de code sont une mine pour les cybercriminels en utilisant la technique de piratage dit de repo jacking. Des millions de dépôts GitHub sont potentiellement vulnérables et ouvre la voie aux attaquants afin d'exécuter du code sur les environnements internes des entreprises ou ceux de leurs clients. Tel est le constat de l'éditeur AquaSec après avoir analysé un échantillon d'1,25 million de dépôts GitHub et a constaté qu'environ 3% d'entre eux étaient vulnérables, y compris des dépôts appartenant à des entreprises telles que Google et Lyft.

Sur GitHub, les entreprises ont des noms d'utilisateur et de dépôt. En cas de changement de direction ou de marque, la société peut modifier ces noms. Cela crée une redirection pour éviter de briser les dépendances nécessaires à certains projets. Cependant, si quelqu'un enregistre l'ancien nom, cette redirection devient invalide. Un cybercriminel peut alors acquérir l'ancien nom du dépôt pour créer des dépendances malveillantes, cela s'appelle le repo jacking. GitHub a mis en place certaines restrictions pour empêcher l'attaquant d'ouvrir l'ancien nom du dépôt. « Cependant, elles ne s'appliquent qu'aux dépôts populaires qui étaient populaires avant le changement de nom, et les chercheurs ont récemment trouvé de nombreux moyens de contourner ces restrictions, donnant la capacité aux attaquants d'ouvrir tous les dépôts qu'ils souhaitent », a expliqué AquaSec.

Des risques d'exploits bien réels

Le fournisseur a téléchargé tous les journaux de GHTorrent du dépôt GitHub pour le mois de juin 2019 et a compilé une liste de 125 millions de noms de référentiels uniques. Ils ont ensuite échantillonné 1% (1,25 million de noms de dépôts) et vérifié chacun d'entre eux pour voir s'il était vulnérable au repo jacking. « Nous avons découvert que 36 983 dépôts l'étaient ! Cela représente un taux de réussite de 2,95 % », a déclaré AquaSec. GHTorrent est un site web qui fournit un historique complet des dépôts GitHub. 

La société a constaté que des entreprises, dont Google et Lyft, contenaient des dépôts sensibles et a expliqué l'exploitation possible dans leurs cas. Pour Google, AquaSec a trouvé un fichier readme contenant des instructions sur la construction d'un projet appelé Mathsteps pointant vers un dépôt GitHub appartenant à Socratic, une société que Google a acquise en 2018 et qui n'existe plus. En utilisant la vulnérabilité, un attaquant peut cloner ce dépôt pour casser la redirection. Cela peut conduire les utilisateurs à accéder à un fichier contenant un code malveillant que l'attaquant a inséré. La société de cybersécurité a également observé que les instructions comprenaient une commande d'installation pour la dépendance. Le code de l'attaquant peut exécuter un code arbitraire sur les terminaux des utilisateurs qui ne se doutent de rien. Pour Lyft, 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 était vulnérable au repo jacking. Cela signifie que les attaquants pouvaient injecter leur code malveillant automatiquement dans n'importe quel script d'installation de Lyft. Google et Lyft ont tous deux corrigé le problème.

Un nombre d'entreprises exposées sans doute plus élevé

AquaSec conseille aux entreprises de vérifier régulièrement leurs dépôts pour tout lien qui pourrait récupérer des ressources à partir de répertoires GitHub externes, car les références à des projets tels que le module Go peuvent changer de nom à tout moment. « Si vous changez le nom de votre société, assurez-vous que vous possédez toujours le nom précédent, même en tant que placeholder, afin d'empêcher les attaquants de le créer », prévient AquaSec. Les chercheurs préviennent que de nombreuses autres organisations qu'ils n'ont pas analysées pourraient également être touchées. « Il est important de noter que notre analyse ne couvre qu'une partie des données disponibles, ce qui signifie qu'il y a beaucoup plus d'entreprises vulnérables, y compris la vôtre », a déclaré AquaSec.