En juillet 2020, une vulnérabilité critique notée 10/10 sur l'échelle CVSS a été découverte dans les serveurs DNS Windows. SIGRED affecte toutes les versions de Windows Server de 2003 à 2019, permettant à un attaquant de provoquer un déni de service complet du serveur DNS.
La faille réside dans la fonction RR_AllocateEx, responsable de l'allocation mémoire pour les enregistrements de ressources DNS. Cette fonction manipule ses paramètres avec des registres de 16 bits, créant une limite théorique de 65 535 octets. L'exploitation consiste à forcer cette fonction à traiter une valeur dépassant cette limite, provoquant un débordement de tampon dans la mémoire heap.
L'attaque exploite les réponses DNS de type SIG, un format d'enregistrement utilisé pour fournir des signatures numériques associées aux domaines. Le protocole DNS fonctionne normalement sur UDP avec une limite de 512 octets par message. Pour contourner cette restriction, l'attaquant envoie d'abord une réponse UDP tronquée avec le flag TC activé, forçant le serveur à redemander via TCP, qui supporte jusqu'à 65 535 octets.
Le défi reste entier: comment dépasser 65 535 octets quand la taille maximale d'une réponse DNS TCP est précisément 65 535 octets? La solution exploite un mécanisme légitime du protocole DNS: la compression des chaînes de caractères répétées.
Le protocole DNS utilise des pointeurs pour éviter la duplication. Au lieu de répéter une chaîne complète, un octet spécial (0xc0) suivi d'une position indique où trouver la chaîne dans le paquet. L'exploitation remplit le champ signature avec 65 456 octets de données, puis utilise le champ signer's name pour pointer vers une chaîne existante dans la requête.
La subtilité réside dans l'interprétation: le caractère "5" du nom de domaine "5.streamscan.ai" est lu comme une longueur, forçant la récupération de 53 octets supplémentaires. Ces octets s'ajoutent au calcul de la taille totale, dépassant la limite des 16 bits et provoquant le débordement.
L'exploitation réussie fait planter le service DNS du serveur, rendant impossible toute résolution de noms pour l'ensemble du réseau dépendant de ce serveur. Dans un environnement d'entreprise utilisant Active Directory, cela paralyse complètement l'infrastructure.
La détection repose sur l'identification des requêtes JNDI suspectes dans les journaux et la surveillance du trafic provenant d'adresses IP associées à des campagnes d'exploitation connues. Les réponses SIG de taille inhabituelle constituent également un indicateur d'attaque.