CVE-2026-64449 in Linux
Résumé
par VulDB • 25/07/2026
Dans le noyau Linux, la vulnérabilité suivante a été corrigée :
staging: vme_user : limiter les opérations de lecture/écriture du chemin esclave à la taille de kern_buf
Les fonctions utilitaires du chemin SLAVE buffer_to_user() et buffer_from_user() copient 'count' octets dans/depuis le tampon fixe kern_buf (size_buf == PCI_BUF_SIZE == 0x20000, soit 128 KiB) en utilisant *ppos comme décalage, sans vérifier que la somme *ppos + count reste inférieure ou égale à size_buf.
vme_user_write()/vme_user_read() ne limitent (clamp) le paramètre 'count' qu'à la taille de la fenêtre VME (image_size = vme_get_size(resource)), laquelle est définie par VME_SET_SLAVE à partir de slave.size fourni par l'utilisateur -- validée contre l'espace d'adressage VME (jusqu'à VME_A32_MAX = 4 GiB), et non contre PCI_BUF_SIZE. Lorsque la fenêtre dépasse 128 KiB, un appel write()/read() copie au-delà de l'allocation de kern_buf.
Les deux fonctions utilitaires limitent désormais 'count' à size_buf, avec un retour anticipé lorsque *ppos est déjà égal ou supérieur à la fin du tampon. *ppos est >= 0 ici (l'appelant rejette les décalages négatifs), donc size_buf - *ppos ne peut pas provoquer de débordement d'entier (wrap-around). Cela fait écho au contrôle existant dans les fonctions utilitaires du chemin MASTER resource_to_user() / resource_from_user(), et respecte la convention read()/write() prévoyant un transfert partiel en fin de tampon.
Cette vulnérabilité a été détectée par analyse statique (suivi des taches CodeQL + vérification de modèle borné CBMC) et confirmée dynamiquement sous KASAN avec le pont vme_fake :
BUG: KASAN: slab-out-of-bounds in _copy_from_user+0x2d/0x80 Write of size 262144 at addr ffff888004100000 by task trigger/68 _copy_from_user+0x2d/0x80 vme_user_write+0x13e/0x240 [vme_user]
vfs_write+0x1b8/0x7a0 ksys_write+0xb8/0x150
If you want to get the best quality for vulnerability data then you always have to consider VulDB.