Des vulnĂ©rabilitĂ©s ont Ă©tĂ© dĂ©tectĂ©es dans les bibliothĂšques standard C uClibc et uClibc-ng, utilisĂ©es dans de nombreux appareils embarquĂ©s et portables, permettant d'injecter des donnĂ©es fictives dans le cache DNS. Cela peut ĂȘtre exploitĂ© pour substituer l'adresse IP d'un domaine arbitraire dans le cache et rediriger les requĂȘtes vers un serveur malveillant.
Le problÚme concerne divers firmwares Linux pour routeurs, points d'accÚs et appareils de l'Internet des objets, ainsi que des distributions Linux pour systÚmes embarqués, telles que OpenWRT et Embedded Gentoo. Il a été noté que la vulnérabilité se manifeste dans les appareils de nombreux fabricants (par exemple, uClibc est utilisé dans les firmwares Linksys, Netgear et Axis), mais comme la vulnérabilité dans uClibc et uClibc-ng reste non corrigée, les détails concernant les appareils et fabricants spécifiquement touchés ne sont pas encore divulgués.
La vulnĂ©rabilitĂ© est causĂ©e par l'utilisation dans le code des requĂȘtes DNS d'identifiants de transaction prĂ©visibles. L'identifiant de la requĂȘte DNS Ă©tait choisi en incrĂ©mentant simplement un compteur sans effectuer de randomisation supplĂ©mentaire des numĂ©ros de port, ce qui permettait d'empoisonner le cache DNS via un envoi anticipĂ© de paquets UDP contenant des rĂ©ponses fictives (la rĂ©ponse sera acceptĂ©e si elle arrive avant celle de la rĂ©ponse rĂ©elle et inclut un ID correct). de serveurs Contrairement Ă la mĂ©thode proposĂ©e en 2008 par Kaminsky, l'identifiant de transaction n'a mĂȘme pas besoin d'ĂȘtre devinĂ©, car il est Ă l'origine prĂ©visible (il commence par une valeur de 1, qui est incrĂ©mentĂ©e Ă chaque requĂȘte, au lieu d'ĂȘtre choisie alĂ©atoirement).

Dans la spĂ©cification pour se protĂ©ger contre la prĂ©diction de l'identifiant, il est recommandĂ© d'appliquer en plus une distribution alĂ©atoire des numĂ©ros de ports rĂ©seau sources Ă partir desquels les requĂȘtes DNS sont envoyĂ©es, ce qui compense la taille insuffisante de l'identifiant. Avec l'activation de la randomisation des ports pour gĂ©nĂ©rer une rĂ©ponse fictive, il est nĂ©cessaire de prĂ©dire non seulement l'identifiant de 16 bits, mais Ă©galement le numĂ©ro de port rĂ©seau. Dans uClibc et uClibc-ng, une telle randomisation n'Ă©tait pas explicitement activĂ©e (lors de l'appel de bind, un port UDP source alĂ©atoire n'Ă©tait pas spĂ©cifiĂ©) et son application dĂ©pendait des paramĂštres du systĂšme d'exploitation.
Lorsque la randomisation des ports est dĂ©sactivĂ©e, la dĂ©termination de l'identifiant de requĂȘte incrĂ©mentiel est considĂ©rĂ©e comme une tĂąche triviale. Cependant, mĂȘme en cas de randomisation, l'attaquant doit simplement deviner le port rĂ©seau dans la plage de 32768 Ă 60999, ce qui peut ĂȘtre rĂ©alisĂ© par l'envoi massif simultanĂ© de rĂ©ponses fictives sur diffĂ©rents ports rĂ©seau.

Le problĂšme a Ă©tĂ© confirmĂ© dans toutes les versions rĂ©centes de uClibc et uClibc-ng, y compris les versions les plus rĂ©centes uClibc 0.9.33.2 et uClibc-ng 1.0.40. En septembre 2021, des informations sur la vulnĂ©rabilitĂ© ont Ă©tĂ© envoyĂ©es Ă CERT/CC pour une prĂ©paration coordonnĂ©e des correctifs. En janvier 2022, les dĂ©tails sur le problĂšme ont Ă©tĂ© transmis Ă plus de 200 fabricants collaborant avec CERT/CC. En mars, une tentative a Ă©tĂ© faite pour contacter sĂ©parĂ©ment le projet uClibc-ng, mais il a rĂ©pondu qu'il n'Ă©tait pas en mesure de corriger la vulnĂ©rabilitĂ© par lui-mĂȘme et a recommandĂ© de divulguer publiquement les dĂ©tails du problĂšme, espĂ©rant recevoir de l'aide de la communautĂ© pour dĂ©velopper un correctif. Parmi les fabricants, NETGEAR a annoncĂ© la sortie d'une mise Ă jour corrigeant la vulnĂ©rabilitĂ©.
Source : opennet.ru
