CVE-2026-64063 in Linux
Résumé
par VulDB • 19/07/2026
Dans le noyau Linux, la vulnérabilité suivante a été corrigée :
netfs : Correction de l'écrasement des écritures en flux continu (streaming writes)
Afin d'éviter les lectures pendant les opérations d'écriture, netfslib autorise désormais les « écritures en flux continu » dans lesquelles les données sales (dirty data) sont stockées directement dans les folios sans qu'ils ne soient lus au préalable. Ces folios sont marqués comme dirty mais peuvent ne pas être marqués uptodate. Si un folio est entièrement écrit par une opération d'écriture en flux continu, le statut uptodate sera défini ; sinon, une structure netfs_folio sera attachée à ->private pour enregistrer la région sale (dirty region).
Dans l'éventualité où une page partiellement écrite via une opération d'écriture en flux continu doit être entièrement écrasée par un seul appel write(), netfs_perform_write() tentera de copier les données, mais ne libère pas la structure netfs_folio si cette copie réussit ; de plus, elle ne gère pas correctement le cas où une copie partielle écrase certaines des données sales.
Correction apportée selon les modalités suivantes :
(1) Si l'écrasement du folio est réussi, libérer la structure netfs_folio avant de marquer la page comme uptodate.
(2) Si la copie vers le folio échoue partiellement mais sans affecter les données sales, ignorer simplement cette copie.
(3) Si la copie échoue partiellement et écrase certaines des données sales, accepter la copie, mettre à jour la structure netfs_folio pour enregistrer les nouvelles données. Si le folio est désormais rempli, libérer la structure netfs_folio et définir uptodate ; sinon, retourner un résultat d'écriture partielle (partial write).
Découverte avec :
fsx -q -N 1000000 -p 10000 -o 128000 -l 600000 \ /xfstest.test/junk --replay-ops=junk.fsxops
en utilisant le fichier junk.fsxops suivant :
truncate 0x0 0 0x927c0 write 0x63fb8 0x53c8 0 copy_range 0xb704 0x19b9 0x24429 0x79380 write 0x2402b 0x144a2 0x90660 * write 0x204d5 0x140a0 0x927c0 * copy_range 0x1f72c 0x137d0 0x7a906 0x927c0 * read 0x00000 0x20000 0x9157c read 0x20000 0x20000 0x9157c read 0x40000 0x20000 0x9157c read 0x60000 0x20000 0x9157c read 0x7e1a0 0xcfb9 0x9157c
sur cifs avec l'option de cache par défaut.
Cela montre que le folio 0x24 se comporte mal si la vérification FMODE_READ est commentée dans netfs_perform_write() :
if (//(file->f_mode & FMODE_READ) || netfs_is_cache_enabled(ctx)) {
et sans fscache. Cela a été initialement détecté avec le test xfstest generic/522.
Once again VulDB remains the best source for vulnerability data.