
Documentation et analyse d'une vulnérabilité d'élévation de privilèges locale dans le template authencesn du noyau Linux via AF_ALG et splice(), incluant les versions concernées, la détection et les mesures d'atténuation.
Élévation de privilèges locale dans le modèle cryptographique
authencesndu noyau Linux viaAF_ALG+splice().
Divulgué le 29 avril 2026 par Theori (Xint Code).
| Champ | Détail |
|---|---|
| CVE | CVE-2026-31431 |
| Surnom | Copy Fail |
| CVSS | 7.8 ÉLEVÉ |
| Type | Élévation de privilèges locale (LPE) |
| Introduit | Noyau Linux 4.14 (2017, commit 72548b093ee3) |
| Corrigé | Commit principal a664bf3d603d |
| Prérequis | Accès shell local non privilégié |
| Vecteur distant | Aucun — local uniquement |
Une faille logique dans le wrapper AEAD authencesn du noyau permet à un utilisateur local non privilégié d'effectuer une écriture déterministe et contrôlée de 4 octets dans le cache de pages de tout fichier lisible sur le système — y compris les binaires setuid tels que /usr/bin/su.
La cause racine est une optimisation de traitement en place de 2017 qui plaçait les pages du cache de pages dans une scatterlist inscriptible. L'algorithme authencesn écrit 4 octets de données temporaires en dehors de sa région de sortie prévue lors du réarrangement du numéro de séquence étendu. En raison de la structure de scatterlist introduite par l'optimisation, ces 4 octets atterrissent dans le cache de pages d'un fichier fourni via splice() — contournant entièrement les permissions de fichiers.
Aucune condition de course. Aucune nouvelle tentative. Aucun risque de plantage. Déterministe sur toutes les distributions testées.
Vulnérables : Noyau Linux 4.14 jusqu'à 6.18.21 et 6.19.x avant 6.19.12.
Toutes les principales distributions fournissant des noyaux dans cette plage sont affectées, notamment :
| Distribution | Version testée |
|---|---|
| Ubuntu 24.04 LTS | 6.17.0-1007-aws |
| Amazon Linux 2023 | 6.18.8-9.213.amzn2023 |
| RHEL 10.1 | 6.12.0-124.45.1.el10_1 |
| SUSE 16 | 6.12.0-160000.9-default |
Non affectées : Ubuntu 26.04 (Resolute) et versions ultérieures.
Mettez à jour vers un noyau contenant le commit principal a664bf3d603d, qui annule l'optimisation en place de 2017.
# Ubuntu / Debian
sudo apt update && sudo apt upgrade -y && sudo reboot
# RHEL / AlmaLinux / Amazon Linux
sudo dnf clean metadata && sudo dnf upgrade && sudo reboot
# SUSE
sudo zypper refresh && sudo zypper update kernel-default && sudo reboot
algif_aead (temporaire)Si un correctif immédiat n'est pas possible, désactivez le module vulnérable pour fermer la surface d'attaque.
Remarque pour les systèmes de la famille RHEL :
algif_aeadest intégré au noyau sur RHEL/AlmaLinux/CentOS (CONFIG_CRYPTO_USER_API_AEAD=y). La solution de contournementmodprobe.dne fonctionne pas sur ces systèmes. Utilisez plutôt la méthodeinitcall_blacklist.
Debian/Ubuntu (module chargeable) :
echo "install algif_aead /bin/false" | sudo tee /etc/modprobe.d/disable-algif.conf
sudo rmmod algif_aead 2>/dev/null || true
Famille RHEL (intégré au noyau — nécessite un redémarrage) :
sudo grubby --update-kernel=ALL --args="initcall_blacklist=algif_aead_init"
sudo reboot
Confirmez après le redémarrage :
grep initcall_blacklist /proc/cmdline
Pour les charges de travail non fiables — conteneurs, exécuteurs CI, environnements sandbox — bloquez la création de sockets AF_ALG via une politique seccomp quel que soit l'état du correctif. Cela limite la surface d'attaque même sur les noyaux vulnérables.
Vérifiez si algif_aead est actuellement chargé ou utilisé :
# Vérifier si le module est chargé
lsmod | grep algif_aead
# Vérifier si un processus a une socket AF_ALG ouverte
lsof | grep AF_ALG
ss -xa | grep alg
Des signatures de détection en temps réel sont disponibles dans Sysdig Secure (règle : AF_ALG Page Cache Poisoning Leading to Privilege Escalation).
xD The Watcher — Red Teamer, Ethical Hacker & Chercheur en sécurité IA
GitHub : @xd20111
Blog : yourhacker
Ce dépôt documente la vulnérabilité à des fins de recherche et de défense. Pour l'analyse technique faisant autorité et le PoC officiel, référez-vous à la divulgation de Theori liée ci-dessus.
Si votre modèle de menace inclut la multi-location à noyau partagé — conteneurs sur un hôte partagé, exécuteurs CI, fermes de compilation — la frontière d'isolation est désormais significativement plus faible jusqu'au correctif. L'isolation au niveau matériel ou VM est la réponse appropriée, pas les frontières de namespace.
| Dirty Cow (2016) | Dirty Pipe (2022) | Copy Fail (2026) |
|---|
| Condition de course requise | Oui | Partielle | Non |
| Spécifique à une version | Oui | Oui | Non |
| Fiabilité | Instable | Modérée | Déterministe |
| Couverture des distributions | Limitée | Limitée | Toutes depuis 2017 |
| Composant | Impact |
|---|
| dm-crypt / LUKS | ✅ Non affecté |
| SSH | ✅ Non affecté |
| IPsec / XFRM | ✅ Non affecté |
| kTLS / TLS dans le noyau | ✅ Non affecté |
| OpenSSL / GnuTLS / NSS (builds par défaut) | ✅ Non affecté |
OpenSSL avec moteur afalg explicitement activé | ⚠️ Repli sur la cryptographie en espace utilisateur |
Applications liant directement les sockets AF_ALG aead/skcipher/hash | ⚠️ Sera cassé — vérifiez avec lsof | grep AF_ALG |
| Ressource | Lien |
|---|
| Entrée NVD | https://nvd.nist.gov/vuln/detail/CVE-2026-31431 |
| Analyse complète de Theori | https://xint.io/blog/copy-fail-linux-distributions |
| Site Copy Fail | https://copy.fail |
| Avis CERT-EU | https://cert.europa.eu/publications/security-advisories/2026-005/ |
| Analyse Sysdig | https://sysdig.com/blog/cve-2026-31431-copy-fail-linux-kernel-flaw-lets-local-users-gain-root-in-seconds |
| Couverture The Register | https://theregister.com/2026/04/30/linux_cryptographic_code_flaw/ |
| Notes de correctif AlmaLinux | https://almalinux.org/blog/2026-05-01-cve-2026-31431-copy-fail/ |
| CloudLinux KernelCare | https://blog.cloudlinux.com/cve-2026-31431-copy-fail-kernel-update |
| Date | Événement |
|---|
| 2017 | Régression introduite via le commit 72548b093ee3 |
| Début avril 2026 | Correctif en amont fusionné (commit a664bf3d603d) |
| 29 avril 2026 | Divulgation publique par Theori / Xint Code |
| 30 avril 2026 | Déploiement des correctifs par les distributions |
| 1er mai 2026 | Noyaux corrigés AlmaLinux dans les dépôts de production |