Une vulnérabilité a été détectée dans le processus de fond slaacd, responsable dans OpenBSD de l'autoconfiguration des adresses IPv6 (IPv6 Stateless Address Autoconfiguration, RFC 4862), entraînant un débordement de mémoire suite à la réception d'une annonce de routeur IPv6 (RA, Router Advertisement) spécialement formatée.
Initialement, la fonctionnalité d'autoconfiguration des adresses IPv6 était implémentée au niveau du noyau, mais à partir de OpenBSD 6.2, elle a été déplacée dans un processus non privilégié distinct, slaacd. Ce processus est responsable de l'envoi de messages RS (Router Solicitation) et de l'analyse des réponses RA (Router Advertisement) contenant des informations sur le routeur et les paramètres de connexion réseau.
En février, une erreur entraînant un plantage en cas de spécification de 7 a été corrigée dans slaacd. serveurs dans la liste RDNSS (Recursive DNS Servers). Cette négligence a attiré l'attention de chercheurs indépendants, qui ont tenté d'examiner le code de slaacd pour d'autres erreurs se produisant lors de l'analyse des champs dans les messages RA. L'analyse a montré qu'il y avait un autre problème dans le code se manifestant lors du traitement du champ DNSSL (DNS Search List), incluant des listes. complets et des modèles d'hôtes pour DNS.
Chaque nom dans la liste DNSSL est encodé en utilisant un séparateur à caractère nul et des étiquettes intermédiaires à un octet définissant la taille des données qui suivent. La vulnérabilité est causée par le fait que dans le code d'analyse de la liste, le champ de taille est copié dans une variable de type entier signé (« len = data[pos] »). Ainsi, en cas de spécification d'une valeur avec le bit supérieur défini, cette valeur sera interprétée dans l'instruction conditionnelle comme un nombre négatif et la vérification de la taille maximale autorisée (« if (len > 63 || len + pos + 1 > datalen) {«) ne fonctionnera pas, ce qui conduira à l'appel de memcpy avec des paramètres, la taille des données copiées dépassant la taille du tampon.


Source : opennet.ru
