Vulnérabilité dans le micrologiciel AMI MegaRAC causée par l'expédition d'une ancienne version de lighttpd

Une vulnérabilité a été identifiée dans le firmware MegaRAC d'American Megatrends (AMI), utilisé dans les contrôleurs BMC (Baseboard Management Controller) utilisés par les fabricants de serveurs pour organiser une gestion autonome des équipements, permettant à un attaquant non authentifié de lire à distance le contenu de la mémoire du processus qui assure le fonctionnement de l’interface Web. La vulnérabilité apparaît dans le micrologiciel publié depuis 2019 et est causée par la livraison d'une ancienne version du serveur HTTP Lighttpd contenant une vulnérabilité non corrigée.

Dans la base de code Lighttpd, cette vulnérabilité a été corrigée en 2018 dans la version 1.4.51, mais le correctif a été apporté sans attribuer d'identifiant CVE et sans publier de rapport décrivant la nature de la vulnérabilité. La note de version mentionnait des correctifs de sécurité, mais se concentrait sur une vulnérabilité dans mod_userdir impliquant l'utilisation des caractères ".." et "." dans le nom d'utilisateur.

La liste des modifications mentionnait également un problème de traitement des en-têtes HTTP, mais ce correctif a été manqué par les développeurs du firmware et n'a pas été transféré au produit, car la note sur l'élimination potentielle de la vulnérabilité de classe use-after-free n'était présente que dans le texte du commit, et dans la liste générale aucune modification n'a été apportée pour indiquer que l'erreur entraîne un accès mémoire après libération.

La vulnérabilité permet de lire le contenu de la mémoire en dehors du tampon alloué. Le problème est dû à un bug dans le code de fusion d'en-tête HTTP utilisé lors de la spécification de plusieurs instances de l'en-tête HTTP "If-Modified-Since". Lors du traitement de la deuxième instance de l'en-tête, lighttpd a alloué un nouveau tampon pour contenir la valeur fusionnée et a libéré de la mémoire pour le tampon contenant la valeur du premier en-tête. Dans ce cas, le pointeur con->request.http_if_modified_since n'a pas changé et a continué à pointer vers la zone mémoire déjà libérée.

Ce pointeur étant utilisé dans des opérations comparant le contenu de l'en-tête If-Modified-Since, dont le résultat conduisait à la génération de différents codes retour, l'attaquant pouvait, par force brute, deviner le nouveau contenu de la mémoire qui était auparavant occupé par le premier tampon. Ce problème pourrait être utilisé en combinaison avec d'autres vulnérabilités, par exemple pour déterminer la disposition de la mémoire afin de contourner les mécanismes de sécurité tels que l'ASLR (Address Space Randomization).

La présence de la vulnérabilité a été confirmée sur les plates-formes de serveurs Lenovo et Intel, mais ces sociétés ne prévoient pas de publier de mises à jour du micrologiciel en raison de l'expiration du délai de support pour les produits utilisant ces micrologiciels et du faible niveau de gravité de la vulnérabilité. Le problème se manifeste dans le firmware des plates-formes Intel M70KLP et Lenovo HX3710, HX3710-F et HX2710-E (la vulnérabilité est présente, entre autres, dans les dernières versions du firmware Lenovo 2.88.58 et Intel 01.04.0030). De plus, il est signalé que la vulnérabilité dans lighttpd apparaît également dans le micrologiciel des équipements Supermicro et dans les serveurs utilisant les contrôleurs BMC de Duluth et AETN.

Source: opennet.ru

Ajouter un commentaire