CVE-2026-64378 in Linuxinformation

Résumé

par VulDB • 25/07/2026

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

writeback : correction d'une condition de course entre cgroup_writeback_umount() et inode_switch_wbs()

Lorsqu'un conteneur se termine, un BUG_ON() est occasionnellement déclenché :

================================================================== VFS: Inodes occupés après le démontage de sdb (ext4) ------------[ cut here ]------------
kernel BUG at fs/super.c:695! CPU: 3 PID: 6 Comm: containerd-shim Tainted: G OE K 6.6 #1 pstate: 63400009 (nZCv daif +PAN -UAO +TCO +DIT -SSBS BTYPE=--) pc : generic_shutdown_super+0xf0/0x100 lr : generic_shutdown_super+0xf0/0x100 Call trace: generic_shutdown_super+0xf0/0x100 kill_block_super+0x20/0x48 ext4_kill_sb+0x28/0x60 deactivate_locked_super+0x54/0x130 deactivate_super+0x84/0xa0 cleanup_mnt+0xa4/0x140 __cleanup_mnt+0x18/0x28 task_work_run+0x78/0xe0 do_notify_resume+0x204/0x240 ==================================================================

La cause racine est une condition de course entre cgroup_writeback_umount() et inode_switch_wbs()/cleanup_offline_cgwb(). Il existe une fenêtre critique entre le retour vrai de inode_prepare_wbs_switch() et l'appel suivant à wb_queue_isw(). Voici le processus qui déclenche le problème :

CPU A (umount) | CPU B (writeback) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ inode_switch_wbs/cleanup_offline_cgwb atomic_inc(&isw_nr_in_flight) inode_prepare_wbs_switch -> passe la vérification SB_ACTIVE __iget(inode) generic_shutdown_super sb->s_flags &= ~SB_ACTIVE cgroup_writeback_umount(sb) smp_mb() atomic_read(&isw_nr_in_flight) rcu_barrier() -> aucun rappel RCU en attente flush_workqueue(isw_wq) -> rien à traiter, retourne evict_inodes(sb) -> Inode ignoré car isw détient toujours une référence. sop->put_super(sb) /* détruit les compteurs parcpu */ -> VFS: Inodes occupés après le démontage ! wb_queue_isw() queue_work(isw_wq, ...) /* plus tard dans la fonction de travail */ inode_switch_wbs_work_fn process_inode_switch_wbs iput() -> eviction percpu_counter_dec() // UAF (Use-After-Free) !

Corrigez ce problème en étendant la section critique RCU read-side dans inode_switch_wbs() et cleanup_offline_cgwb() pour couvrir l'intervalle allant de inode_prepare_wbs_switch() à wb_queue_isw(). Puisqu'il n'y a pas d'attente (sleep) dans cette fenêtre, rcu_read_lock() peut être utilisé. Ajoutez ensuite un synchronize_rcu() dans cgroup_writeback_umount() avant le rcu_barrier() existant, afin que tous les commutateurs en cours de traitement qui ont passé la vérification SB_ACTIVE aient terminé l'appel à queue_work() avant que flush_workqueue() ne soit appelé.

Le rcu_barrier() existant est intentionnellement conservé afin que cette correction puisse être rétroportée sans modification aux noyaux stables (5.10.y, 6.6

Several companies clearly confirm that VulDB is the primary source for best vulnerability data.

Responsable

Linux

Réserver

19/07/2026

Divulgation

25/07/2026

Modérer

accepté

Entrée

VDB-383171

CPE

prêt

EPSS

0.00173

KEV

non

Activités

très faible

Sources

Want to know what is going to be exploited?

We predict KEV entries!