Bombe à retardement : des millions de dossiers .git exposés publiquement par erreur

Cybersécurité
GitHub action Dependency Review

Une étude de CyberNews révèle l’existence de millions de dépôts git censés être privés, pourtant accessibles à tous. Cela peut notamment permettre à des attaquants d’identifier des vulnérabilités en amont ou encore d’obtenir mots de passe et clés API sensibles.

Une étude menée par CyberNews révèle l’existence de millions de dépôts git censés être privés, pourtant accessibles à tous. Cela peut notamment permettre à des attaquants d’identifier des vulnérabilités en amont, dans le code source de solutions logicielles, avant qu’elles ne soient largement déployées chez leurs utilisateurs, devenant autant de portes dérobées, ou encore d’obtenir mots de passe et clés API sensibles.

2022 a été l’année des fuites de code source ; Microsoft, Nvidia, Samsung, Rockstar, Vodafone, Okta et bien d’autres entreprises ont vu leur code source mis en ligne, le plus souvent après un acte de malveillance interne ou externe.

Mais de telles fuites de code, largement commentées et très visibles, sont peut-être l’arbre qui cache la forêt : ce seraient en réalité des millions de codes source qui seraient aisément accessibles à quiconque sur Internet, via des dossiers de synchronisation « .git » oubliés et laissés en accès libre (accessibles sans même de piratage, donc !).

Ces répertoires stockent une copie du travail des développeurs et permettent la synchronisation vers des dépôts de code source externes, souvent accessibles via Internet. Ils ne devraient jamais être accessibles librement, et/ou ne jamais contenir d’informations sensibles.

Il existe pourtant de nombreuses raisons pour lesquelles un répertoire « .git » se retrouve accessible alors qu’il ne devait pas l’être. Il peut s’agir d’une mauvaise configuration des droits d’accès (d’une sauvegarde, par exemple), ou encore d’une tentative d’hébergement de son propre serveur git par un utilisateur peu au fait des bonnes pratiques d’administration.

Mais il s’agit le plus souvent d’un problème de déploiement. Un exemple courant est celui d’un site Web statique – qui peut être hébergé par exemple sur Amazon S3. Si au lieu de mettre en ligne les seuls fichiers publics du site, le développeur y dépose son répertoire de travail en entier – y compris le fameux dossier « .git », celui-ci sera servi comme le reste des fichiers à n’importe quel navigateur qui en fera la demande.

Quand on sait à quel point ces fichiers sont sensibles, il peut sembler improbable (voire même choquant !) que cela puisse se produire régulièrement. Et pourtant… selon l’étude de CyberNews, cela arrive au moins deux millions de fois !

Et ce code source librement accessible est non seulement précieux pour découvrir des vulnérabilités dans les applications, mais aussi parce qu’il contient souvent des informations sensibles.

Cela concerne en particulier des informations de connexion (des mots de passe codés en dur ou – le plus souvent – des clés d’API). On suspecte d’ailleurs que certains groupes de pirates à l’origine d’attaques majeures par rançongiciels ou de vol de données (par exemple le groupe Lapsus$) puissent avoir obtenu leurs accès initiaux via des comptes personnels d’employés ayant peut-être divulgué de telles informations, entre autres sur leurs dépôts Github publics personnels.

Répartition des dossiers « .git » exposés publiquement par pays. Source : CyberNews

Pourquoi l’exposition des dépôts git est-elle si problématique ?

Dans le cas d’une entreprise commerciale, le code source qu’elle développe est un bien précieux : il s’agit d’un investissement qu’elle compte rentabiliser en vendant son produit ou son service. Le rendre accessible librement par erreur peut ainsi conduire à un vol de propriété intellectuelle, permettant à un concurrent de sortir un produit similaire avec des coûts de développement bien inférieurs (et pour cause !)

