Les vulnérabilités d'exécution de code à distance affectant les composants coeur de réseau des systèmes d'exploitation sont rares de nos jours. Mais lorsqu'elles se produisent, c'est toute l'industrie informatique qui se met en alerte car elles figurent parmi les plus dangereuses pouvant conduire à l'exploitation en masse des systèmes informatiques au niveau mondial. Mardi dernier, Microsoft a publié un correctif pour combler cette faille qui affecte le serveur DNS (Domain Name System) Windows et exhorté les organisations à déployer le correctif dès que possible.

Identifiée en tant que CVE-2020-1350, cette faille a été découverte par des chercheurs de Check Point Software Technologies qui l'ont surnommée SIGRed, un jeu de mot par rapport au nom de la fonction vulnérable qui gère les requêtes DNS SIG. Cette vulnérabilité critique a reçu le score de gravité CVSS maximum de 10 et selon Microsoft, elle est est mutable en ver. « Les vulnérabilités mutables en ver ont le potentiel de se propager via un malware entre ordinateurs compromis sans interaction utilisateur », a prévenu l'équipe sécurité de Microsoft dans un billet de blog. « Windows DNS Server est un composant coeur de réseau. Alors que cette vulnérabilité n'est pas actuellement connue pour être utilisée dans des attaques actives, il est essentiel que les clients appliquent les mises à jour Windows pour la résoudre aussi vite que possible ».

Un ciblage très large

Il est à signaler que cette faille ne touche pas le composant client Windows DNS utilisé pour interroger les serveurs DNS, mais le composant serveur qui répond aux requêtes DNS. Toutes les versions de Windows Server depuis 2008 sont ainsi concernées par cette faille, en tout cas celles qui sont configurées pour faire tourner ces systèmes en tant que serveurs DNS, ce qui est habituellement le cas avec un paramétrage par défaut des contrôleurs de domaines Windows, au plus près du composant coeur de réseau Windows. Un attaquant qui parvient à exploiter la vulnérabilité SIGRed peut alors exécuter du code arbitraire dans un contexte du compte LocalSystem, ce qui lui donne un contrôle total sur le système touché. Si ces systèmes sont des contrôleurs de domaine, c'est l'ensemble du réseau qui peut ensuite être mis à mal.

La faille SIGred provient d'une erreur dans la fonction qui analyse les réponses DNS pour les requêtes de type SIG, entraînant un débordement de tampon. Le protocole DNS est utilisé pour traduire les noms de domaine en adresses IP, ce qui est connu comme un enregistrement A. Cependant, le protocole supporte également d'autres types d'enregistrement, tels que MX qui définit le serveur désigné pour gérer les e-mails ou NS qui définit les serveurs DNS faisant autorité comme domaine. SIG est un type d'enregistrement utilisé pour fournir une signature associée au domaine pour certaines fonctionnalités. En plus de répondre aux requêtes des clients, les serveurs DNS agissent également en tant que clients eux-mêmes, car s'ils n'ont pas une réponse de mise en cache locale à une requête, ils requêtent des serveurs plus haut dans la chaîne d'autorité. Le DNS est un système hiérarchique avec 13 serveurs DNS racine au sommet desservant tout Internet. 

L'exploit de vulnérabilité détaillé par Check Point

Pour exploiter cette vulnérabilité, les chercheurs de Check Point avaient besoin d'un moyen pour forcer le serveur DNS ciblé pour transmettre une requête reçue d'un client à un serveur DNS qu'ils contrôlaient afin de répondre au serveur local avec un paquet mal formé qui exploiterait la vulnérabilité. Ils y sont parvenus en forçant d'abord le serveur cible à mettre en cache un enregistrement NS pour un domaine qu'ils contrôlaient, puis en envoyant une autre requête pour un sous-domaine de ce domaine. Cela a amené le serveur local à transmettre la requête de sous-domaine au serveur DNS spécifié dans l'enregistrement NS du domaine qui est considéré comme faisant autorité. Contrôlant ce serveur DNS faisant autorité, les chercheurs de Check Point ont pu alors répondre avec un exploit.

Faire fonctionner cet exploit a nécessité des efforts supplémentaires, car les chercheurs ont également dû trouver un moyen d'envoyer des réponses plus grandes que ce que le standard DNS permet pour normalement pour déclencher le débordement. Concernant les attaques depuis des réseaux locaux extérieurs, ils ont également eu besoin d'un moyen pour forcer un ordinateur local sur le même réseau, comme le serveur DNS ciblé pour lui envoyer des requêtes. Il s'est avéré que cela a pu être réalisé en incitant un utilisateur à visiter un site Web spécialement conçu dans Internet Explorer ou Microsoft Edge (version non-Chromium), les requêtes DNS ayant pu être « introduites en fraude » dans les données HTTP POST.

Une probabilité élevée d'exploitation

Une chaîne d'attaque complète pourrait suivre ce modèle suivant : l'attaquant accède à un système sur le réseau local ou incite un utilisateur du réseau local à visiter une page Web spécialement conçue avec IE ou Edge. Puis l'attaquant envoie une requête NS au serveur DNS local vers un domaine qu'il contrôle, soit directement depuis le réseau, soit via le navigateur de la victime, et le serveur DNS local met en cache l'enregistrement NS. Ensuite le pirate envoie une autre requête, cette fois pour un enregistrement SIG pour un sous-domaine sur le domaine de l'attaquant : le serveur DNS local interroge le serveur DNS faisant autorité spécifié dans l'enregistrement NS mis en cache. Le cybercriminel contrôle ainsi le serveur DNS faisant autorité pour le domaine, ce qui lui permet de renvoyer une réponse DNS malveillante qui exploite la vulnérabilité.

Les chercheurs de Check Point ont publié des détails techniques de l'ensemble du processus, mais avec des précisions sur le contournement de certaines protections de la mémoire Windows, ce qui est une étape nécessaire pour transformer le débordement en exécution de code. « Nous pensons que la probabilité d'exploitation de cette vulnérabilité soit élevée, car nous avons trouvé en interne toutes les primitives nécessaires pour exploiter ce bogue », ont déclaré les chercheurs dans leur billet de blog. « En raison de contraintes de temps, nous n'avons pas poursuivi l'exploitation du bogue (qui comprend le chaînage de toutes les primitives d'exploitation), mais nous pensons qu'un attaquant déterminé pourra l'exploiter. Une exploitation réussie de cette vulnérabilité a un impact grave, car vous pouvez souvent trouver des environnements de domaine Windows non corrigés, en particulier des contrôleurs de domaine. En outre, certains fournisseurs de services Internet peuvent même avoir configuré leurs serveurs DNS publics en tant que WinDNS. »

Une solution de contournement manuelle

Comme l'a indiqué Microsoft, il est plus que conseillé aux organisations d'installer son correctif de sécurité dès que possible. Si elles ne peuvent pas mettre à jour leurs systèmes immédiatement, une solution consistant à appliquer une solution de contournement de registre manuelle existe en entrant les instructions suivantes dans l'invit de commandes : 

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNS\Parameters
DWORD = TcpReceivePacketSize
Value = 0xFF00

Le service DNS doit être redémarré après cette modification du Registre pour que celle-ci soit prise en compte.