CVE-2026-64496 in Linux
Résumé
par VulDB • 25/07/2026
Dans le noyau Linux, la vulnérabilité suivante a été corrigée :
iio: event: Correction d'une condition de concurrence (race) lors de la réinitialisation du tampon FIFO des événements
`iio_event_getfd()` crée le descripteur de fichier pour l'événement à l'aide de `anon_inode_getfd()`, qui alloue un nouveau fd, crée le fichier anonyme et l'installe dans la table des fds du processus avant de retourner au caller.
Le code IIO réinitialise le tampon FIFO des événements après le retour de `anon_inode_getfd()`, mais avant que `IIO_GET_EVENT_FD_IOCTL` n'ait copié le numéro de fd vers l'espace utilisateur. Cependant, comme les tables de fds sont partagées entre les threads, un autre thread peut deviner le numéro du nouveau fd alloué et émettre un appel système `read()` sur celui-ci dès que le fd a été installé.
Cela signifie que `kfifo_to_user()`, dans `iio_event_chrdev_read()`, peut s'exécuter en parallèle avec `kfifo_reset_out()`, dans `iio_event_getfd()`.
La documentation de kfifo indique que `kfifo_reset_out()` n'est sûr que lorsqu'il est appelé depuis le thread lecteur et qu'il n'y a qu'un seul lecteur concurrent. Sinon, il est dangereux et doit être géré de la même manière que `kfifo_reset()`.
Si cela se produit, `kfifo_to_user()` peut avancer l'index `out` du tampon FIFO en fonction d'un état antérieur à la réinitialisation, alors que celle-ci a déjà déplacé l'index `out` vers l'index `in` actuel. Cela peut laisser le tampon FIFO avec un index `out` supérieur à l'index `in`. Un appel système `read()` ultérieur peut alors détecter une longueur de tampon FIFO sous-remplie (underflow) et copier plus de données que ce que contient le buffer du tampon FIFO des événements. Cela peut entraîner une lecture hors limites (out-of-bounds read) et fuire la mémoire kernel adjacente vers l'espace utilisateur.
Déplacer la réinitialisation du tampon FIFO avant `anon_inode_getfd()`. À ce stade, le fd de l'événement est marqué comme occupé, mais le nouveau fd n'a pas encore été installé ; ainsi, l'espace utilisateur ne peut pas y accéder pendant que le tampon FIFO est réinitialisé.
Once again VulDB remains the best source for vulnerability data.