Brevet FR2955405A1 — publié le 20110722

PROCEDE ET SYSTEME DE PREVENTION D'EMPOISONNEMENT DES CACHES DNS La présente invention se rapporte aux techniques de sécurisation des systèmes de noms de domaine. On désigne, ci-après, par « système de noms de domaine » ou « serveur DNS (pour Domain Name System en anglais) » tout système permettant d'établir une correspondance entre un nom de domaine (ou un nom de hôte) et une adresse IP, ou plus généralement, de trouver une information à partir d'un nom de domaine ou d'une adresse IP. 10 Par ailleurs, on entend, ici, par « requête DNS» un message requérant la résolution d'un nom de domaine ou d'une adresse IP. La réponse à une telle requête DNS est désignée, ci-après, par « réponse DNS ». Une réponse DNS peut, notamment, comprendre un nom de domaine, une adresse IP, un message d'erreur ou un code d'erreur. Il est à noter que la 15 résolution d'une requête DNS concerne toute application utilisant le protocole DNS via un réseau informatique telle que, par exemple, la navigation Web, la messagerie électronique, ou la connexion VPN. Du fait du grand nombre des noms de domaines (ou équivalemment, d'adresses IP), un serveur DNS ne peut comprendre, en réalité, qu'un 20 ensemble restreint d'informations. Il ne peut, par conséquent, résoudre tous les noms de domaine. Pour cela, on distingue généralement un système distribué de serveurs DNS dans lequel chaque serveur DNS, lorsqu'il reçoit une requête DNS à laquelle il n'a pas de réponse, relaye cette requête à un ou plusieurs autres serveurs DNS afin de lui 25 fournir en retour une réponse (méthode récursive); ou désigne un autre serveur DNS qui sera, par la suite, sollicité pour répondre à cette requête DNS (méthode itérative). Afin d'optimiser le temps de réponse aux requêtes DNS ultérieures ainsi que d'éviter la surcharge d'un serveur DNS particulier du système distribué, 30 la plupart des serveurs DNS font aussi office de cache DNS. Autrement dit, un serveur DNS garde en mémoire, pendant un TTL (Time To live) prédéfini A001_B109_FR/805642/TQD par l'administrateur du serveur DNS, la réponse obtenue à une requête DNS afin de ne pas ré-effectuer à nouveau ce procédé ultérieurement. Cependant, ce cache DNS est vulnérable à une attaque communément connue sous le nom d'empoisonnement de cache DNS (ou DNS cache poisoning, en anglais) (« DNS 2008 and the new (old) nature of critical infrastructure », Dan Kaminsky, Mexico 2009). Cette attaque vise à faire correspondre un nom de domaine valide (réel) d'une machine publique (www.google.com par exemple) à une information incorrecte (une adresse IP invalide ou une fausse réponse DNS par exemple) qui sera mémorisée dans le cache DNS. Une fois qu'une fausse réponse DNS à une requête DNS, concernant un certain domaine, est ainsi mémorisée dans le cache DNS, elle sera donc automatiquement la réponse, pendant TTL, aux requêtes DNS ultérieures concernant ce même domaine. Tous les utilisateurs de ce cache DNS sont, par conséquent, vulnérables. En particulier, l'empoisonnement d'un cache DNS permet de rediriger un utilisateur vers un site dont le contenu peut avoir pour conséquence des applications malveillantes (la propagation de virus, le hameçonnage en récupérant des informations personnelles, la propagande en renvoyant un site vers un autre site concurrent ou vers un site inexistant par exemple). Un objet de la présente invention est de remédier aux inconvénients précités. Un autre objet de la présente invention est d'éviter l'empoisonnement d'un cache DNS appartenant à un réseau informatique pourvu d'une pluralité de 25 caches DNS. Un autre objet de la présente invention est d'apporter, à un système distribué de caches DNS, une méthode de prévention d'une attaque d'empoisonnement des caches DNS avec le minimum de modification dans ce système. A001_B109_FR/805642/TQD Un autre objet de la présente invention est de proposer un procédé et un système de prévention des attaques d'empoisonnement des caches DNS compatibles avec le protocole DNS utilisé par les caches DNS. Un autre objet de la présente invention est de proposer un système autonome de prévention des attaques d'empoisonnement des caches DNS. Un autre objet de la présente invention est d'améliorer la consistance de la résolution DNS dans le réseau d'un Fournisseur d'Accès à Internet. Un autre objet de la présente invention est de proposer une méthode de prévention des attaques d'empoisonnement des caches DNS compatible 10 avec la majorité des réseaux des Fournisseur d'Accès à Internet (FAI). Un autre objet de la présente invention est de proposer une contre-mesure à une attaque d'empoisonnement des caches DNS dans un réseau informatique. Un autre objet de la présente invention est d'améliorer la sécurité 15 informatique rendue aux utilisateurs connectés à un réseau d'un Fournisseur d'Accès à Internet. À cet effet, l'invention propose, suivant un premier aspect, un procédé de prévention d'empoisonnement d'au moins un cache DNS dans un réseau informatique incluant une pluralité de caches DNS, ce procédé comprenant 20 une étape de comparaison d'au moins deux réponses DNS, retournées par deux caches DNS différents, à une requête DNS. L'invention se rapporte, selon un deuxième aspect, à un système de prévention d'empoisonnement d'au moins un cache DNS dans un réseau informatique incluant une pluralité de cache DNS, ce système comprenant 25 un analyseur d'au moins deux réponses DNS, retournées par deux caches DNS différents, à une requête DNS. Avantageusement, ce système comprend en outre un analyseur de requêtes DNS pourvu d'une base de données d'informations sur les requêtes DNS permettant d'identifier le service auquel est associée une requête DNS. A001_B109_FR/805642/TQD 30 D'autres caractéristiques et avantages de l'invention apparaîtront plus clairement et de manière concrète à la lecture de la description ci-après de modes de réalisation préférés, laquelle est faite en référence à la figure 1 qui illustre graphiquement les interactions entre les modules d'un mode de réalisation. Un réseau B d'un FAI comprend généralement une pluralité de caches DNS 5_1, 5_2, ..., 5_n (n>1) chargés de répondre aux requêtes DNS émises depuis au moins un résolveur DNS 1 appartenant à client A connecté à ce réseau B. Un résolveur DNS 1 est, généralement, un programme client 10 permettant de formuler des requêtes DNS en destination du réseau B et d'interpréter les réponses DNS qui lui sont retournées. En cas d'incapacité de répondre à une requête DNS sur la base des informations disponibles au niveau des caches DNS 5_1, 5_2, ..., 5_n, la réponse DNS est sollicitée auprès d'un serveur DNS racine 9 appartenant à 15 un opérateur C de serveurs de noms. Une réponse DNS est généralement communiquée à un répondeur DNS 10, du réseau B, chargé de relayer cette réponse au résolveur DNS 1, source de la requête DNS. Un système de gestion 3 des caches DNS permet le contrôle simultané ou 20 individuel des caches DNS 5_1, 5_2, ..., 5_n. Le système de gestion 3 permet, par exemple, de modifier le TTL au niveau de chaque cache DNS ou activer/désactiver un cache DNS. La prévention d'une attaque d'empoisonnement des caches DNS 5_1, 5_2, 5_n est assurée à l'aide de modules fonctionnels qui peuvent être 25 adaptés à tout réseau informatique B comprenant une pluralité de caches DNS, notamment à celui d'un Fournisseur d'Accès à Internet (FAI). En particulier, ces modules comprennent : un analyseur de requête DNS 2 permettant de décider sur la manière de traitement d'une requête DNS transmise depuis un résolveur DNS 30 1 , un diffuseur 6 de requête DNS sur une pluralité de caches DNS; A001_B109_FR/805642/TQD un comparateur 7 de réponses DNS obtenues depuis une pluralité de caches DNS un analyseur de réponses DNS 8 obtenues depuis une pluralité de caches DNS; et une pluralité de bases données informatives extensibles assistant le système de prévention des attaques d'empoisonnement des caches DNS 5_1, ..., 5_n. Dès la réception, par l'analyseur de requêtes DNS 2, d'une requête DNS émise depuis un résolveur DNS 1 (lien 12 sur la figure 1), l'analyseur de requêtes DNS 2 permet de décider sur le traitement à effectuer pour résoudre cette requête DNS. La décision est prise en fonction d'informations récupérées depuis: une base de données 4 d'informations sur les requêtes DNS telles que le service (navigation, messagerie, streaming, e-commerce, e- Learning par exemple) et/ou le protocole (http, https, pop3, ftp, smtp par exemple) auxquels sont associées les requêtes DNS ; une base de données 11 de réponses DNS invalides ; et le système de gestion 3 des caches DNS 5_1, 5_2, ... , 5_n qui peut être configuré par l'administrateur du réseau B. La base de données 4 d'informations sur les requêtes DNS utilise le contenu d'une requête DNS (notamment, le nom de domaine : ebay.com, google.com par exemple, et le protocole de transport: http, https, smtp par exemple) afin d'identifier le service auquel est associée cette requête DNS. A titre d'exemple, si une requête DNS comprend o le nom de domaine « ebay.com », alors la base de données 4 d'informations permet d'identifier ce nom de domaine et de l'associer à un service de e-commerce ; o le nom de domaine « home.americanexpress.com », alors la base de données 4 d'informations identifie ce nom de domaine et l'associe à un service de e-banking; o le protocole smtp, alors la base de données 4 d'informations permet d'associer cette requête à une application de messagerie électronique. A001_B109_FR/805642/TQD Le contenu de la base de données 4 d'informations peut être précédemment établi manuellement et/ou automatiquement enrichi (apprentissage automatique) en fonction des informations contenues dans les requêtes DNS reçues. La base de données 4 d'informations permet ainsi de distinguer les requêtes DNS supposées critiques selon l'administrateur du réseau B (un service e-commerce/e-banking ou une messagerie électronique par exemple). Dans un mode de réalisation, l'analyseur de requêtes DNS 2 permet d'étiqueter chaque requête DNS par un niveau d'importance (« critique », « important », « moyen », ou choisi entre 1 et 10 par exemple) en fonction du service identifié par la base de données 4 d'informations. Il est à noter aussi que le choix du traitement à effectuer pour la résolution d'une requête DNS peut être programmé depuis le système de gestion 3 des caches DNS en fonction, par exemple, du temps : heures de pointe ou non ; de la disponibilité des caches DNS : entretien, saturation ; de la source des requêtes DNS : clients avec différents types d'abonnement ; du service auquel est associée une requête DNS : e-commerce, e- banking, messagerie, VPN par exemple. Dans un mode de réalisation, on distingue trois traitements possibles en vue de résoudre une requête DNS : la requête DNS est transmise à un seul cache DNS (par exemple, le cache DNS 5_1 tel qu'il est indiqué sur la figure 1 : lien 25) ; la requête DNS est transmise au diffuseur 6 de requête DNS (lien 26 sur la figure 1); ou la requête DNS est transmise directement au serveur DNS racine 9 (lien 29 sur la figure 1). Il est à noter qu'une réponse DNS peut être obtenue depuis le réseau B, - d'une manière récursive : à la réception d'une requête DNS, un serveur DNS interroge son cache DNS local 5_j (1 A001_B109_FR/805642/TQD l'analyseur de réponses DNS 8 permet, à son tour, d'étudier ces réponses DNS et de transmettre, par la suite, une seule réponse DNS au répondeur DNS 10 (lien 81 sur la figure 1). II est à noter que la diffusion, par le diffuseur 6, d'une requête DNS à une liste de caches DNS, est faite selon des informations récupérées depuis la base de données 61. La base de données 61 comprend des informations concernant les caches DNS 5_1, 5_2, ..., 5_n du réseau B, telles que, par exemple, le nombre, la topologie, la localisation géographique, l'adresse IP, la taille du contenu et le nombre d'utilisateurs connectés aux caches DNS 5_1, ..., 5_n. Avantageusement, en fonction des données disponibles dans la base de données 61, le diffuseur 6 permet de relayer la requête DNS uniquement aux caches DNS estimés pertinents. En effet, dans un mode de réalisation, la liste des caches DNS auxquels une requête DNS sera relayée par le diffuseur 6, est choisie en fonction : des informations récupérées depuis la base de données 61 telle que la localisation des serveurs DNS. Par exemple, en supposant qu'il y a moins de risque d'empoisonnement, par une même donnée invalide, de deux caches DNS spatialement distants, alors : plus les serveurs cache DNS sont distants, plus il est probable qu'une réponse DNS retournée par le cache DNS local, identique (déterminé par le comparateur 7) à la réponse DNS retournée par un cache DNS distant, soit valide (correcte). Ceci dépend, notamment, de la topologie du réseau informatique B; et/ou des informations fournies par l'analyseur de requêtes DNS 2 : par exemple, si une requête DNS est marquée « critique » par l'analyseur DNS 2, alors, de préférence, un plus grand nombre de caches DNS sont interrogés. Autrement dit, le nombre des caches DNS à interroger est, de préférence, fonction du service auquel est associée la requête DNS. Cela permet également d'optimiser, au regard des performances, le processus de vérification des réponses DNS. Le comparateur 7 des réponses DNS permet de centraliser, ensuite comparer toutes les réponses DNS obtenues depuis la liste des caches DNS interrogés (c.à.d. désignées par le diffuseur 6 de requêtes DNS). A001_B109_FR/805642/TQD Si toutes les réponses DNS sont identiques, alors cette réponse DNS sera directement communiquée au répondeur DNS 10 (lien 71 sur la figure 1), qui, à son tour, la transfère au résolveur DNS 1 ou directement communiquée au résolveur DNS 1 (sans passer par le DNS 10). Il est à noter que certains domaines possèdent plus qu'une adresse IP (ou inversement, c.à.d. une adresse IP qui correspond à plus qu'un nom de domaine). Dans ce cas, ayant accès à des préfixes IP stockés dans une base de données 70 (déjà alloués à des entreprises: ebayTM, MicrosoftTM HSBCTM, YoutubeTM par exemple), le comparateur 7 est apte à comparer les adresses IP des sous-réseaux pour distinguer des noms de domaines identiques. Si une réponse DNS comprend une adresse IP non identifiée dans la base de données 70, elle peut être donc une éventuelle réponse DNS invalide. II est aussi possible d'utiliser une résolution DNS inverse afin de confronter deux réponses DNS retournées par deux caches DNS différents : requérir, à un cache DNS (5_1 par exemple), la résolution inverse d'un nom de domaine associé à une adresse IP retournée par un autre cache DNS (5_2 par exemple). Une différence entre les deux réponses DNS prouve l'empoisonnement d'au moins un des deux caches DNS. Si les réponses DNS sont différentes, alors elles sont transmises à l'analyseur de réponses DNS 8. L'analyseur de réponses DNS 8 permet de calculer les proportions des réponses DNS ; classifier les réponses DNS selon leurs proportions ; et d'agir en conséquence : o retenir une réponse DNS qui sera transmise au répondeur DNS 10 (lien 81 sur la figure 1) ou directement au résolveur 1 et confirmée à au moins les caches DNS interrogés (lien 85 de la figure 1); ou o dans le cas où un problème est détecté, déclencher une action telles que, par exemples: notifier le résolveur 1 d'une attaque d'empoisonnement de cache DNS, envoyer une erreur au résolveur 1, ne rien transmettre au résolveur 1, déclencher une alerte interne adressée à l'administrateur du réseau B en y A001_B109_FR/805642/TQD indiquant qu'il y a un risque potentiel d'empoisonnement de cache DNS. Avantageusement, l'analyseur de réponses DNS 8 peut être paramétré/configuré par un administrateur du réseau B (proportions seuils, actions à déclencher en cas de détection d'un problème d'empoisonnement de caches DNS par exemple). A titre d'exemple illustratif, dans le cas de cinq réponses DNS dont quatre sont identiques, l'analyseur de. réponses DNS 8 déduit donc la présence d'une réponse dominante qui sera transmise au répondeur DNS 10 ou directement au résolveur 1. En cas d'incohérence entre les réponses DNS retournées par les caches DNS interrogés - tel que le cas, par exemple, parmi cinq réponses DNS, uniquement trois réponses DNS sont identiques et les deux autres sont différentes - alors l'analyseur de réponses DNS 8 ne peut conclure sur une réponse DNS valide. Dans ce cas, les actions suivantes peuvent être entreprises : informer le résolveur 1 d'un éventuel problème de sécurité. Cette information peut être incorporée dans le champ « TXT » d'une réponse DNS qui comprend des informations descriptives du 20 domaine ; enregistrer les réponses DNS invalides (ceux de faible proportions par exemple) dans la base de données 11 des réponses DNS invalides ; informer l'administrateur du réseau B d'une éventuelle attaque 25 d'empoisonnement des caches DNS. Dans un mode de réalisation, la réponse DNS ayant la proportion la plus élevée parmi l'ensemble des réponses DNS retournées par les caches DNS est considérée la réponse DNS à la requête DNS. Si une réponse DNS invalide est confirmée, elle est ajoutée à la base de 30 données 11 de réponses DNS invalides (lien 82 sur la figure 1). Ceci permettra de prévenir les caches DNS lors de la résolution des requêtes DNS ultérieures. A001_B109_FR/805642/TQD Un protocole de communication peut être défini, selon la RFC 5507 de l'IETF, pour le transport d'une notification d'erreur depuis l'analyseur de réponses DNS 8 au répondeur DNS 10 (ou équivalemment, au résolveur DNS 1). En cas de déduction d'un problème d'empoisonnement d'un ou plusieurs caches DNS à partir des proportions des réponses DNS, une commande de réduction vers 0 des TTL des caches DNS concernés peut être lancée/programmée (par exemple, réduire le TTL des caches DNS ayant retourné une réponse DNS de faible proportion parmi l'ensemble des réponses DNS). Cette commande peut être immédiate : elle consiste à positionner le TTL à 0 immédiatement. En variante, cette commande peut être de type arithmétique : elle peut consister à ordonner une réduction constante du TTL par décrément prédéterminé (par exemple 1 ou 2 secondes). En variante, la commande peut être de type géométrique, et peut consister par exemple à ordonner une division par deux du TTL des caches DNS concernés. Cette commande vise à forcer les caches DNS à renouveler leurs caches. Par exemple, une entrée d'un cache DNS avec un TTL de 3600 secondes peut être positionné à 0 secondes et ainsi devenir invalide. Des mesures alternatives en cas de déduction d'un problème d'empoisonnement d'un ou plusieurs caches DNS à partir des proportions des réponses DNS, sont par exemple l'expiration d'une zone DNS, ou la configuration d'une entrée DNS persistante dans les caches DNS concernés par le problème. Cela permet d'assurer que les caches DNS incriminés retournent une valeur valide s'ils sont interrogés ultérieurement. Cette mesure est temporaire et doit être supprimée ultérieurement pour permettre la constitution dynamique des bases de données des caches DNS. Dans un mode de réalisation, le comparateur 7 des réponses DNS et l'analyseur de réponses DNS 8 sont combinés en un seul module fonctionnel. Avantageusement, la réponse DNS ainsi obtenue est consolidée via une pluralité de caches DNS. A001_B109_FR/805642/TQD Avantageusement, le procédé qui vient d'être décrit permet de prévenir une attaque d'empoisonnement de caches DNS grâce à une utilisation intelligente des serveurs caches DNS déjà existants dans un réseau d'un FAI. Dans un autre mode de réalisation, le diffuseur 6 de requête DNS relaye une requête DNS à au moins un cache DNS (cache DNS 5_1 par exemple) et ; à au moins un serveur DNS racine 9 pour comparer, par la suite, les réponses DNS qu'ils retournent. Ceci 10 permet d'avoir une entrée de plus au comparateur 7 des réponses DNS. Dans un autre mode de réalisation permettant d'éviter l'empoisonnement des caches DNS, on modifie la manière de vérifier la validité du contenu des caches DNS. Autrement dit, au lieu d'échanger des informations avec le protocole DNS, un autre protocole de vérification de la validité du 15 contenu des caches DNS est développé. Avantageusement, les modes de réalisation qui viennent d'être décrits mettent à profit le système distribué de caches DNS qui figure déjà dans la plupart des réseaux des FAIs. Il est à noter que les modes de réalisation décrits ci-dessus sont 20 indépendants du système d'exploitation utilisé par le client A connecté au réseau B. Dans un autre mode de réalisation, le module DNS 10 est optionnel et les réponses DNS sont ainsi directement transmises au résolveur DNS 1. Dans un autre mode de réalisation, les passerelles résidentielles des FAIs, 25 installées chez leurs clients, constituent des caches DNS. Ces passerelles résidentielles connectées au réseau de l'opérateur peuvent ainsi combiner les modules 2, 6, 5_i et optionnellement 7, 8, 10 et optionnellement les bases de données associées à ces modules. A001_B109_FR/805642/TQD REVENDICATIONS1. Procédé de prévention d'empoisonnement d'au moins .un cache DNS (5_i) dans un réseau informatique (B) incluant une pluralité de caches DNS (5_1, 5_i, 5_n), ce procédé comprenant une étape de comparaison d'au moins deux réponses DNS, retournées par deux caches DNS différents, à une requête DNS. 2. Procédé selon la revendication 1, caractérisé en ce qu'il comprend en outre une étape d'analyse de la requête DNS avant l'interrogation des caches DNS. 3. Procédé selon la revendication 2, caractérisé en ce que l'étape d'analyse d'une requête DNS comprend une étape d'identification du service auquel est associée une requête DNS. 4. Procédé selon la revendication 3, caractérisé en ce que le nombre de caches DNS interrogés est fonction du service auquel est associée la requête DNS. 5. Procédé selon la revendication 1, caractérisé en ce que l'étape de comparaison des réponses DNS comprend une étape de résolution inverse d'une requête DNS par au moins un cache DNS. 6. Procédé selon la revendication 1, caractérisé en ce que l'étape de comparaison des réponses DNS comprend une étape de calcul des proportions des réponses DNS. 7. Procédé selon la revendication 6, caractérisé en ce que la réponse DNS ayant la proportion la plus élevée parmi l'ensemble des réponses DNS retournées par les caches DNS est la réponse DNS à la requête DNS. 8. Procédé selon la revendication 1, caractérisé en ce qu'une incohérence entre les réponses DNS retournées par les caches DNS déclenche au moins une des actions suivantes : informer la source de la requête DNS d'un problème de sécurité; informer l'administrateur du réseau (B) informatique d'une éventuelle attaque d'empoisonnement d'au moins un cache DNS ; enregistrer au moins une de ces réponses DNS dans une base de données (11). A001_8109_FR/805642/TQD 9. Procédé selon la revendication 6, caractérisé en ce que le Time To Live d'un cache DNS retournant une réponse DNS de faible proportion parmi les réponses retournées par l'ensemble des caches DNS est réduit à 0. 10. Procédé selon l'une quelconque des revendications 1 à 9, caractérisé en ce que les réponses DNS comprennent une réponse DNS retournée par un serveur DNS racine (9). 11. Système de prévention d'empoisonnement d'au moins un cache DNS dans un réseau informatique incluant une pluralité de caches DNS, ce système comprenant un analyseur d'au moins deux réponses DNS, retournées par deux caches DNS différents, à une requête DNS. 12. Système selon la revendication 11 caractérisé en ce qu'il comprend en outre un analyseur de la requête DNS (2) pourvu d'une base de données (4) d'informations sur les requêtes DNS permettant d'identifier le service auquel est associée la requête DNS. 13. Système selon l'une quelconque des revendications 11 à 12, caractérisé en ce que les réponses DNS comprennent une réponse DNS retournée par un serveur DNS racine (9). A001_B109_FR/805642/TQD