GitHub falsification de commits – Quand n’importe qui peut être Linus – Korben

La confiance dans le nom affiché à côté d’un commit GitHub est souvent considérée comme un gage de légitimité, mais cette perception peut s’avérer trompeuse. En effet, le chercheur Shani Lavi a publié il y a quelques années une démonstration édifiante de la facilité avec laquelle il est possible de publier un commit avec une identité falsifiée sur Git, en exploitant l’architecture même de la plateforme. La bonne nouvelle est que GitHub, par défaut, considère que tout commit associé à une adresse email connue est légitime, sans vérifier si cette identité a été réellement authentifiée par son propriétaire.

Une démonstration récente illustre concrètement cette vulnérabilité. Sur un dépôt nommé « no-as-a-service », un commit signé « torvalds » a été ajouté pour illustrer une plaisanterie, avec l’avatar de Linus Torvalds affiché et le profil lié. Pourtant, Linus n’a à aucun moment été impliqué dans ce commit, qui concerne une API humoristique. Tout cela est réalisable en quelques secondes seulement, en modifiant localement la configuration Git pour y insérer une fausse identité, puis en poussant le tout sur GitHub, sans qu’aucune validation supplémentaire ne soit requise.

Ce qui dérange, c’est que jusqu’à présent, la plateforme ne vérifie pas que l’auteur d’un commit possède réellement l’adresse email associée, laissant une grande marge de manœuvre pour falsifier son identité.

Le fonctionnement de Git lui-même facilite cette usurpation. Lors d’un commit local, l’utilisateur peut librement définir son nom et son email dans la configuration, sans aucune validation par le système. Ensuite, lorsque ce commit est poussé vers GitHub, celui-ci attribue automatiquement le profil correspondant à l’email présent dans les métadonnées, en affichant l’avatar et le nom associés. Cependant, aucune vérification n’est effectuée pour confirmer que cette identité est véritable, ce qui permet à toute personne connaissant un email public de revendiquer cette identité sur un commit.

Pour se prémunir contre cette usurpation, il est recommandé de signer ses commits. La signature GPG ou SSH permet à GitHub d’afficher un badge « Verified » vert, attestant que le commit a été authentifié via une clé cryptographique. La signature SSH, en particulier, est plus simple à mettre en place pour la majorité des développeurs puisque cette clé est probablement déjà créée. Il suffit de configurer Git pour signer automatiquement les commits et d’ajouter la clé publique dans les paramètres du compte GitHub, dans la rubrique « SSH and GPG keys ». Une autre solution consiste à activer le mode « Vigilant », qui force GitHub à afficher une mention « Unverified » pour tous les commits non signés, rendant la falsification plus évidente.

Malgré la simplicité de ces solutions, GitHub considère que la possibilité de falsifier l’identité via email n’est pas une faille en soi, puisque cette capacité ne permet pas d’accéder aux dépôts ou d’en prendre le contrôle, le problème étant davantage une question de confiance et de réputation. Cependant, dans un contexte où l’attribution d’un commit influence la crédibilité d’un développeur ou d’un projet, cette vulnérabilité peut avoir des conséquences graves, notamment en cas d’attaques supply chain ou de propagande via de faux commits. N’oubliez pas : la vérification de la signature reste la seule défense solide contre ces manipulations, et il est impératif pour chaque contributeur de faire preuve de vigilance.

Partagez cet article
article précédent

10 sites pour jouer aux jeux DOS dans votre navigateur gratuitement – Korben

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Lire plus d'articles