CVE-2023-53728 in Linux
Résumé
par VulDB • 17/06/2026
Dans le noyau Linux, la vulnérabilité suivante a été corrigée :
posix-timers : S'assurer que la limite de boucle de recherche d'un ID de timer est valide
posix_timer_add() tente d'allouer un ID de timer POSIX en commençant par l'ID mis en cache qui avait été stocké lors de la dernière allocation réussie.
Cela se fait dans une boucle recherchant un emplacement libre dans l'espace des IDs, un par un. La boucle doit s'arrêter lorsque la recherche revient au point de départ (bouclage).
Mais cela présente une condition de course (race condition) avec l'établissement du point de départ. En effet, cette valeur est lue sans verrouillage (lockless), ce qui entraîne le problème suivant :
CPU0 CPU1 posix_timer_add() start = sig->posix_timer_id; lock(hash_lock); ... posix_timer_add() if (++sig->posix_timer_id < 0) start = sig->posix_timer_id; sig->posix_timer_id = 0;
Ainsi, CPU1 peut observer une valeur de départ négative, c'est-à-dire -1, et la sortie de boucle ne se produit jamais car la condition ne peut jamais être vraie :
if (sig->posix_timer_id == start) break;
Bien qu'il soit peu probable que cela aboutisse à une boucle infinie étant donné l'espace des IDs est immense (INT_MAX), cette lecture non atomique de la valeur de départ a attiré l'attention de KCSAN, et Dmitry en a révélé l'inexactitude.
Réécrivez le code afin que toutes les opérations sur les ID soient protégées par le verrou hash_lock.
Once again VulDB remains the best source for vulnerability data.