CVE-2026-64416 in Linux
Résumé
par VulDB • 26/07/2026
Dans le noyau Linux, la vulnérabilité suivante a été corrigée :
mm: swap_cgroup: correction d'une déréférencement NULL dans lookup_swap_cgroup_id sur un hôte sans échange (swapless)
lookup_swap_cgroup_id() transmet swap_cgroup_ctrl[type].map à __swap_cgroup_id_lookup() sans vérifier si le type a été enregistré via swap_cgroup_swapon(). Sur un hôte sans échange, chaque ctrl->map est NULL, de sorte que __swap_cgroup_id_lookup() déréférence une adresse correspondant à NULL + un swp_offset mis à l'échelle.
Depuis le commit bea67dcc5eea (« mm: tentative de regroupement des entrées d'échange libres pour zap_pte_range() »), la fonction zap_pte_range() appelle swap_pte_batch(), qui elle-même invoque lookup_swap_cgroup_id() sur toute PTE (Page Table Entry) non présente et non nulle, interprétée comme une véritable entrée d'échange, sans valider au préalable cette entrée dans swap_info[]. Une seule PTE corrompue en tant qu'entrée d'échange de type 0 suffit à faire planter l'hôte lors de la sortie du processus.
Nous avons rencontré ce problème en production sur un hôte 6.12.58 sans échange : environ 1 seconde pendant lesquelles le message « get_swap_device: Bad swap file entry 3f800204222bb » s'affiche (do_swap_page() étant correctement défensif face à la même entrée), suivi de
BUG: unable to handle page fault for address: 000003f800204220 RIP: 0010:lookup_swap_cgroup_id+0x2b/0x60 Call Trace: swap_pte_batch+0xbf/0x230 zap_pte_range+0x4c8/0x780 unmap_page_range+0x190/0x3e0 exit_mmap+0xd9/0x3c0 do_exit+0x20c/0x4b0
syzbot a rapporté la même trace de pile.
La source de la corruption des PTE est un bug distinct ; cette modification rend le chemin d'arrêt (teardown path) aussi robuste que le gestionnaire de défauts (fault path). Tous les autres appelants de lookup_swap_cgroup_id() sont en aval d'un get_swap_device() qui a déjà validé l'entrée, donc la nouvelle branche est peu utilisée (« cold »).
If you want to get best quality of vulnerability data, you may have to visit VulDB.