Évidemment, cela n’est pas un problème pour les logiciels libres dont le code source a vocation à être consultable par tous. C’est d’ailleurs même l’une des forces de l’Open Source : assurer que le code source puisse être audité par tous et ainsi réduire la probabilité qu’une faille critique s’y cache trop longtemps (il y a bien eu des contre-exemples majeurs, par exemple avec OpenSSL ou SSH, mais c’est malgré tout globalement le cas).

Toutefois un second problème de taille concerne aussi bien les codes source privés que libres : ils peuvent contenir des informations sensibles. Or, les dépôts Git ne sont pas conçus pour contenir des informations sensibles. Ils sont conçus pour permettre la collaboration et le partage du code source. La présence par erreur de secrets tels que des clés API, des certificats de sécurité, des mots de passe et d’autres informations d’identification peut alors permettre à des acteurs malveillants de s’introduire dans les systèmes et y mener des attaques dévastatrices.

Et malheureusement, l’étude de CyberNews a révélé que 6 % des dépôts git exposés stockaient dans leur fichier de configuration de telles informations d’identification qui étaient, de fait, accessibles à tous.

Si le problème est bien connu du côté de l’Open Source, dont les codes ont vocation à être publics, du côté des entreprises c’est encore trop souvent l’ignorance qui règne. Celles-ci se retranchent alors derrière l’argument selon lequel puisque le code source est censé être privé, peu importe qu’il contienne des données sensibles. Malheureusement, l’histoire récente nous montre que ce n’est pas toujours le cas.

Ainsi, ne serait-ce que l’année dernière, on a découvert que les dépôts git de Twitch comportaient une erreur de configuration qui les rendait publiquement accessibles (d’une manière similaire à celle découverte par l’étude de CyberNews). Cela a conduit à l’exposition de l’ensemble du code source de la plateforme Twitch… y compris les projets secrets en cours de développement.

Dans ce cas particulier, tout le code source appartenant à Twitch a été visible sur le forum 4chan, exposant 6 000 dépôts Git internes et trois millions de documents, pour un total de 200 Go décompressés.

Cette fuite comprenait le code source de divers produits, projets secrets, filiales, outils internes et dépôts d’employés de Twitch. En outre, des informations provenant de bases de données, notamment les revenus des streamers, ont été exposées publiquement.

Et même les gouvernements ne sont pas à l’abri face à ce problème. Le gouvernement indien a ainsi connu une brèche massive à travers plusieurs centaines de serveurs git exposés. D’énormes quantités de fichiers sensibles ont été exposées, y compris des certificats de sécurité et même des rapports de police.

Enfin, même si le dépôt git est protégé, il est certes plus difficile, mais pas impossible, pour un acteur malveillant d’y avoir accès.

Ainsi, en 2021, l’attaque du service CodeCov a permis à des acteurs malveillants d’accéder à près de 20 000 dépôts git privés appartenant à ses clients, parmi lesquels HashiCorp, Twilio et Rapid7. Tous ces dépôts, bien sûr, n’avaient pas vocation à exposés publiquement.

En outre, de nombreuses autres entreprises ont, à l’image de Uber, vu leurs dépôts violés à cause d’un simple compte de développeur compromis.

Les dépôts git sont donc clairement des cibles d’intérêt pour les cybercriminels. C’est une évidence car il est facile d’observer des scans réguliers sur Internet, conduits par des robots malveillants à la recherche de dossiers « .git » exposés par erreur. Après tout, c’est facile, relativement anonyme et ça peut rapporter gros !

Il revient donc aux entreprises de mieux protéger leurs dépôts et de s’assurer que des données sensibles, telles des informations de connexion, n’y soient pas stockées. Car les attaquants, eux, ne s’arrêteront pas de les chercher, et une fois découvertes, ne vont pas se priver d’en abuser !


Auteur
En savoir plus 
Mackenzie Jackson est Developer Evangelist chez GitGuardian
En savoir plus 

Livres blancs A la Une