
Exploit de preuve de concept pour CVE-2026-31431 (Copy Fail), une LPE du noyau Linux via la corruption du cache de pages algif_aead, avec détection, laboratoire et conseils d'atténuation.
██████╗ ██████╗ ██████╗ ██╗ ██╗ ███████╗ █████╗ ██╗██╗
██╔════╝██╔═══██╗██╔══██╗╚██╗ ██╔╝ ██╔════╝██╔══██╗██║██║
██║ ██║ ██║██████╔╝ ╚████╔╝ █████╗ ███████║██║██║
██║ ██║ ██║██╔═══╝ ╚██╔╝ ██╔══╝ ██╔══██║██║██║
╚██████╗╚██████╔╝██║ ██║ ██║ ██║ ██║██║███████╗
╚═════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝╚═╝╚══════╝
algif_aead⚠️ UTILISATION AUTORISÉE UNIQUEMENT — Ce dépôt est strictement destiné aux testeurs d'intrusion, chercheurs en sécurité et défenseurs agissant sous autorisation légale. Toute utilisation abusive constitue une infraction pénale.
| # | Section | Description |
|---|---|---|
| 1 | Qu'est-ce que Copy Fail ? | Résumé de la vulnérabilité |
| 2 | Analyse technique approfondie | Analyse de la cause racine |
| 3 | Systèmes affectés | Matrice distributions et noyaux |
| 4 | Structure du dépôt | Organisation des fichiers |
| 5 | Configuration du laboratoire | Reproduction sécurisée |
| 6 | Utilisation de l'exploit | Flux de travail pour test d'intrusion |
| 7 | Détection | YARA, Sigma, scripts |
| 8 | Atténuation | Correctif et durcissement |
| 9 | Rapport de test d'intrusion | Modèles de rapport |
| 10 | Aspects juridiques et éthiques | Avertissement |
| 11 | Références | CVE, avis, blogs |
Copy Fail est une vulnérabilité d'escalade de privilèges locale (LPE) divulguée le 29 avril 2026, affectant pratiquement toutes les distributions Linux majeures exécutant des noyaux depuis 2017.
Utilisateur non privilégié ──► AF_ALG + splice() ──► Écriture de 4 octets dans le cache de pages ──► ROOT
| Propriété | Détail |
|---|---|
| ID CVE | CVE-2026-31431 |
| Surnom | Copy Fail |
| CVSS v3.1 | 7.8 (ÉLEVÉ) |
| Vecteur d'attaque | Local |
| Privilèges requis | Faible (tout utilisateur non privilégié) |
| Interaction utilisateur | Aucune |
| Découvreur | Xint Code (Theori) |
| Divulgué | 29 avril 2026 |
| Taille de l'exploit | 732 octets (PoC Python) |
| État du correctif | ✅ Disponible — revenir au commit a664bf3d603d |
La vulnérabilité provient d'une optimisation in-place défectueuse introduite en 2017 (commit 72548b093ee3) dans le module algif_aead de l'API crypto espace utilisateur du noyau Linux (AF_ALG).
AF_ALG (API crypto espace utilisateur)
└── module algif_aead
└── template authencesn ◄── VULNÉRABLE
└── optimisation in-place (2017)
└── req->src == req->dst ◄── pages de splice() chaînées dans le scatterlist dst inscriptible
Étape 1 : Ouvrir une socket AF_ALG AEAD
socket(AF_ALG, SOCK_SEQPACKET, 0)
Étape 2 : Envoyer des pages splice() référençant le fichier cible
(pages du cache de pages d'un binaire privilégié, par exemple /usr/bin/sudo)
Étape 3 : Déclencher l'écriture scratch authencesn
authencesn utilise le tampon dst comme zone de travail →
écrit 4 octets contrôlés au-delà de la zone de sortie légitime
Étape 4 : L'entrée du cache de pages pour le fichier cible est maintenant corrompue
(fichier disque intact — seule la copie en mémoire est modifiée)
Étape 5 : Exécuter le binaire modifié → ROOT
Le cache de pages du noyau Linux stocke les copies en mémoire des fichiers. Lorsqu'un fichier est lu, ses pages sont mises en cache. L'appel système splice() peut référencer directement ces pages mises en cache. En insérant des pages du cache de pages dans le scatterlist AF_ALG AEAD, l'écriture scratch authencesn atterrit à l'intérieur de ces pages mises en cache, patchant ainsi efficacement la copie en mémoire de tout fichier lisible — y compris les binaires privilégiés comme sudo, pkexec ou passwd.
Le correctif en amont annule l'optimisation défectueuse de 2017 :
# Corrigé dans le commit : a664bf3d603d
git show a664bf3d603d
| Branche du noyau | Affecté ? | Version corrigée |
|---|---|---|
| 4.9.x (LTS) | ✅ Oui | 4.9.340+ |
| 5.4.x (LTS) | ✅ Oui | 5.4.295+ |
| 5.10.x (LTS) | ✅ Oui | 5.10.239+ |
| 5.15.x (LTS) | ✅ Oui | 5.15.185+ |
| 6.1.x (LTS) | ✅ Oui | 6.1.132+ |
| 6.6.x (LTS) | ✅ Oui | 6.6.83+ |
| 6.12.x (LTS) | ✅ Oui | 6.12.19+ |
| < 4.9 (avant 2017) | ❌ Non | N/A — optimisation absente |
| Distribution | Versions affectées | Corrigé ? | Avis |
|---|---|---|---|
| Ubuntu | < 26.04 (toutes versions) | ✅ Corrigé | USN |
| Ubuntu 26.04 (Resolute) | ❌ Non affecté | — | — |
| RHEL / CentOS | 7, 8, 9 | ✅ Corrigé | RHSA-2026 |
| Amazon Linux | 2, 2023 | ✅ Corrigé | ALAS |
| SUSE / openSUSE | Tous affectés | ✅ Corrigé | SUSE-SU |
| Debian | Bullseye, Bookworm | ✅ Corrigé | DSA |
| CloudLinux | 8, 9 | ✅ Corrigé | Avis |