Introduction
Le noyau Linux est un système d’exploitation puissant et populaire utilisé dans de nombreux appareils et serveurs à travers le monde. Cependant, même avec sa robustesse, des failles de sécurité peuvent être découvertes et corrigées pour maintenir la sécurité et la stabilité du système. Une telle vulnérabilité, connue sous le nom de CVE-2023-26545, a été récemment identifiée et résolue dans le fichier af_mpls.c du module net/mpls.
Explication de la faille de sécurité
La faille de sécurité CVE-2023-26545 était due à une mauvaise gestion de la libération de mémoire dans la fonction mpls_dev_sysctl_unregister
du fichier af_mpls.c. Plus précisément, le problème résidait dans le code qui suivait l’étiquette out
, où une instruction return -ENOBUFS;
était exécutée avant la libération de la mémoire.
Cette séquence d’instructions posait un problème critique. Lorsque le code atteignait l’étiquette out
, la mémoire allouée à la variable table
n’était pas libérée, provoquant ainsi une fuite de mémoire. Cette fuite pouvait épuiser les ressources disponibles du système et éventuellement conduire à des comportements inattendus.
La solution apportée
La vulnérabilité a été corrigée grâce à des modifications apportées au code de la fonction mpls_dev_sysctl_unregister
.
Voici les changements effectués :
if (!mdev->sysctl)
return;
table = mdev->sysctl->ctl_table_arg;
unregister_net_sysctl_table(mdev->sysctl);
kfree(table);
La modification la plus importante réside dans l’ajout d’une vérification de pointeur nul avant la libération de mémoire. La condition if (!mdev->sysctl)
vérifie si mdev->sysctl
est nul. Si tel est le cas, la fonction retourne immédiatement sans effectuer les opérations suivantes. Cette vérification prévient toute référence à un pointeur nul, ce qui pourrait provoquer des comportements indésirables.
Ensuite, la mémoire allouée à la variable table
est libérée en utilisant la fonction kfree
. Cela permet de restituer la mémoire utilisée, évitant ainsi toute fuite et garantissant une gestion appropriée des ressources.
Conclusion
La faille de sécurité CVE-2023-26545 dans le module net/mpls du noyau Linux a été rapidement corrigée grâce à des modifications apportées au code source. Les développeurs du noyau Linux ont identifié le problème de libération incorrecte de mémoire et ont introduit des vérifications supplémentaires pour éviter les références à des pointeurs nuls.