
Détecteur non destructif pour l'élévation de privilèges locale CVE-2026-31431 (Copy Fail) dans XCP-ng 8.3 Dom0, validant la vulnérabilité du noyau via un test de corruption du cache de pages.
Un script de détection sûr et non destructif pour CVE-2026-31431 (« Copy Fail »), validé sur XCP-ng 8.3 LTS avant la mise à jour de sécurité du 5 mai 2026.
⚠️ Utilisation autorisée uniquement. Exécutez ce script exclusivement sur des systèmes dont vous êtes propriétaire ou que vous êtes explicitement autorisé à tester.
CVE-2026-31431, surnommée « Copy Fail », est une élévation de privilèges locale (LPE) dans l'interface cryptographique algif_aead du noyau Linux. Un défaut logique dans le modèle authencesn — introduit en 2017 — permet à un utilisateur local non privilégié d'effectuer une écriture contrôlée de 4 octets dans le cache de pages du noyau de tout fichier lisible, permettant une élévation de privilèges jusqu'à root.
a664bf3d603d par Herbert XuLe domaine de contrôle Dom0 de XCP-ng fonctionne sur un noyau Linux et constitue la couche de gestion de l'hyperviseur. Tout utilisateur non privilégié ayant un accès shell à Dom0 — y compris les comptes de service créés pour les pipelines CI/CD, les agents de surveillance, les outils de sauvegarde ou l'automatisation — peut exploiter cette vulnérabilité pour obtenir root. Depuis root dans Dom0, toutes les VM invitées de cet hôte sont compromises.
Une installation XCP-ng par défaut présente une exposition minimale car très peu de processus s'exécutent en tant qu'utilisateurs non root. Le risque réel s'accumule au fil du temps lorsque les opérateurs ajoutent des comptes de service à des fins légitimes sans restreindre l'accès shell.
Auditez vos comptes de service Dom0 :
awk -F: '$7 ~ /bash|sh/' /etc/passwd
Il s'agit d'un détecteur de laboratoire, pas d'un outil d'élévation de privilèges. Il :
algif_aead / authencesn contre ce fichierLes binaires système, /etc/passwd et autres fichiers système ne sont jamais touchés. La corruption du cache de pages est uniquement en mémoire — rien n'est réécrit sur le disque.
os.splice)python3 xcp_ng_cve_2026_31431_tester.py
| Code | Signification |
|---|---|
0 | Aucune corruption observée — le système est probablement corrigé ou algif_aead est désactivé |
1 | Erreur de déclenchement — algif_aead peut être indisponible ou bloqué |
2 | Vulnérable — corruption du cache de pages confirmée |
Remarque : Le code de sortie
1sur un système corrigé est un comportement attendu, pas une erreur du script. Siauthencesna été désactivé au niveau du noyau (comme dans le correctif XCP-ng du 5 mai), la liaison de socket échouera et le script se terminera avec le code1.
| Date | Événement |
|---|---|
| 29 avril 2026 | CVE-2026-31431 divulguée publiquement |
| 4 mai 2026 | VATES publie VSA-2026-013 |
| 5 mai 2026 | Mise à jour de sécurité XCP-ng 8.3 LTS de mai publiée — correctif du noyau disponible |
Mettez à jour vos hôtes XCP-ng et redémarrez :
yum update
reboot
Après le redémarrage, vérifiez que le noyau mis à jour est en cours d'exécution :
uname -r
Relancez ce script de détection après le correctif. Un système corrigé renverra le code de sortie 1 (erreur de déclenchement) car le modèle authencesn vulnérable n'est plus disponible.
Remarque : Le correctif XCP-ng désactive le support IPSec ESN en conséquence de la suppression du composant
authencesnvulnérable. Pour la plupart des environnements, cela n'a aucun impact pratique. VATES a indiqué qu'un futur correctif pourrait restaurer cette fonctionnalité avec une solution appropriée.
Avant d'appliquer des mesures d'atténuation, confirmez si algif_aead est compilé en tant que module (=m) ou intégré au noyau (=y) :
grep CONFIG_CRYPTO_USER_API_AEAD /boot/config-$(uname -r)
=m — Basé sur module ; la liste noire modprobe fonctionnera=y — Intégré au noyau ; la liste noire modprobe échouera silencieusement et n'offrira aucune protectionPour les noyaux de la famille RHEL avec =y, utilisez plutôt le paramètre de démarrage grubby :
grubby --update-kernel=ALL --args="initcall_blacklist=algif_aead_init"
reboot
Ce script est un dérivé modifié du travail original de rootsecdev. Veuillez vérifier la licence du dépôt en amont avant toute redistribution et assurez-vous que votre utilisation respecte ses conditions.
Ce script a été validé sur XCP-ng 8.3 LTS exécutant un noyau non corrigé au 5 mai 2026. Appliquez immédiatement la mise à jour de sécurité officielle VATES si ce n'est pas déjà fait.