
Un utilitaire de sécurité Linux écrit en C pour détecter, vérifier en toute sécurité (preuve de concept) et atténuer la CVE-2026-64600 (RefluXFS). Il fournit une évaluation des vulnérabilités du noyau, la détection des reflinks XFS, un PoC sûr de condition de course et une atténuation en couches via SystemTap et le durcissement de XFS.
Ce dépôt fournit un utilitaire C complet pour détecter, vérifier de manière sûre et atténuer la vulnérabilité RefluXFS (CVE‑2026‑64600) sur les systèmes Linux utilisant le système de fichiers XFS. L'outil vérifie la présence d'un noyau vulnérable, identifie les montages XFS avec reflink activé, tente éventuellement un déclenchement sûr de la course, et déploie une atténuation à deux couches (sonde SystemTap + remontage avec reflink=0) si nécessaire.
⚠️ Avertissement : Cet outil est destiné uniquement à l'évaluation de sécurité autorisée et au durcissement de systèmes. Utilisez-le uniquement sur des systèmes que vous possédez ou pour lesquels vous avez une autorisation explicite de test. Les auteurs déclinent toute responsabilité en cas de mauvaise utilisation.
CVE-2026-64600 (RefluXFS) est une condition de concurrence de gravité élevée dans le système de fichiers XFS du noyau Linux, plus précisément dans le chemin de copie à l'écriture (CoW) des fichiers reflinkés (introduite dans le noyau 4.11). Un attaquant local non privilégié peut corrompre ou écraser arbitrairement des fichiers sur le même volume XFS en provoquant une course entre des écritures O_DIRECT concurrentes sur un clone reflink et un fichier protégé. La corruption se produit au niveau de la couche blocs, survit aux redémarrages et ne laisse aucune trace dans les journaux du noyau.
Noyaux affectés : Linux 4.11 jusqu'aux versions corrigées :
Impact : élévation de privilèges locale vers root, corruption persistante des données, écrasement silencieux de binaires setuid ou de fichiers sensibles.
Cet outil implémente :
/proc/mounts).-m fix) :
FICLONE et copy_file_range sur XFS, en renvoyant -EOPNOTSUPP.reflink=0 (défense en profondeur).-c) – exécute des commandes arbitraires (ex. id) uniquement si le système est vulnérable.-m exploit).reflink=0 (-m fix, nécessite root).--dry-run – prévisualise les actions d'atténuation sans les appliquer.--force – force le déploiement de l'atténuation même si les conditions ne sont pas réunies (laboratoire/démo).-v) pour des informations d'analyse précises.-c) – exécute une commande uniquement si le système est vulnérable (par défaut : id).git clone https://github.com/Debajyoti0-0/CVE-2026-64600.git
cd cve-2026-64600
gcc -o cve-2026-64600 cve-2026-64600.c -lm -lpthread
Prérequis :
-m fix) :
stap) – facultatif, mais recommandé pour une atténuation complète.Facultatif : si SystemTap n'est pas disponible, l'outil se rabattra sur le durcissement par remontage uniquement (si la version de XFS le prend en charge).
./cve-2026-64600
./cve-2026-64600 -v
./cve-2026-64600 -p /mnt/data
./cve-2026-64600 -m exploit
./cve-2026-64600 -m auto
sudo ./cve-2026-64600 -m fix
sudo ./cve-2026-64600 -m fix --dry-run
sudo ./cve-2026-64600 -m fix --force
./cve-2026-64600 -c "whoami"
./cve-2026-64600 -v -c "id"
$ ./cve-2026-64600
┌──────────────────────────────────────────────────────────────────────┐
│ CVE-2026-64600 (RefluXFS) — Mode: check │
└──────────────────────────────────────────────────────────────────────┘
─── System Information ───
Kernel 5.15.0-91-generic
Architecture x86_64
─── Vulnerability Assessment ───
Kernel Vulnerable NO
XFS Reflink (any mount) DISABLED
Distribution Affected (heuristic) NO
────────────────────────────────────────────────────────────────────
FINAL VERDICT
────────────────────────────────────────────────────────────────────
┌──────────────────────────────────────────────────────────────────────┐
│ SAFE: kernel not vulnerable and no XFS reflink found │
└──────────────────────────────────────────────────────────────────────┘
Kernel: 5.15.0-91-generic (not vulnerable)
XFS reflink: not detected
System appears secure against CVE-2026-64600
────────────────────────────────────────────────────────────────────
$ ./cve-2026-64600
┌──────────────────────────────────────────────────────────────────────┐
│ CVE-2026-64600 (RefluXFS) — Mode: check │
└──────────────────────────────────────────────────────────────────────┘
─── System Information ───
Kernel 6.12.0-rc2
Architecture x86_64
─── Vulnerability Assessment ───
Kernel Vulnerable YES
XFS Reflink (any mount) DISABLED
Distribution Affected (heuristic) YES
A vulnerable kernel was detected. Show remediation advisory? [y/n]: n
────────────────────────────────────────────────────────────────────
FINAL VERDICT
────────────────────────────────────────────────────────────────────
┌──────────────────────────────────────────────────────────────────────┐
│ PARTIAL: vulnerable kernel, but no XFS reflink found │
└──────────────────────────────────────────────────────────────────────┘
Kernel: 6.12.0-rc2 (vulnerable)
XFS reflink: not detected
Recommendation: still consider kernel update as precaution
────────────────────────────────────────────────────────────────────
$ sudo ./cve-2026-64600 -m fix
┌──────────────────────────────────────────────────────────────────────┐
│ CVE-2026-64600 (RefluXFS) — Mode: fix │
└──────────────────────────────────────────────────────────────────────┘
─── System Information ───
Kernel 6.12.0-rc2
Architecture x86_64
─── Vulnerability Assessment ───
Kernel Vulnerable YES
XFS Reflink (any mount) ENABLED
Distribution Affected (heuristic) YES
--- Mitigation Deployment ---
Layer 2/2: mount-level hardening (remount reflink=0)
Remounted /mnt/xfs with reflink=0
Layer 1/2: syscall-level block (SystemTap probe)
Status DEPLOYED (SystemTap)
Log: /var/log/refluxfs-block.log
Stop: sudo pkill -f 'stap.*refluxfs-block'
Verify: cp --reflink=always /etc/passwd /tmp/test 2>&1 | grep -q 'Operation not supported'
Status MITIGATION ACTIVE (both layers)
--- FINAL VERDICT ---
┌──────────────────────────────────────────────────────────────────────┐
│ CONFIRMED VULNERABLE (race triggered) │
└──────────────────────────────────────────────────────────────────────┘
Kernel: 6.12.0-rc2 (vulnerable)
XFS reflink: enabled
Distribution: affected
Pour tester cet outil dans un environnement sûr, vous pouvez configurer une VM Linux avec une partition XFS créée avec reflink=1. Par exemple :
# Create a loop device with an XFS filesystem (reflink enabled)
dd if=/dev/zero of=/tmp/xfs.img bs=1M count=1024
mkfs.xfs -m reflink=1 /tmp/xfs.img
sudo mount -o loop /tmp/xfs.img /mnt/xfs
Ensuite, exécutez l'outil sur le chemin monté (-p /mnt/xfs) pour tester la détection et l'atténuation.
Ce projet est sous licence GNU General Public License v3.0 – voir le fichier LICENSE pour plus de détails.
Les issues et les pull requests sont les bienvenues. Veuillez vous assurer que vos contributions préservent les mêmes fonctionnalités et respectent les directives d'utilisation éthique.
Rappel : Obtenez toujours une autorisation appropriée avant de tester un outil de sécurité. Restez éthique et responsable.
| Option | Description |
|---|
-h, --help | Afficher le message d'aide et quitter. |
-v, --verbose | Sortie détaillée (affiche les détails de la version du noyau analysée). |
-p <path> | Vérifier l'état du reflink XFS sur un point de montage spécifique. |
-m, --mode <mode> | Mode de fonctionnement : check (par défaut), exploit, auto, fix. |
-c, --cmd <command> | Exécuter une commande personnalisée uniquement si le système est vulnérable (par défaut : id). |
--dry-run | Prévisualiser les actions d'atténuation (avec -m fix) sans les appliquer. |
--force | Forcer le déploiement de l'atténuation même si les conditions ne sont pas réunies (laboratoire/démo). |
| Mode | Description |
|---|
check | Détection passive – rapporte la version du noyau, l'état du reflink XFS et une heuristique de distribution. Aucune action effectuée. |
exploit | Exécute la vérification sûre de la course (PoC) même si le système est vulnérable. N'applique pas d'atténuation. |
auto | Si le système est vulnérable, exécute la vérification sûre de la course ; sinon, se contente de vérifier. |
fix | Applique l'atténuation en couches (nécessite root). Déploie la sonde SystemTap et tente de remonter XFS avec reflink=0. Ne s'applique que si le noyau est vulnérable et que le reflink XFS est activé (sauf avec --force). |