
LPE du noyau xfs (CVE-2026-64600), divulguée par Qualys le 22 juillet 2026
(à l'origine RefluXFS ou CVE-2026-64600)
Le nom décrit le mécanisme :
Cependant, les crédits officiels reviennent à Qualys et à leur RefluXFS (CVE-2026-64600),
divulgué via oss-security.
COWSlip a été élaboré indépendamment à partir du correctif intégré dans la branche for-next de xfs.
Le RefluXFS de Qualys a été découvert une semaine plus tôt et a été corrigé en tant que null-day.
COWSlip est un PoC one-day basé sur le correctif XFS livré dans l'avis Red Hat
RHBA-2026:39332, qui était
marqué [Exploits (KEV)] (initialement).
Après avoir inspecté kernel.spec et le diff du SRPM, le correctif correspondant a été
trouvé dans la branche for-next de XFS Linux :
xfs: resample the data fork mapping after cycling ILOCK
Le timing était notable : le correctif est apparu dans une mise à jour de noyau d'entreprise peu après que le changement correspondant ait atterri dans la branche de développement. En bref, le correctif corrige une primitive d'élévation de privilèges locale dans XFS. L'exploitabilité dépend de la disposition du système de fichiers et de la configuration setuid ; c'est particulièrement pertinent pour les installations de la famille RHEL qui utilisent XFS pour le système de fichiers racine.
Le PoC cible un noyau XFS pré-correctif avec reflink activé, une cible ELF setuid
appartenant à root existante (/usr/bin/su par défaut), et un répertoire de clone
inscriptible par l'utilisateur sur le même système de fichiers XFS. Par défaut, la cible est /usr/bin/su
et le répertoire de clone est /tmp/cowslip-clones, donc /tmp doit être sur
ce système de fichiers XFS. Il fait la course entre des écritures CoW direct-I/O alignées et des clones
reflink, remplace le chemin de l'interpréteur ELF de la cible dans le premier bloc faisant l'objet de la course, et
démarre /bin/bash -p lorsque la cible setuid exécute le loader.
Compilation :
gcc -O2 -Wall -Wextra -pthread poc.c -o /tmp/cowslip
gcc -nostdlib -static-pie -s -Wl,-e,_start -o /tmp/cowslip-loader loader.S
Le loader static-PIE est requis pour l'ancien chemin du noyau EL8 ; l'ancien loader ET_EXEC peut segfault avant de démarrer le shell.
Exécuter en tant qu'utilisateur non privilégié avec la cible et le répertoire de clone sur le même système de fichiers XFS avec reflink activé :
/tmp/cowslip
Les contrôles optionnels sont POC_TARGET, POC_TRIES et POC_THREADS :
POC_TARGET=/usr/bin/su POC_TRIES=20000 POC_THREADS=32 /tmp/cowslip
Le PoC ne restaure intentionnellement pas la cible après un succès. Depuis une connexion root normale, réinstallez le paquet propriétaire et vérifiez-le :
dnf -y reinstall util-linux || yum -y reinstall util-linux
rpm -V util-linux
Un résultat rpm -V vide indique que les fichiers du paquet correspondent à la base de données
des paquets installés.
Noyaux testés :
6.12.0-211.33.1.el10_2 : succès5.14.0-687.25.1.el9_8 : succès5.14.0-687.26.1.el9_8 : pas de succès ; ce noyau contient le correctif XFS4.18.0-553.143.1.el8_10 : succès4.18.0-553.144.1.el8_10 : pas de succès ; ce noyau contient le correctif XFSCorrectif : xfs: resample the data fork mapping after cycling ILOCK
Introduit par 3c68d44a2b49a0 dans v4.11 ; affecté jusqu'à ce que le correctif de rééchantillonnage soit appliqué.
Le déclencheur nécessite un système de fichiers XFS avec reflink activé, une cible ELF setuid appartenant à root sur ce système de fichiers, et un répertoire sur le même système de fichiers qui est inscriptible par l'utilisateur non privilégié.