Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
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é.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
copyfail-deconstructed — Version simplifiée de CVE-2026-31431 | Kitploit
Outils/GitHubGitHub/bootsareme/copyfail-deconstructed
Escalade de PrivilègesExploitationShellcodeApprentissage et ÉducationDéveloppement de Charges UtilesExploitation de Binaires
GitHubbootsareme/copyfail-deconstructed

copyfail-deconstructed

Version simplifiée de CVE-2026-31431

Voir le dépôt
31il y a 3 moisPas encore vérifié

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

copyfail-deconstructed

Version facile à comprendre de CVE-2026-31431, une technique d'escalade de privilèges qui permet à n'importe qui de devenir root. La preuve de concept originale se trouve ici : https://github.com/theori-io/copy-fail-CVE-2026-31431, mais elle est fortement compressée et minifiée pour avoir la plus petite empreinte possible. Ce dépôt tente de décomposer ce code de manière plus lisible, en expliquant ce que fait le code, comment la charge utile est chargée et comment cibler différentes architectures. Voir l'analyse plus technique ici : https://xint.io/blog/copy-fail-linux-distributions.

Utilisation

Par défaut, l'exécution de python3 copyfail.py lance un shellcode x64 exploitant /usr/bin/su. Vous pouvez fournir votre propre charge utile en exécutant python3 copyfail.py [chemin/vers/chargeutile.elf]. Par exemple, il y a un assemblage shellcode ARM64 dans payloads/. Donc, pour tester sur des appareils ARM64, vous devez d'abord construire une charge utile minimisée avec notre script de lien personnalisé :

root@kitploit:~
as -o shellcode_aarch64.o payloads/shellcode_aarch64.S
ld -nostdlib -static -o shellcode_aarch64.elf shellcode_aarch64.o
strip -s shellcode_aarch64.elf

Ensuite, vous pouvez exécuter l'exploit principal avec python3 copyfail.py shellcode_aarch64.elf.

Pour l'exécution en C :

  1. construire (voir ci-dessous)
  2. ./c_copyfail qui exécute le même shellcode par défaut que ci-dessus.
  • Vous pouvez à nouveau fournir votre propre charge utile en exécutant ./c_copyfail [chemin/vers/chargeutile.elf].

Pour construire la version C :

root@kitploit:~
cd c_port
make

Plus précisément, cela compile le fichier .S cible en un binaire brut qui est sorti sous forme de tableau de caractères unsigned C :

root@kitploit:~
gcc -c payloads/[shellcode].S
objcopy -O binary [shellcode].o [payload].raw
xxd -i [payload].raw > payload.txt

ou, pour x86 32 bits,

root@kitploit:~
gcc -c -m32 payloads/[shellcode].S
objcopy -O binary [shellcode].o [payload].raw
xxd -i [payload].raw > payload.txt

Vous pouvez ensuite copier le contenu de ce fichier dans votre code source, ou simplement exécuter directement ./c_copyfail.exe [chemin/vers/chargeutile.elf] où chargeutile.elf est généré par as + ld et NON gcc + objcopy.

Correctifs

Pour éviter l'exploitation, exécutez :

root@kitploit:~
echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif-aead.conf
rmmod algif_aead 2>/dev/null

Si déjà exploité, vous pouvez redémarrer la machine ou exécuter : echo 3 | sudo tee /proc/sys/vm/drop_caches

Explication

  1. Le noyau permet à l'utilisateur de parler à l'API crypto via le type de socket AF_ALG
  • En 2017, une "optimisation sur place" a été ajoutée à la partie algif_aead de l'API crypto
  • Lorsque des données sont envoyées via la socket en utilisant l'appel système splice(), le noyau place les pages réelles du cache de pages du fichier que vous avez splicé dans la zone de travail crypto
  • L'algo crypto authencsn traite son tampon de sortie comme un espace de travail et écrit 4 octets au-delà de là où il est censé écrire
  1. Ce qu'une partie hypothétique peut faire
  • Choisir n'importe quel fichier lisible (par exemple, /usr/bin/su dans ce cas)
  • Choisir un décalage dans ce fichier où l'écriture de 4 octets se produira
  • Choisir une valeur de 4 octets à écrire (partie des données associées dans l'opération AEAD)
  • Écrire du code shell pour écraser le fichier en mémoire
  1. Écrasement du cache de pages pour devenir root
  • Le noyau ne marque jamais la page corrompue comme sale, le fichier semble inchangé
  • Lors de l'exécution de /usr/bin/su, le noyau le lit depuis le cache de pages et obtient les octets modifiés
  • En répétant l'écriture de 4 octets (environ 40 fois), ils peuvent écraser la vérification UID à l'intérieur de /usr/bin/su pour que UID soit 0 (root)
  • Shell root obtenu pour tout utilisateur
  1. Remédiation
  • Vider le cache de pages pour supprimer les fichiers modifiés en mémoire, de sorte qu'il lira depuis le disque la prochaine fois
  • Décharger le module noyau
  • Mettre sur liste noire pour éviter le chargement
  • S'il s'agit d'un module intégré, vous devez bloquer l'appel système à l'aide de seccomp ou eBPF. Ou le supprimer de l'initialisation et redémarrer la machine.

Le binaire su est corrompu en mémoire, donc la modification du fichier ne sera pas détectée. Pour restaurer depuis le disque, vous pouvez vider le cache de pages.

Télécharger l’outil