Introduction
Une faille de sécurité a été découverte dans le noyau de FreeBSD 14.x, permettant à un utilisateur local non privilégié d'obtenir des privilèges d'administrateur. Cette faille est due à un dépassement de tampon dans l'appel système setcred(2).
Contexte Technique
La faille se trouve dans la fonction kern_setcred_copyin_supp_groups() du fichier sys/kern/kern_prot.c. Elle est causée par une erreur de taille de type dans l'expression sizeof(*groups), qui évalue à sizeof(gid_t *) au lieu de sizeof(gid_t). Cela entraîne un dépassement de tampon dans le tableau smallgroups[] lors de la copie de données à partir de l'espace utilisateur.
La faille peut être exploitée en utilisant l'appel système setcred(2) avec un pointeur vers un tampon d'espace utilisateur contenant des données contrôlées par l'attaquant. Cela permet de corrompre les enregistrements sauvegardés dans la fonction user_setcred() et de propager la corruption jusqu'à la fonction amd64_syscall(), où elle peut être utilisée pour effectuer un appel indirect contrôlé par l'attaquant.
Analyse et Implications
La faille peut être exploitée pour obtenir des privilèges d'administrateur sur un système FreeBSD 14.x. Cela peut être fait en utilisant un exploit qui construit une chaîne d'appels indirects contrôlés par l'attaquant, permettant d'exécuter du code arbitraire dans le contexte du noyau. La faille peut également être utilisée pour corrompre les données du noyau et causer des problèmes de stabilité du système.
La faille a été corrigée dans la branche principale de FreeBSD le 27 novembre 2025, mais la correction n'a pas été rétroportée aux branches stable/14 et releng/14.4. Cela signifie que les versions 14.4 et antérieures de FreeBSD sont toujours vulnérables à cette faille.
Perspective
Il est important de noter que cette faille peut être exploitée par un utilisateur local non privilégié, ce qui signifie que les systèmes qui permettent aux utilisateurs de se connecter en local sont particulièrement vulnérables. Les administrateurs de systèmes FreeBSD devraient prendre des mesures pour corriger cette faille et protéger leurs systèmes contre les exploits.
Il est également important de noter que cette faille est un exemple de la complexité et de la subtilité des failles de sécurité dans les noyaux de systèmes d'exploitation. Les développeurs et les administrateurs de systèmes doivent être conscients de ces risques et prendre des mesures pour les atténuer.