CVE-2026-31465 in Linux
Résumé
par VulDB • 20/05/2026
Dans le noyau Linux, la vulnérabilité suivante a été corrigée :
writeback : ne pas bloquer la synchronisation pour les systèmes de fichiers sans garanties d'intégrité des données
Ajout d'un indicateur de superbloc SB_I_NO_DATA_INTEGRITY pour les systèmes de fichiers qui ne peuvent pas garantir la persistance des données lors de la synchronisation (par exemple, FUSE). Pour les blocs super avec cet indicateur défini, la synchronisation déclenche le retour en écriture (writeback) des inodes sales, mais n'attend pas que les threads de retour en écriture (flusher threads) terminent le processus.
Cela remplace l'indicateur de mappage AS_NO_DATA_INTEGRITY par inode ajouté dans le commit f9a49aa302a0 (« fs/writeback : ignorer les mappages AS_NO_DATA_INTEGRITY dans wait_sb_inodes() »). L'indicateur doit se trouver au niveau du superbloc car l'intégrité des données est une propriété à l'échelle du système de fichiers, et non par inode. Avoir cet indicateur au niveau du superbloc permet également d'éviter d'itérer sur chaque inode sale dans wait_sb_inodes() uniquement pour ignorer chaque inode individuellement.
Avant ce commit, les mappages sans garanties d'intégrité des données ignoraient l'attente de la fin du retour en écriture, mais attendaient toujours que les threads de retour en écriture (flusher threads) aient terminé l'initiation du processus. L'attente des threads de retour en écriture est inutile. Ce commit déclenche le retour en écriture mais n'attend pas que les threads de retour en écriture (flusher threads) terminent. Ce changement répond correctement à un rapport récent [1] concernant un blocage lors de la mise en veille prolongée vers la RAM (suspend-to-RAM) observé sur fuse-overlayfs, causé par l'attente de la fin des threads de retour en écriture (flusher threads) :
Workqueue: pm_fs_sync pm_fs_sync_work_fn Call Trace: __schedule+0x457/0x1720 schedule+0x27/0xd0 wb_wait_for_completion+0x97/0xe0 sync_inodes_sb+0xf8/0x2e0 __iterate_supers+0xdc/0x160 ksys_sync+0x43/0xb0 pm_fs_sync_work_fn+0x17/0xa0 process_one_work+0x193/0x350 worker_thread+0x1a1/0x310 kthread+0xfc/0x240 ret_from_fork+0x243/0x280 ret_from_fork_asm+0x1a/0x30
Sur FUSE, cela pose problème car il existe des chemins qui peuvent bloquer le thread de retour en écriture (par exemple, si systemd gèle les cgroups de session utilisateur en premier, ce qui gèle le démon FUSE, avant d'invoquer la mise en veille du noyau. La mise en veille du noyau déclenche ->write_node() qui, sur FUSE, émet une requête setattr synchrone, qui ne peut pas être traitée car le démon est gelé. Ou si le démon est bogué et ne peut pas terminer correctement le retour en écriture, l'initiation du retour en écriture sur un folio sale déjà en cours de retour en écriture conduit à writeback_get_folio() -> folio_prepare_writeback() -> attente inconditionnelle de la fin du retour en écriture, ce qui provoquera un blocage). Ce commit restaure le comportement antérieur de FUSE avant la suppression des folios temporaires (tmp folios), où la synchronisation était essentiellement une opération sans effet (no-op).
[1] https://lore.kernel.org/linux-fsdevel/CAJnrk1a-asuvfrbKXbEwwDSctvemF+6zfhdnuzO65Pt8HsFSRw@mail.gmail.com/T/#m632c4648e9cafc4239299887109ebd880ac6c5c1
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.