Introduction

Récemment, j'ai découvert que mon domaine personnel avait été abusé sur GitHub Pages. Un utilisateur inconnu avait créé un sous-domaine sur mon domaine sans mon autorisation, en exploitant une faille de sécurité liée à la configuration des enregistrements DNS et à la façon dont GitHub gère les noms de domaine personnalisés.

Contexte Technique

GitHub Pages est une fonctionnalité qui permet d'héberger des pages web statiques pour les comptes GitHub, les dépôts ou les projets. Pour configurer un nom de domaine personnalisé, il faut pointer les enregistrements DNS vers les serveurs de GitHub et configurer l'URL du site web dans le dépôt GitHub. Cependant, il semble que GitHub essaie de résoudre n'importe quel nom de domaine, tant qu'il y a un dépôt avec un fichier CNAME correspondant.

Cela signifie que si plusieurs utilisateurs ont des dépôts avec le même nom de domaine, GitHub ne vérifie pas qui est le propriétaire légitime du nom de domaine. Dans mon cas, quelqu'un a créé un sous-domaine sur mon domaine sans mon autorisation, en utilisant un dépôt privé qui ne peut pas être signalé.

Analyse et Implications

Ce problème n'est pas nouveau et il existe déjà des outils pour détecter les noms de domaine qui peuvent être piratés. L'absence de vérification de la propriété du nom de domaine par GitHub peut entraîner des abus de confiance et des problèmes de sécurité. Dans mon cas, j'ai eu de la chance de découvrir l'abus grâce à Google Search Console, mais d'autres personnes pourraient ne pas être aussi chanceuses.

Perspective

Il est important que GitHub améliore sa vérification de la propriété des noms de domaine et mette en place des mesures pour empêcher ces abus. Les utilisateurs doivent également être conscients de ces risques et prendre des mesures pour protéger leurs noms de domaine. Une solution possible serait d'ajouter un enregistrement TXT spécifique pour chaque utilisateur GitHub autorisé à utiliser un sous-domaine. GitHub pourrait également afficher un avertissement clair si un nom de domaine n'est pas vérifié ou si les enregistrements DNS sont configurés incorrectement.