
Exploit Python pour CVE-2026-31431, une élévation locale de privilèges dans le noyau Linux via AF_ALG et splice() pour écrire dans le cache de pages, obtenant les droits root sur arm64 et x86.
| Élément | Contenu |
|---|---|
| Identifiant CVE | CVE-2026-31431 |
| Nom de la vulnérabilité | Copy Fail |
| Type de vulnérabilité | Élévation de privilèges locale (LPE) du noyau Linux |
| Score CVSS 3.1 | 7.8 (ÉLEVÉ) |
| CWE | CWE-669: Incorrect Resource Transfer Between Spheres |
| Périmètre concerné | Tous les noyaux Linux construits entre 2017 et avril 2026 |
| CISA KEV | Inscrit, date limite de correctif 2026-05-15 |
| Date de divulgation | 2026-04-29 |
En 2017, une optimisation de chiffrement en place (in-place optimization) a été introduite dans le module cryptographique algif_aead du noyau. Cette optimisation a conduit à ce que des pages du cache de pages (page cache) soient incorrectement placées dans un scatterlist de destination inscriptible. En combinant un socket AF_ALG avec l'appel système splice(), un attaquant peut écrire des données dans le cache de pages de fichiers arbitraires, y compris des fichiers en lecture seule appartenant à root.
Chaîne d'attaque : socket AF_ALG → splice() → primitive d'écriture dans le cache de pages → altération du cache de pages d'un binaire setuid → exécution de ce fichier pour obtenir les privilèges root
Caractéristiques de l'attaque :
| Distribution | Version de noyau affecté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 |
Les distributions Debian, Arch, Fedora, Rocky, Alma, Oracle, etc., sont également affectées pour les mêmes plages de versions de noyau.
Toutes les versions de noyau inférieures aux versions corrigées suivantes sont concernées :
uname -r
Comparez la sortie avec les versions corrigées du tableau ci-dessus ; si la version est inférieure à la version corrigée, le système est affecté.
# Vérifier s'il existe des connexions AF_ALG actives
lsof | grep AF_ALG
# Vérifier l'état des sockets AF_ALG
ss -xa | grep alg
lsmod | grep algif_aead
Si une sortie est produite, le module est chargé et le système présente un risque d'exploitation.
# Cloner le dépôt du PoC
git clone https://github.com/cx330zer0/CVE-2026-31431-Copy-Fail-add-arm64.git
cd CVE-2026-31431-Copy-Fail-add-arm64
# Exécuter le PoC (nécessite un utilisateur non privilégié)
python3 copy-fail-dual-arch.py
Si le PoC obtient un shell root avec succès, le système est vulnérable à cette faille.
| Branche stable | Version corrigée minimale |
|---|
| 5.10.x | ≥ 5.10.254 |
| 5.15.x | ≥ 5.15.204 |
| 6.1.x | ≥ 6.1.170 |
| 6.6.x | ≥ 6.6.137 |
| 6.12.x | ≥ 6.12.85 |
| 6.18.x | ≥ 6.18.22 |
| 6.19.x | ≥ 6.19.12 |
| 7.0.x | ≥ 7.0-rc7 |