Plusieurs vulnérabilités de corruption de mémoire ont été découvertes par Microsoft dans la bibliothèque ncurses. Celle-ci fournit un environnement de programmation pour écrire des interfaces utilisateur basées sur le texte (Text-based User Interfaces, TUI) ou des applications de console avec une apparence graphique. Désignées collectivement sous la référence CVE-2023-29491, ces vulnérabilités, affectées d'un score CVSS de 7,8, peuvent permettre à des attaquants d'obtenir un accès non autorisé aux systèmes et aux données en modifiant la mémoire d'un programme.

« Les correctifs pour ces vulnérabilités ont été déployés avec succès par les responsables de la bibliothèque ncurses, Thomas E. Dickey, dans le commit 20230408 », a déclaré Microsoft dans un billet de blog. « Nous avons également travaillé avec Apple pour résoudre les problèmes spécifiques à macOS liés à ces failles. Nous remercions à ce sujet Gergely (Kalman) pour sa contribution et l'engagement de la communauté ». Les brèches liées à la corruption de mémoire peuvent être exploitées dans divers types d'attaques, dont le déni de service distribué (DDoS), l'escalade des privilèges, l'exécution de code arbitraire et la fuite d'informations sensibles.

Attaques par empoisonnement des variables

« La bibliothèque ncurses utilise des bases de données de terminaux pour être indépendante du terminal (il n'est pas nécessaire de connaître à l'avance les capacités du terminal) », a indiqué Microsoft. Cela signifie que la bibliothèque a accès à un ensemble d'informations clés concernant le terminal utilisé. « Les bases de données de terminaux contiennent un ensemble de capacités qui déterminent en fin de compte les caractères de contrôle envoyés au terminal (ordonnant au terminal d'effectuer des interactions de base) et en décrivent diverses propriétés », a déclaré Microsoft. Pendant son enquête, la firme a découvert qu'au cours de l'initialisation, la bibliothèque ncurses recherchait plusieurs variables d'environnement, dont TERMINFO pour les bases de données de terminaux. TERMINFO peut être manipulé pour pointer vers un répertoire arbitraire afin d'exploiter potentiellement les failles de ncurses.

HOME, une autre variable d'environnement utilisée par ncurses, peut être également manipulée avec des techniques similaires. « Chaque système d'exploitation moderne contient un ensemble de variables d'environnement pouvant affecter le comportement des programmes », a déclaré Microsoft. Une technique bien connue des attaquants consiste à manipuler ces variables d'environnement pour amener les programmes à effectuer des actions qui profiteraient à leurs objectifs malveillants, c'est-à-dire à les « empoisonner ».

Les versions 6.4 et antérieures affectées

C’est suite à un audit de code et à un fuzzing que Microsoft a découvert les bug La firme a précisé que les contributions en privé de Gergely Kalman sur Twitter l’avaient aidé à faire avancer la recherche avec plusieurs cas d’usage. Microsoft fait également remarquer que bien que l'audit ait été réalisé sur la dernière version 6.4 de ncurses, des versions antérieures de la bibliothèque peuvent aussi comporter quelques-unes ou toutes ces vulnérabilités.

« Il est intéressant de noter que, si que la version de ncurses que nous avons vérifiée était la 6.4 (la plus récente au moment de la recherche), la version de ncurses sur macOS était la 5.7, mais elle avait reçu plusieurs correctifs de sécurité de la part d’Apple », a déclaré Microsoft. « Néanmoins, toutes nos conclusions sont vraies pour toutes les versions de ncurses, donc, y compris les versions Linux et macOS ». Microsoft recommande d’utiliser Microsoft Defender pour détecter et protéger les abus potentiels des bases de données TERMINFO sur Linux et macOS.