Sous-domaine détourné : quand un CNAME oublié sert un inconnu
Pourquoi un enregistrement DNS qui pointe vers un service cloud abandonné permet à un inconnu de publier sous votre domaine, comment le trouver et le supprimer.
Il y a trois ans, un développeur a créé docs.votredomaine.fr sur GitHub Pages. Le projet s’est arrêté, le dépôt a été supprimé, le développeur est parti. L’enregistrement DNS, lui, est resté. docs.votredomaine.fr est toujours un CNAME vers votresociete.github.io, et GitHub Pages y répond désormais « There isn’t a GitHub Pages site here ».
N’importe qui peut maintenant créer un dépôt, activer Pages, y ajouter docs.votredomaine.fr comme domaine personnalisé, et GitHub servira son contenu à votre adresse, avec un certificat valide. C’est une prise de contrôle de sous-domaine. Elle ne demande aucun mot de passe, aucune faille dans votre logiciel, aucun contact avec vos serveurs. Elle demande seulement un enregistrement DNS que personne n’a pensé à supprimer.
Pourquoi ça marche
Un enregistrement CNAME dit « pour ce nom, allez voir cet autre nom ». L’autre nom appartient à un fournisseur qui héberge les sites de nombreux clients sur une infrastructure partagée et qui choisit le contenu à servir d’après le nom d’hôte demandé par le navigateur. Quand le client qui avait réservé ce nom d’hôte s’en va, le fournisseur oublie l’association, mais votre enregistrement DNS continue d’y envoyer les visiteurs. Celui qui réserve ce nom d’hôte ensuite les reçoit.
Le même schéma existe avec des enregistrements A qui pointent vers une adresse IP qu’un fournisseur cloud a réattribuée depuis, avec des enregistrements NS qui délèguent un sous-domaine à des serveurs de noms qui n’existent plus, et avec des CNAME qui pointent vers des domaines dont l’enregistrement a expiré. Ce dernier cas est le pire : n’importe qui peut racheter le domaine expiré pour quelques euros et contrôler tous les enregistrements sous votre sous-domaine.
Ce qu’un attaquant en fait
Une page sur votre domaine hérite de votre réputation. Les usages classiques sont une page d’hameçonnage (« connectez-vous à votre compte » sur support.votredomaine.fr), une page de téléchargement de logiciels malveillants, et du spam pour les moteurs de recherche. Plus grave et moins visible : les cookies. Si votre site principal pose ses cookies sur .votredomaine.fr plutôt que sur www.votredomaine.fr, la page de l’attaquant les reçoit. Si votre politique de sécurité du contenu ou votre configuration CORS fait confiance à *.votredomaine.fr, la page de l’attaquant en profite aussi.
Comment on trouve ces enregistrements
Personne n’attaque un sous-domaine qu’il ne connaît pas : la première étape, pour l’attaquant comme pour le défenseur, est une liste. La meilleure source publique est Certificate Transparency : chaque certificat émis par une autorité publique depuis 2018 est inscrit dans des journaux où l’on ne peut qu’ajouter, et les noms d’hôte de ces certificats sont consultables. Si docs.votredomaine.fr a eu un jour un certificat HTTPS, il est dans les journaux pour toujours. Pour voir cette liste pour votre propre domaine, avec l’adresse et l’hébergeur derrière chaque nom, ouvrez la carte DNS et de surface gratuite.
Perimetry récupère dans les journaux chaque nom d’hôte de votre domaine, résout chacun d’eux et suit la chaîne de CNAME. Pour chaque destination, il se pose trois questions :
- La cible finale répond-elle encore ? Si un CNAME pointe vers un nom qui renvoie NXDOMAIN, l’enregistrement est orphelin.
- Le domaine de la cible finale est-il seulement enregistré ? Sinon, le sous-domaine peut être pris en contrôle en achetant un domaine.
- La cible appartient-elle à un fournisseur connu pour afficher une page « non réclamée » reconnaissable, et l’affiche-t-elle en ce moment ?
La troisième question s’appuie sur une liste d’empreintes, une par fournisseur : le texte que GitHub Pages affiche pour un nom non réclamé, celui de Heroku, Shopify, Zendesk, Azure, Fastly, Ghost, Netlify, Pantheon, Tumblr, Unbounce, Webflow, Wix et d’autres, 26 au total. Cette liste est publiée à part sous licence MIT pour que chacun puisse la vérifier ou la réutiliser.
Un enregistrement qui répond oui à la question 1 ou 2 est signalé avec une gravité élevée ; une empreinte reconnue aussi, avec le nom du fournisseur ; un CNAME vers un fournisseur dont l’état ne peut pas être confirmé est signalé en gravité moyenne, avec le conseil de vérifier.
Comment corriger un constat
Si le sous-domaine ne sert plus : supprimez l’enregistrement DNS. C’est toute la correction. Supprimer l’enregistrement est toujours sans risque quand rien n’y envoie de visiteurs ; au pire, un lien quelque part ne marche plus, et un lien cassé vaut mieux qu’une page contrôlée par un inconnu.
Si le sous-domaine sert encore : réclamez d’abord la ressource chez le fournisseur (créez le site Pages, l’application, la boutique), vérifiez qu’elle sert votre contenu, et seulement ensuite laissez l’enregistrement en place. Ne laissez pas l’enregistrement pointer vers une ressource non réclamée « en attendant la migration ».
Si le domaine de la cible n’est pas enregistré : supprimez l’enregistrement tout de suite, avant que quelqu’un d’autre ne le remarque. Décidez ensuite si le sous-domaine doit exister.
Si une délégation NS est orpheline : retirez les enregistrements NS du sous-domaine dans la zone parente. Une délégation vers des serveurs de noms morts rend toute la sous-arborescence indisponible aujourd’hui et réclamable demain.
Éviter la prochaine
- Traitez les enregistrements DNS comme une étape de l’arrêt d’un service. Quand un service est résilié, le ticket n’est pas fermé tant que ses enregistrements DNS n’ont pas disparu.
- Évitez les enregistrements génériques (
*.votredomaine.fr) si vous n’en avez pas besoin : ils font répondre tous les noms, y compris ceux que personne n’a créés, et cachent les enregistrements orphelins aux vérifications simples. - Limitez les cookies à l’hôte exact (
www.votredomaine.fr), pas au domaine parent. - Ne faites pas confiance à
*.votredomaine.frdans CORS ou dans la politique de sécurité du contenu, sauf si chaque sous-domaine est sous votre contrôle. - Vérifiez régulièrement. Un enregistrement correct aujourd’hui devient orphelin le jour où un abonnement expire. Le rapport hebdomadaire de Perimetry liste les nouveaux sous-domaines et les nouvelles prises de contrôle possibles dans sa partie « changements » : un service expiré apparaît dans la semaine.
À quoi ressemble le rapport
Prise de contrôle probable : docs.votredomaine.fr — élevée
docs.votredomaine.frest un CNAME versvotresociete.github.io, qui affiche la page « There isn’t a GitHub Pages site here » de GitHub Pages. N’importe qui avec un compte GitHub peut réclamer ce nom d’hôte. Supprimez l’enregistrement CNAME, ou créez le site Pages et ajoutez-lui ce domaine personnalisé.
Chaque constat nomme l’enregistrement, le fournisseur, la preuve, et l’action unique qui supprime le risque.