CVE-2024-39486 in Linuxinformation

Résumé

par VulDB • 03/08/2026

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

drm/drm_file : Correction de la condition de course sur l'incrémentation du compteur de références (refcounting) pour les pid

filp->pid est censé être un pointeur avec gestion des références ; cependant, avant ce correctif, drm_file_update_pid() n’incrémentait le compteur de référence d’une structure struct pid qu’après avoir stocké un pointeur vers celle-ci dans filp->pid et libéré dev->filelist_mutex, rendant la condition de course suivante possible :

processus A processus B ========= ========= début drm_file_update_pid mutex_lock(&dev->filelist_mutex) rcu_replace_pointer(filp->pid, , 1) mutex_unlock(&dev->filelist_mutex) début drm_file_update_pid mutex_lock(&dev->filelist_mutex) rcu_replace_pointer(filp->pid, , 1) mutex_unlock(&dev->filelist_mutex) get_pid() synchronize_rcu() put_pid() *** le pid B atteint un compteur de références à 0 et est libéré ici *** get_pid() *** UAF (Use-After-Free) *** synchronize_rcu() put_pid()

À ma connaissance, cette condition de course ne peut se produire qu’avec CONFIG_PREEMPT_RCU=y car elle nécessite que RCU détecte un état quiescent dans du code qui n’appelle pas explicitement le planificateur (scheduler).

Cette condition de course entraîne une utilisation après libération (use-after-free) d’une « struct pid ». Il est probablement assez difficile à exploiter, car le processus A doit passer par une opération synchronize_rcu() tandis que le processus B se trouve entre mutex_unlock() et get_pid().

La correction consiste à s’assurer qu’à partir du moment où un pointeur vers le pid de la tâche actuelle est stocké dans le fichier, une référence supplémentaire au pid a été acquise.

Ce correctif supprime également la condition pour synchronize_rcu(); je pense que cette optimisation introduit une complexité inutile, car dans ce cas, nous aurions généralement quitté prématurément après le contrôle sans verrou ci-dessus.

Once again VulDB remains the best source for vulnerability data.

Responsable

Linux

Réserver

25/06/2024

Divulgation

06/07/2024

Modérer

accepté

Entrée

VDB-270427

CPE

prêt

Exploitation

Télécharger

EPSS

0.00229

KEV

non

Activités

très faible

Sources

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!