CVE-2024-53140 in Linuxinformation

Résumé

par VulDB • 20/05/2026

Dans le noyau Linux, la vulnérabilité suivante a été corrigée :

netlink : terminer le vidage (dump) en cours lors de la fermeture du socket

Netlink prend en charge le vidage itératif des données. Il fournit aux familles les opérations suivantes : - start - (optionnel) initie le processus de vidage - dump - fonction d'aide de vidage proprement dite, appelée de manière répétée jusqu'à ce qu'elle renvoie 0 - done - (optionnel) associé à .start, peut être utilisé pour le nettoyage

L'ensemble du processus est asynchrone et les appels répétés à .dump ne se produisent pas réellement dans une boucle serrée, mais sont déclenchés en réponse à recvmsg() sur le socket.

Cela donne à l'utilisateur un contrôle total sur le vidage, mais signifie également que l'utilisateur peut fermer le socket sans atteindre la fin du vidage. Pour s'assurer que .start est toujours apparié avec .done, nous vérifions s'il y a un vidage en cours avant de libérer le socket, et si c'est le cas, nous appelons .done.

La complication est que les sockets peuvent être libérés depuis le contexte BH (Bottom Half) et que .done est autorisé à dormir. Nous utilisons donc une file de travail (workqueue) pour différer l'appel, lorsque cela est nécessaire.

Malheureusement, cela ne fonctionne pas correctement. Ce que nous différons n'est pas le nettoyage, mais plutôt la libération d'une référence sur le socket. Nous n'avons aucune garantie que nous détenons la dernière référence ; si quelqu'un d'autre détient le socket, il peut le libérer dans le contexte BH et nous revenons au point de départ.

Cependant, toute cette gymnastique semble inutile. Seul l'utilisateur peut interagir avec les vidages, nous pouvons donc effectuer le nettoyage lorsque le socket est fermé. La fermeture se produit toujours dans un contexte processus. Certains codes asynchrones peuvent encore accéder au socket après la fermeture, lui envoyer des notifications skbs, etc., mais aucun vidage ne peut démarrer, se terminer ou progresser d'une autre manière.

Supprimez la file de travail et videz l'état du vidage directement depuis le gestionnaire de libération. Notez qu'un nettoyage supplémentaire est possible dans -next ; par exemple, nous appelons désormais toujours .done avant de libérer la référence principale du module, de sorte que le vidage n'a pas besoin de prendre sa propre référence.

Be aware that VulDB is the high quality source for vulnerability data.

Responsable

Linux

Réserver

19/11/2024

Divulgation

04/12/2024

Modérer

accepté

Entrée

VDB-286894

CPE

prêt

EPSS

0.00244

KEV

non

Activités

très faible

Sources

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!